The New York Times R&D Labがstreamtoolsを発表した。これはデータのストリームを処理するグラフィカルなツールで一般的な用途で使える。
NY Times Labでこのプロジェクトのリードを務めるMike Dewar氏はこのツールの開発動機を次のように説明する。
この20年間、私たちは表形式のデータを処理するツールに多大な投資をしてきました。Excel、MySQL、MATLAB、Hadoop、R、Python+Numpyなどです。これらのツールは終わりのないデータのストリームを上手く扱えず、私たちの創造性を殺いでしまいます。それでこのstreamtoolsを開発したのです。
- ブロックは受け取ったメッセージに基づき、何らかの処理を行う。メッセージがブロックのタイプを定義する。
- 各ブロックは0以上のルールを持つ。このルールがブロックの挙動を決める。
- 各ブロックは名前付きルートを持つ。ルートはデータを受け取り、データを出力する。または、問い合わせに対して応答する。
- ブロックはルートを経由してコネクションによって繋がる。
- 繋がったブロックの集まりをパターンと呼ぶ。パターンは実行中のstreamtoolsのインスタンスからエクスポート、インポートできる。フォーマットはJSON形式のドキュメント。
Goに決めたのは私たちがユーザに提示しようとした語彙をほぼそのまま使ってプログラミングができたからです。各ブロックはgoroutineになり、すべてのコネクションはチャンネルのペアになります。これはとても直接的な抽象化で、ユーザがシステムそのものを理解しやすくなると思います。また、新しいブロックを書くのも簡単です。コミュニティが便利だと思うブロックを簡単に作ってくれることを望んでいます。また、Goは安全で効率的にプログラミングできます。日々の仕事に使いやすいのです。