views4GCPのストレージサービスについてまとめてみた。Exp:49212雑食エンジニア/にわかSF者TweetShareHatena注意この記事は2015年5月19日に更新されたもので、内容が古い可能性がありますのでご注意ください。LibraryのロードFirebaseへのリファレンスオブジェクトの生成データの登録イベントを検知した時の処理まとめFirebaseとはFirebaseは2014年10月にGoogleに買収されたバックエンドサービスです。Firebaseの最大の特長はリアルタイムなデータ同期です。Firebaseを使うことで、例えば、デバイス間のデータ同期に必要な複雑なサーバコードの開発をほとんど省略することができます。本記事では、非常に簡単なチャットアプリを例に、その機能の一部をご紹介します。PLAN”で、アカウントを作成しましょう。無料プランでは、100MBのデータストレージと毎月5GBまでのデータ転送が利用可能です。最大同時接続数は50までに制限されています。静的ファイルをホスティングし、CDNを通して配信するサービスも提供されており、こちらは、1GBのストレージと毎月100GBのデータ転送が無料で使えます。アカウントを作成して、ログインすると、Firebaseアプリケーションやその中のデータや設定を管理するコンソールを利用することができます。コンソールから新しいアプリケーションを作成してみましょう。APP」ボタンを押してください。URLはグローバルユニークにならないとエラーメッセージが表示されます。以下のような内容でexample.htmlを作成して、WEBブラウザで開いてみましょう。”自分のアプリケーション”と書かれている箇所のは、上記で作成したアプリケーションのIDに置き換えてください。</script></body></html>インプットフォームが2つだけのシンプルなページが表示されます。Nameに”タロウ”、Messageに”こんにちは”と入力してEnterキーを押すと、HTMLが変更されます。以下は、Chromeのデベロッパーツールでページのソースを表示したものです。ここで、Firebaseのコンソールでデータの中身を確認してみましょう。App」ボタンを押すと、以下のような画面に遷移します。表示される文字数が短いので後ろが切れていますが、ページから入力したデータが登録されていることがわかります。データには”-JnyVwRk6eYUTEU2e4aU”というIDが自動で付与されています。これだけでは、Firebaseの最大の特長である、リアルタイムのデータ同期の凄さが、わからないので以下のようなデモ動画を作成しました。https://storage.googleapis.com/apps-gcp-tokyo-02.appspot.com/2015/05/firebase_demo.mp4このデモでは、ローカルのWEBサーバ上に上述のHTMLファイルを置いて、ブラウザのウインドウを2つ開いて、それぞれで、そのページにアクセスしています。片方のウインドウでメッセージを入力すると、すぐにもう片方のウインドウにも反映されることがわかるかと思います。Libraryをロードします。Firebase('https://自分のアプリケーション.firebaseio.com/');アプリケーションのURLを指定して、Firebaseへのリファレンスを作成します。上述の例ではルートを指定していますが、この引数を例えば’https://自分のアプリケーション.firebaseio.com/message_list’に変更したHTMLを作成して、同じようにNameとMessageを入力すると、ルートの子要素にmessage_listが作成され、その下にデータが登録されます。text});push()メソッドの引数にオブジェクトを渡すことで、Firebaseにデータを登録します。データはスキーマレスで、好きな構造のオブジェクトを登録することができます。データの階層の深さが32までという制限があります。message.text);});on()メソッドにイベントタイプとコールバック関数を渡して、イベントを検知した時の処理を記述しています。Firebase()で指定した場所の既存の子要素に対して、それぞれ一度ずつ、そして、子要素が追加された時にコールバック関数が呼ばれます。コールバック関数にはDataSnapshotオブジェクトが渡されます。val()メソッドで、その内容をJavascriptオブジェクトとして取得することができます。Twitterなどのサードパーティサービスと連携した認証機能やデータの読み書きの権限を柔軟に設定する機能を持っています。これらの機能を利用すれば、実用的なアプリケーションが開発できると思います。