Cloud Firestore をアプリから使用する

Cloud Firestore を使ってみる

Cloud Firestore データベースへのデータの追加や検索を、プログラムから実行する方法について説明します。


Firestore のデータ構造は、コレクション/ドキュメント/データから構成されています。

コレクションの中に、複数のドキュメントが格納でき、各ドキュメントの中にデータを格納します。

これらは階層構造になっています。

 コレクション    例. Users
  ┗ ドキュメント  例. ユーザ1
    ┗ データ

  ┗ ドキュメント  例. ユーザ2

    ┗ データ


実装

Android での実装方法について説明します。

アプリレベルの build.gradle に依存関係を追加します。

implementation 'com.google.firebase:firebase-firestore:21.1.1'


FirebaseFirestore インスタンスの取得

最初に、今後の処理で必要となる FirebaseFirestore インスタンスを取得しておきます。


セキュリティルール

Firestore をアプリからアクセスするにあたって、セキュリティルールを設定する必要があります。

セキュリティルールは、Firestore の各ドキュメントへのアクセス可否を設定します。


Firebase コンソールを開き、画面左のメニューから「Database」を選択して下さい。

(始めて使う場合は、データベースの作成を行って下さい。)

「Cloud Firestore」を選択し、「ルール」タブを選択します。

例えば、セキュリティルールを上記のように設定した場合、全てのドキュメントが読み書き可能になります。

これはセキュリティ的に最も弱い状態ですので、本番時は適切に設定する必要があります。


データの追加

とりあえず上記のセキュリティルールのままで、データを追加してみます。

Firestore インスタンスから、CollectionReference を取得します。

追加したいデータを連想配列として作成し、add メソッドに渡しています。

上記の処理において、コレクション名として "collection1" を指定しています。

コレクションが存在しない場合は、データが作られる際に、指定した名前のコレクションが作られます。

また、ドキュメントもランダムな名前のものが自動的に作られます。


データの検索

コレクションからデータを検索する場合、例えば以下のようにします。

whereGreaterThan メソッドで、クエリを作っています。

指定した値より大きいデータを取得します。

他に、whereEqualTo メソッドなどもあります。


Firebase Authentication で認証したユーザのデータを記録する

以前、Authentication によるユーザの作成と認証について書きましたが、ユーザを作成した後に、Firestore にユーザ情報を記録するには以下のようにします。

ユーザのUIDをドキュメントのIDに指定して、DocumentReference を取得しています。

この参照に対して set メソッドを呼び出すことによって、データを追加します。

もし同じIDのドキュメントがすでに存在する場合、その中のデータは削除されて、新しいデータが追加されます。

データを更新したい場合は、set(user, SetOptions.merge()) のようにするか、もしくは update メソッドを使います。


セキュリティルール

ユーザ情報を Firestore に記録しましたが、自分のユーザ情報は自分のみが読み書き可能になるようにセキュリティルールを設定することで、セキュリティを強化することができます。

例えば、上記のようにすることで、Firebase Authentication にログインしている場合にだけ、自分のデータを読み書きできます。


※掲載内容は、記事公開時点のものです。紹介されているサービス内容は変更される場合がありますので、ご利用の際は事前にサービス提供元等をご確認ください。

shiba

スマホアプリエンジニアです。
Firebaseについて勉強した事を書いていこうと思います。

Firebaseなら銀座ITラボ

銀座ITラボは、Firebase、iOS/Androidアプリ、AI、クラウドサービス等の技術情報に関する記事を紹介するシンプルメーカーのオウンドメディアです。

0コメント

  • 1000 / 1000