Strange LoopでのJavaScriptストリームの紹介

今年のStrange Loop conferenceでPam Selle氏は、JavaScriptのストリームを「私たちが必要としているデータ構造」だとして紹介した。

ストリームは通常のシーケンシャルなデータ操作とは異なるものだ。ストリームは「リスト構造に必要とされるコストと苛立ちなしに、リスト操作を行うことができる」とSelle氏は言う。

Nodeのストリームに馴染みのある人もいるだろうが、Selle氏はUNIXコマンド間のパイプからES6ジェネレータを使った最新のJavaScriptまで、その歴史を説明した。ジェネレータはES6仕様に含まれているもので、知っておくべき重要なことは、それらが「再利用できて中断できる関数」であり、function*yieldを目にしたらジェネレータを使っているということだと説明した。例えば次のようなものだ。

function* sayHello() {
    yield "hello";
}

Selle氏は気に入って使っている3つのライブラリ、BaconJSHighlandJSRxJSについて紹介した。なかでも、RxJSは人気のあるJavaScriptフレームワークで推奨されており、2016年にブレイクしそうなライブラリだ。Angular 2ではObservableが第1級エンティティとなっており、新しいAngular 2 HttpモジュールはRxJS Observableを使っている。最近のAngular 2調査結果によると、回答者の38.7%がRxJSを使う予定があり、BaconJSを選んだのは6.6%にすぎない。加えて、ES7にはRxJSスタイルのObservableに基づいたObservable typeが提案されている。

ストリームに関して、Selle氏が最もワクワクしているのは、みんながどんな用途を思いつくかだ。

私の夢は、みんなが大規模データのビジュアライゼーションみたいなことができることです。そして、それは始まりであり、私にとって最も明白なことにすぎません。つまり、みんな「本当に」クールなことをやろうとしているということです。

gulpビルドシステムを使っているフロントエンド開発者は、すでにストリームに馴染みがあるだろう。gulpでは、pipe()関数を使ってコマンドを組み合わせて、ビルドステップを実行する。

Selle氏のトークビデオはYouTubeで閲覧できる。スライドはhttp://pselle.github.io/omgstreams/にある。来年のStrange Loop conferenceは2016年9月15-17日にセントルイスで開催される予定だ。