Cloud Firestoreでリアルタイムチャットを開発する




どうも高妻です。Twitterでプログラミングのことや暗号通貨のことをつぶやいているのでよかったらフォローしてください。  

Cloud Firestoreとは

Cloud FirestoreはGoogle の柔軟でスケーラブルな NoSQL クラウド データベースを使用して、クライアント側開発とサーバー側開発のデータを保存、同期します。Firebase Realtime Database と同様に、リアルタイム リスナーを介してクライアント アプリ間でデータを同期し、モバイルとウェブのオフライン サポートを提供します。

ざっくり色々読んだ感じだとFirebase Realtime Databaseにある機能は持っていて、コレクションが使えたり、レイテンシが改善されたりと上位互換としてリリースされたのかなと思いましたね。

主な機能

Realtime Databaseとはデータモデルが大きく違いますね!コレクションが使えるようになり柔軟なデータ構造に対応できるみたいですね。

チャット開発

それではCloud Firestoreを使ってチャットを開発していきます。まずはGCPのコンソール上でプロジェクトを作成します。

Cloud Firestoreの作成

Firebaseのコンソールにアクセスしてプロジェクトを作成します。

https://console.firebase.google.com/

サイドメニューからDatabaseを選択し、Cloud Firestore Betaのデータベースを作成します。2018年5月時点ではまだBeta版となっています。

モードは簡単に読み書きできるようにテストモードで実行します。

クライアントの実装

WEBブラウザからアクセスするためのプログラムを書きます。メッセージの読み込みと書き込みだけなので下記のようになります。

最初に読み込んでいるfirebase.jsは必須のスクリプトになります。次に読み込んでいるfirebase-firestore.jsがCloud Firestore用のスクリプトになります。initializeAppに設定する値はプロジェクトのトップから取得できます。

初期化部分はRealtime DatabaseでもFirestoreでも同じですね。

コレクションへの参照を変数に保持します。

メッセージのリアルタイム取得は下記でできます。

データの登録はadd()関数を使うとFirestore保存できます。

dockerでnginxを起動

Firebaseはlocalhostか指定したドメインからしかアクセスできないのでnginxを使ってサーバを立てます。下記docker-compose.ymlを同じディレクトリに準備します。

下記コマンドでdockerを起動できたらhttp://localhost:8080にアクセスします。

複数タブを開いてリアルタイムにメッセージのやりとりが確認できたら完成です。

データはFirestoreのコンソールからも確認できます。

The following two tabs change content below.

高妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 現在はTwitterなどSNSのテキスト解析を行うソーシャルメディア分析のサーバーサイドを開発中。言語はNode.js、Kotlinを使用。






よく読まれている関連記事はこちら



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です