BT

Ready for InfoQ 3.0? Try the new design and let us know what you think!

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

| 作者: Abel Avram フォローする 12 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2015年9月7日. 推定読書時間: 2 分 |

原文(投稿日:2015/08/19)へのリンク

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フレームワークとの統合に協力を求めている。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT