F#のデータサイエンス用ライブラリであるFsLabは2015年の始めにオープンソースで公開された。InfoQは開発者であるTomas Petricek氏に詳しい話を聞いた。
InfoQ: FsLabとは何でしょうか。FsLabに含まれるライブラリを個別に使うのと比べどのような価値がありますか。
Tomas Petricek:FsLabはデータサイエンスのための.NETプラットフォーム向けのパッケージです。簡単に使い始められるように作られており、Paketを使って、NuGetからFsLabを入手することもできますし、NuGetパッケージマネージャを使うこともできます。普通にテンプレートをダウンロードして生のデータから面白いデータを抽出するのもいいでしょう。
FsLabが主に提供するのはデータ分析のすべてのプロセスに対して高品質なライブラリを提供するということです。きちんとしたCSVパーサや型プロバイダ、クロスプラットフォームのチャートライブラリが見つかるかどうか心配する必要はありません。このパッケージにすべて入っているからです。FsLabはこれらの機能に対して優れた統合を提供しています。データフレームや時系列をRの型プロバイダに渡して、統計の計算をすることもできます。
F#からこれらのFsLabの機能を使うため、F# Interactiveからすべてのライブラリを使うためのロード用のスクリプトを提供します。10を超える別々の参照を追加するよりも、 #load "packages/FsLab/FsLab.fsx"と書けばいいのです。
InfoQ: FsLabのアイディアはどこから生まれたのでしょうか。
TP:Channel 9でUnderstanding the World with F#という話をしたときに違いありません。ここでは、今はFsLabに同梱されているライブラリを使ってデータサイエンスについて話をしました。まず、もっと学びたい人のためのリンクが必要だと思いました。そして、www.fslab.orgドメインがまだ使えるということがわかったのです。そして、もし、ライブコーディングでデモをしようとすると、必要なすべてのライブラリを素早く参照追加できるようにする必要があります。トーク駆動開発と呼べるかもしれませんが、ライブコーディング中にすべての準備をできなければ、単に複雑なだけです。
InfoQ: FsLabとMBraceの統合について教えてください。
TP: このふたつはすでに一緒に使われています。このふたつを取り上げたミニカンファレンスをMicrosoftのキャンパスで開催しました。
MBraceを使うとローカルの小さなデータスクリプトをクラウド上の複数のマシンに簡単にスケールできます。MBraceのスクリプトからFsLabのライブラリをすべて参照することができます。型プロバイダを使ってデータをパースし時系列の計算をしたいなら、クラウドでMBraceを使って既存のコードを使えばいいのです。
将来的に実現したいことはいくつかあります。まず、より多くのデータ分析ライブラリがクラウドベースでそのまま使えるようになります。私たちが動いているプロトタイプのプロジェクトとして、“BigDeedle”があります。ローカルでもクラウドでも大規模な時系列データを活用できます。さらに詳しく知りたいならこのデモをご覧ください。また、FsLabにHypeという深層学習のライブラリを追加したいと思っています。
InfoQ: FsLabのいくつかのライブラリはF#の型プロバイダに依存しています。型プロバイダによって何を得たのでしょうか。
TP: 型プロバイダは外部リソースをプロブラミング言語F#に統合します。これは何を意味するでしょうか。
例えば、C#でJSONベースのRESTサービスを呼ぶとき、そのRESTサービスが返すデータに対応する型が必要になります。JavaScriptやPythonのような動的な言語の場合、このようなことをする必要はありませんが、ツールは支援してくれませんし、可能なメンバをサジェストすることもできません。
型プロバイダを使うとこのふたつの世界のいいとこどりができます。JSONの型プロバイダは返却の構造を推論し、コンパイラとエディタの双方が理解できるF#の型として自動的に公開します。対象のサービスでJSONの型プロバイダを指し示しておけば、“.”を使って戻りのデータの中を見ることができます。
この威力を示す良い事例がEvelina Gabasovaのジェームスボンド映画の分析のブログ記事です。型プロバイダを使って、125行のRのコードはF#ではたったの45行になりました。
InfoQ: FsLabで作ったチャートをアプリケーションに直接埋め込むことはできますか。例えば、FsLabをバックエンドとして使い、チャートを動的に作ってhttpのコンテンツとしてユーザに配信することはできますか。
TP: もちろんです。XPlotを使えば、Plot.lyやGoogle Chartsライブラリを使ってHTML5のチャートを作成できます。XPlotのチャーティングライブラリはHTMLを解析して簡単にウェブアプリケーションにチャートを埋め込むことができます。実際、私はXPlotを使って世界のさまざまな面白い事実を視覚化しています。
ディスクトップアプリケーションを構築するなら、F# Chartingを使うことができます。これは、簡単にWindowsアプリケーションに埋め込めますが、私たちはXPlotの方を強化しています。クロスプラットフォームで素敵なHTML5チャートを作れるのです。
InfoQ: あなたはAnalyzing and Visualizing Data with F#という最近オンラインに発表された本の著者でもあります。FsLabとはどのような関係がありますか。
TP: F#や機械学習、データサイエンスについてたくさんのことが書いてありますが、そのすべてでFsLabをつかっています。例えば、F#のデータ型プロバイダは新しいF#の本であればどんな本であれ取り上げます。この本では、データサイエンスという文脈の中でこれらの技術をどのように組み合わせるかについて書きました。従って、型プロバイダでデータにアクセスする方法から、データをインタラクティブに探索する方法、そして視覚化する方法まで、たった50ページの短い本の中で取り上げています。
FsLabは複数の方法で入手できる。すぐに使えるテンプレートも用意されており、PacketやNuget経由で参照もできる。FsLabはオープンソースプロジェクトであり、ソースはGitHubで見つかる。