Netflix FlacorでJSONデータを取得する

NetflixがFalcorというJavaScriptライブラリをオープンソース化した。これは複数のリソースからJSONデータを取得するためのモデルと非同期メカニズムを提供する。

NetflixはWebアプリケーションのUIにJSONデータを投入するのにFalcorを使っている。メモリキャッシュや複数のデータベースからやってくるバックエンドデータはすべて、単一のバーチャルJSONオブジェクトにモデル化される。「バーチャル」と呼んでいるのは、実際にはデータはローカルもしくはリモートのデータベースに存在しているのに、クライアントから見ると、メモリ上にあるように見えるためだ。

データは、getsetcallの非同期操作を備えたDataSourceインターフェイスを使って、JSONグラフを通して利用できる。クライアントは、JSONデータを直接アクセスするときとよく似たJavaScriptパスを使って、グラフをトラバースすることができる。デモのため、次の小さなJSONオブジェクトについて考えよう。

{
  "greeting": "Hello World"
}

このオブジェクトがファイルmodel.jsonに格納されているとき、そのアクセスは次のようになる。

<script src="https://netflix.github.io/falcor/build/falcor.browser.js"></script>
<script>
  var model = new falcor.Model({source: new falcor.HttpDataSource('/model.json') });

  // バーチャルJSONリソースのルートから "greeting" キーを取得する。
    get("greeting").
    then(function(response) {
      document.write(response.json.greeting);
    });
</script>

FalcorにはRouterが含まれており、実際のデータストアを隠蔽し、データ取得を担当する適切なバックエンドサービスに呼び出しを振り向ける。また、データベースに対する連続の呼び出しを避けるため、データ取得時には、データをキャッシュする。Falcorは複数のリクエストを単一のネットワークリクエストにまとめることができ、すでに発行中のものがあれば、重複したデータベースリクエストを発行しないようになっている。

NetflixはFalcorをGitHubに公開しており、コミュニティにバグの発見と修正、そして各種MVCフレームワークとの統合に協力を求めている。