2012年4月24日

Backbone.js を使ってみる

Backbone.js を使って、Solr のフロントエンドを実装してみました。 Solr は dotcloud に配置しています。

ドキュメントは自分が書いたものをいくつか登録しています。

DotCloud の Solr

DotCloud では Solr 3.4 を利用可能で、インスタンスを作成すると BASIC 認証のパスワードが設定されています。 そこで、次の2点を実現したくなります。

  • ドキュメントを登録するための BASIC 認証に対応したクライアント
  • 検索するときの認証をパスするプロキシ

登録は XML を生成できれば何でも良いのですが、 今回は Python で実装し、ライブラリには solrpy を使いました。 似た名前のライブラリとして pysolr がありますが、 こちらは BASIC 認証に対応していないので使いません。 その他にも Python ライブラリ (Sunburnt) はありますが、 コアやクラスタを管理するのでなければ簡単なラッパーで十分でしょう。

検索プロキシには Nginx を使い、裏側では Authorization ヘッダーを付与します。 ついでにレスポンスヘッダーにも色々と付与してあげると、 ローカルマシンで開発するときにも何かと便利です。

Backbone.js を使う

ここまででバックエンドの準備は整いますので、 Backbone.js を使ってフロントエンドの準備を進めます。 まずはチュートリアルを読み進めます。

このチュートリアルを読むと、Model、Colllection、View に関して分かると思います。 JavaScript の文法が分かっていれば30分〜1時間で読み終わる内容でしょうか。

次に Backbone Tutorials で Router 機能を学習します。 Router 機能は URL のハッシュフラグメントに対して処理を関連付ける機構で、 これを使ってページ遷移のような機能を実現させます。

そして具体的な実装は... と思ったんですが、 チュートリアルにちょっとコードを加えるだけで簡単な検索フロントエンドを実装できました。 もちろんファセット検索や検索結果の絞り込みを実現するためには作り込みが必要になりますが、 Backbone.js を使うとオブジェクトとイベントの関連付けが簡単になることが分かったので良しとします。

さらなる Backbone.js の説明は下記のリンクが詳しいと思います。 (英語)

stackoverflow で "backbone.js" のタグ を検索すると、2500件以上の質問が登録されています。 比較対象として微妙ですが "nginx" のタグ は2200件超ですから、 それなりに知名度は上がっているのかな、と思います。 (フロントエンド開発者の方がバックエンド開発者より多いだろうから、 JavaScript 関連の方が質問数は多くなる傾向にある)

終わりに

JavaScript のフレームワークとしては JavaScriptMVC もあります。 このフレームワークは去年の夏に触ってみましたが、Backbone.js の方がライトな印象です。 JavaScriptMVC はテストやドキュメンテーション、パッケージングもサポートしてくれるのに対して、 Backbone.js は MVC とルーティングしか提供しません。 どちらも一長一短ではありますが、JavaScriptMVC は全てをその流儀に揃える必要があるのに比べて、 Backbone.js は好きな部分だけを利用できます。 プロジェクトの用途に合わせて採用するのが良さそうです。

最近、 CanJS というライブラリがリリースされました。 これは JavaScriptMVC の一部分ではありますが、これだけでも使えるはずです。 機能セットに目を通してみると、Backbone.js に近い印象です。 この辺になると、書き方なども含め、アーキテクチャを決める人の好みになりそうですね。

なお、JavaScriptMVC を開発していた Jupiter Information Technology Solution という会社は Bitovi という会社になりました。 リンク変更もありますので、ドキュメントやブログ記事などを読む場合には注意が必要かもしれません。

関連記事

コメントを投稿