LoginSignup
1
1

More than 3 years have passed since last update.

【Firebase 入門】Authentication、Realtime Database、 Cloud Storage とは

Last updated at Posted at 2020-09-16

タイトルの 各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 リクエストを特定のユーザーに限定する承認ルールや、アップロード サイズを制限する承認ルールを作成できます。加えて、ファイル名とパスの検証、contentTypesize などのファイル メタデータのプロパティの検証といったデータ検証にも使用できます。

注: 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

image7.png

Firebase Realtime Database ルールの設定

認証ユーザー に読み取りと書き込み権限を付与する

コンソールのエディターからルールを編集し、公開 をクリックします。

Authentication APIs の設定

Google アカウントで認証できるように設定する

Sign-in method からログイン プロバイダとして Google を有効化し、保存をクリックします。

image2.png

Dependency の追加とソースコードの編集

クローンしたプロジェクトをAndroid Studio で開き、Enable AuthenticationAdd Firebase Auth dependency 以降を参考に、

  • app/build.gradle への dependency の追加
  • 未承認ユーザーのサインイン画面への誘導
  • サインイン画面での Sign-In with Google の実装

を行います。

適宜コンパイルエラーとなるので import class をすること。
image6.png

Android emulator を起動します。Sign-In with Google の画面が確認できました。

Realtime Database にデータを追加

Read MessagesImport Messages を参考にチャットで予め表示するメッセージを追加します。

Dependency の追加とソースコードの編集

Read MessagesImport Messages 以降を参考に、

  • app/build.gradle への dependency の追加
  • メッセージの同期の実装
  1. Firebaseリアルタイムデータベースを初期化し、データへの変更を処理するためのリスナーを追加
  2. RecyclerView アダプタを更新して、新しいメッセージを表示
  3. データベースのインスタンス変数を MainActivity クラスの他の Firebase インスタンス変数に追加

を行います。

Google アカウントで Sign-In に成功すると、先ほど Realtime Database に追加したメッセージが表示されました。

テキストメッセージ送信を実装

Send MessagesImplement text message sending を参考にテキストメッセージ送信機能を実装します。ここで生成されるメッセージIDはリストの最後に追加されるようにシークエンシャルです。

画像メッセージ送信を実装

Send MessagesImplement image message sending を参考にテキストメッセージ送信機能を実装します。

  • 画像を選択
  • ハンドル画像選択
  • RTDB(リアルタイムデータベース)に一時的な画像メッセージを書き込む
  • 選択した画像のアップロードを開始
  • アップロードが完了したら、画像メッセージのURLをアップロードされた画像のものに更新

“ + “ ボタンをクリックすることで、テキスト / 画像を送信できるようになりました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1