タイトルの 各Firebaseプロダクトの概要とチュートリアルを通しての実際の実装利用方法
Firebase Authentication とは
Firebase Authentication では、パスワード、電話番号、一般的なフェデレーション ID プロバイダ(Google、Facebook、Twitter)などを使用した認証を行うことができます。また、OAuth 2.0 や OpenID Connect などの業界標準を使用しているため、カスタム バックエンドと簡単に統合できます。
ユーザープロパティ
ユーザーが初めてアプリに登録するときに、利用可能な情報を使用してユーザーのプロフィール データ(一意の ID、メインのメールアドレス、名前、写真の URL から構成される基本プロパティ)が設定されます。
注: 認証されたユーザーは Firebase Realtime Database と Cloud Storage に対して、デフォルトでデータの読み取り、書き込みができます。
Firebase Realtime Database とは
Firebase Realtime Database は NoSQL クラウドホスト型データベースです。データはすべてのクライアントにわたってリアルタイムで同期され、アプリがオフラインになっても引き続き使用できます。
注: 新しくプロジェクトを開始する場合、ほとんどのケースで Cloud Firestore のご利用をおすすめします。
Firebase Realtime Database ルール
Firebase Realtime Database ルールでは、データベースへの読み取り / 書き込みアクセス権を持つユーザー、データが構造化される仕組み、存在するインデックスを決定します。
Cloud Storage for Firebase とは
Cloud Storage for Firebase は、Google 規模で構築された、強力かつシンプルでコスト効果の高いオブジェクト ストレージ サービスです。写真や動画など、ユーザーが作成したコンテンツを保管、提供する必要のあるアプリ デベロッパー向けに構築されています。
デベロッパーは Cloud Storage 用の Firebase SDK を使用して、クライアントから直接ファイルのアップロードとダウンロードを行います。ネットワーク接続がよくない場合、クライアントは動作が停止したところから再試行できるため、ユーザーは時間と帯域幅を節約できます。
Cloud Storage 用の Firebase Storage セキュリティ ルール
Cloud Storage 用の Firebase セキュリティ ルールは、Firebase Realtime Database ルール同様、わずか数行のコードで、Cloud Storage リクエストを特定のユーザーに限定する承認ルールや、アップロード サイズを制限する承認ルールを作成できます。加えて、ファイル名とパスの検証、contentType
や size
などのファイル メタデータのプロパティの検証といったデータ検証にも使用できます。
注: Cloud Storage はデフォルトの Google App Engine アプリと同じ Google Cloud Storage バケットを使用します。
Cloud Functions で拡張する
これまで紹介した Firebase Authentication、Firebase Realtime Database、Cloud Storage for Firebase は、それぞれ Cloud Functions を利用することで機能を拡張することができます。一般的なユースケースは以下です。
- アプリでアカウントを作成したばかりのユーザーに登録完了の通知メールを送信
- 画像ファイルが Cloud Storage にアップロードされたときにサムネイルを生成する
重要: Cloud Storage バケットのロケーションと関数のロケーションとの距離によっては、ネットワーク レイテンシが大幅に増加する可能性があります。パフォーマンスを最適化するために、関数のロケーションは適切な場所に指定してください。
Android アプリでFirebase Authentication、 Firebase Realtime Database、 Cloud Storage for Firebase を利用する
Codelabとこちらのサンプルコードを参考にして、Firebase Authentication、Firebase Realtime Database、Cloud Storage for Firebase を試してみましょう。
FirebaseプロジェクトとAndroidアプリの準備
サンプルコードを入手する
GitHubからソースコードをローカル環境にクローンします。
$ git clone https://github.com/firebase/codelab-friendlychat-android
Firebaseプロジェクトを作成する
次にサンプルアプリケーションをデプロイするために Firebase プロジェクトを作成します。
Android プロジェクトに Firebase を追加する
作成したFirebaseプロジェクトにクローンしたAndroidアプリを追加します。
デバッグ用の署名証明書 SHA-1 を追加する
Firebase Authentication を利用するために SHA-1 を追加します。SHA-1は以下のコマンドで発行。
$ keytool -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v -storepass android
Firebase Realtime Database ルールの設定
認証ユーザー に読み取りと書き込み権限を付与する
コンソールのエディターからルールを編集し、公開
をクリックします。

Authentication APIs の設定
Google アカウントで認証できるように設定する
Sign-in method からログイン プロバイダとして Google を有効化し、保存
をクリックします。
Dependency の追加とソースコードの編集
クローンしたプロジェクトをAndroid Studio で開き、Enable Authentication の Add Firebase Auth dependency 以降を参考に、
- app/build.gradle への dependency の追加
- 未承認ユーザーのサインイン画面への誘導
- サインイン画面での Sign-In with Google の実装
を行います。
適宜コンパイルエラーとなるので import class をすること。
Android emulator を起動します。Sign-In with Google の画面が確認できました。

Realtime Database にデータを追加
Read Messages の Import Messages を参考にチャットで予め表示するメッセージを追加します。

Dependency の追加とソースコードの編集
Read Messages の Import Messages 以降を参考に、
- app/build.gradle への dependency の追加
- メッセージの同期の実装
- Firebaseリアルタイムデータベースを初期化し、データへの変更を処理するためのリスナーを追加
- RecyclerView アダプタを更新して、新しいメッセージを表示
- データベースのインスタンス変数を MainActivity クラスの他の Firebase インスタンス変数に追加
を行います。
Google アカウントで Sign-In に成功すると、先ほど Realtime Database に追加したメッセージが表示されました。

テキストメッセージ送信を実装
Send Messages の Implement text message sending を参考にテキストメッセージ送信機能を実装します。ここで生成されるメッセージIDはリストの最後に追加されるようにシークエンシャルです。
画像メッセージ送信を実装
Send Messages の Implement image message sending を参考にテキストメッセージ送信機能を実装します。
- 画像を選択
- ハンドル画像選択
- RTDB(リアルタイムデータベース)に一時的な画像メッセージを書き込む
- 選択した画像のアップロードを開始
- アップロードが完了したら、画像メッセージのURLをアップロードされた画像のものに更新
“ + “ ボタンをクリックすることで、テキスト / 画像を送信できるようになりました。
