Webアプリにリアルタイムなバックエンドを提供するFirebaseを使ってみた。

スケーラブルでリアルタイムなバックエンドを実現するものらしい。つまり、PaaS的な何か。
具体的には、FirebaseがWebsocketとデータストアを提供してくれます。
(フロントエンドのHTMLとかの置き場を提供してくれるのかは、よく読めてない。。。)

とりあえず試したい人は、まず以下のURLを開いて、
「BUILD A SAMPLE APP IN 5 MINUTES」ボタンを押すところから
はじめるとわかりやすいです。
http://www.firebase.com/

サンプルを動かした感じ

サンプルで作ったアプリをブラウザを2つ開いてテストすると、
リアルタイムにデータが連携していることがわかります。
HTMLをそのままコピー&ペーストし、自分のサーバで公開しても動作してました。
(いつまで使えるかわかりませんが)

f:id:alumican:20120415220852p:plain

使い方とか動作

どうやってリアルタイムなバックエンドを実現しているのかというと、
 1.firebase.jsを組み込む。
 2.データストアの参照を取得
 3.データストアの変更に対して、コールバックを記述する。
 4.データストアを操作する。
という内容になっており、ブラウザのjavascriptだけでデータ駆動するようになっています。

1.Firebaseを組み込む

<script type='text/javascript' src='http://static.firebase.com/demo/firebase.js'></script>

サーバとWebsocket等で通信する部分は、ここに記述されている。

2.データストアの参照を取得

var myDataRef = new Firebase('http://demo.firebase.com/{ここに特定データストアの文字列}');

自分のアプリ用のデータストアを指定しています。

3.データストアの変更に対して、コールバックを記述する。

myDataRef.on('child_added', function(snapshot) {
  //処理を書く
});

child_addedは、データストアのリストにストアされたときに呼び出されるイベント。
そのほか、value・child_changed・child_removed・child_moved等の
イベントをコールバックとして記述できる。

4.データストアを操作する。

myDataRef.set('User ' + name + ' says ' + text);
myDataRef.push({name: name, text: text});

こんなかんじで操作する。

思ったこと

データストアが、第三者でも操作できるんじゃないか?って、素朴な疑問を感じます。
インターネットはオープンでいこうよ!だから、データもオープンだよな!的な原理主義だったら
面白いんだけど、どうすんだろ。

最近、白石さんが紹介していたMeteorなるオールJavascriptフレームワークが出てくる等、
フレームワーク界隈が乱立してる感じですね。
http://d.hatena.ne.jp/Syunpei/20120413/1334276712