このクイックスタートでは、Cloud Firestore Enterprise エディションを設定し、データを追加して、C#、Go、Java、Node.js、PHP、Python、Ruby のサーバー クライアント ライブラリを使用して、追加したデータを Firebase コンソールで表示する方法について説明します。
データベースへの完全アクセス権を備えた特権的サーバー環境を設定するには、これらのクライアント ライブラリを使用します。
Cloud Firestore データベースを作成する
まだ Firebase プロジェクトを作成していない場合は作成します。Firebase コンソールで、[プロジェクトを追加] をクリックし、画面上の指示に沿って、Firebase プロジェクトを作成するか、Google Cloud プロジェクトに Firebase サービスを追加します。
Firebase コンソールでプロジェクトを開きます。左側のパネルで [ビルド] を展開し、[Firestore データベース] を選択します。
[データベースを作成] をクリックします。
データベースのロケーションを選択します。
ロケーションを選択できない場合は、プロジェクトに「デフォルトの Google Cloud リソースのロケーション」がすでに設定されています。プロジェクトのリソースの一部(デフォルトの Cloud Firestore インスタンスなど)は、共通のロケーション依存関係を共有します。また、これらのロケーションは、プロジェクトの作成時またはこのロケーション依存関係を共有する別のサービスの設定時に設定できます。
Cloud Firestore Security Rules の開始モードを選択します。
- テストモード
モバイルおよびウェブ クライアント ライブラリを使用する場合に適していますが、すべてのユーザーがデータを読み書きできます。テストが終わったら、必ずデータのセキュリティ保護セクションを確認してください。
ウェブ、Apple プラットフォーム、Android SDK を使用する場合は、テストモードを選択します。
- 本番環境モード
モバイルおよびウェブ クライアントからのすべての読み書きを拒否します。認証されたアプリケーション サーバー(C#、Go、Java、Node.js、PHP、Python、Ruby)は引き続きデータベースにアクセスできます。
C#、Go、Java、Node.js、PHP、Python、または Ruby サーバー クライアント ライブラリを使用する場合は、本番環境モードを選択します。
デフォルトの Cloud Firestore データベースには、Cloud Firestore Security Rules の初期セットが適用されます。プロジェクトに複数のデータベースを作成する場合は、データベースごとに Cloud Firestore Security Rules をデプロイできます。
[作成] をクリックします。
Cloud Firestore を有効にすると、Cloud API Manager で API も有効になります。
開発環境を設定する
必要な依存関係とクライアント ライブラリをアプリに追加します。
Java
- アプリに Firebase Admin SDK を追加します。
-
Gradle を使用する:
implementation 'com.google.firebase:firebase-admin:9.7.1'
-
Maven を使用する:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>9.7.1</version> </dependency>
-
Gradle を使用する:
- 以下の手順に従い、ご使用の環境で適切な認証情報を使用して Cloud Firestore を初期化します。
Python
- Firebase Admin SDK を Python アプリに追加します。
pip install --upgrade firebase-admin
- 以下の手順に従い、ご使用の環境で適切な認証情報を使用して Cloud Firestore を初期化します。
Node.js
-
アプリに Firebase Admin SDK を追加します。
npm install firebase-admin --save
- 以下の手順に従い、ご使用の環境で適切な認証情報を使用して Cloud Firestore を初期化します。
Go
- Go アプリに Firebase Admin SDK を追加します。
go get firebase.google.com/go
- 以下の手順に従い、ご使用の環境で適切な認証情報を使用して Cloud Firestore を初期化します。
PHP
-
Cloud Firestore サーバーのクライアント ライブラリ(Java、Node.js、Python、Go、PHP、C#、Ruby)は、認証に Google アプリケーションのデフォルト認証情報を使用します。
-
開発環境から認証するには、JSON サービス アカウント キーファイルを指すように
GOOGLE_APPLICATION_CREDENTIALS環境変数を設定します。キーファイルは、API Console の認証情報ページで作成できます。export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json" - 本番環境では、Cloud Firestore で使用するプロジェクトと同じプロジェクトを使用して App Engine または Compute Engine でアプリケーションを実行する場合は、認証する必要はありません。それ以外の場合は、サービス アカウントの設定が必要です。
-
開発環境から認証するには、JSON サービス アカウント キーファイルを指すように
- PHP 用の gRPC 拡張機能をインストールして有効にします。この機能は、クライアント ライブラリを使用する場合に必要です。
- アプリに Cloud Firestore PHP ライブラリを追加します。
composer require google/cloud-firestore
Ruby
-
Cloud Firestore サーバーのクライアント ライブラリ(Java、Node.js、Python、Go、PHP、C#、Ruby)は、認証に Google アプリケーションのデフォルト認証情報を使用します。
-
開発環境から認証するには、JSON サービス アカウント キーファイルを指すように
GOOGLE_APPLICATION_CREDENTIALS環境変数を設定します。キーファイルは、API Console の認証情報ページで作成できます。export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- 本番環境では、Cloud Firestore で使用するプロジェクトと同じプロジェクトを使用して App Engine または Compute Engine でアプリケーションを実行する場合は、認証する必要はありません。それ以外の場合は、サービス アカウントの設定が必要です。
-
開発環境から認証するには、JSON サービス アカウント キーファイルを指すように
-
Gemfileでアプリに Cloud Firestore Ruby ライブラリを追加します。gem "google-cloud-firestore"
- 以下のようにして、
Gemfileから依存関係をインストールします。bundle install
(省略可)Firebase Local Emulator Suite でプロトタイピングとテストを行う
モバイルのデベロッパー向けに、アプリが Cloud Firestore に対して書き込みと読み取りを行う方法を説明する前に、Cloud Firestore の機能のプロトタイピングとテストに使用できる一式のツールである Firebase Local Emulator Suite について紹介します。異なるデータモデルの試行や、セキュリティ ルールの最適化、あるいはバックエンドとのやり取りで費用対効果の高い方法の検出を行う場合は、ライブサービスをデプロイせずにローカルで作業できるようにすると、大きなメリットが得られます。
Cloud Firestore エミュレータは Local Emulator Suite の一部であり、これを使用すると、アプリはエミュレートしたデータベースのコンテンツや構成とやり取りできるほか、エミュレートされたプロジェクトのリソース(関数、他のデータベース、セキュリティ ルール)とも任意でやり取りできます。
いくつかの手順を実施するだけで、Cloud Firestore エミュレータを使用できます。
- アプリのテスト構成にコード行を追加して、エミュレータに接続します。
- ローカル プロジェクトのディレクトリのルートから、
firebase emulators:startを実行します。 - 通常どおり、Cloud Firestore プラットフォーム SDK を使用してアプリのプロトタイプ コードから呼び出しを行います。
詳細な Cloud Firestore と Cloud Functions に関するチュートリアルをご覧ください。Local Emulator Suite の概要もご覧ください。
Cloud Firestore を初期化する
Cloud Firestore のインスタンスを初期化します。
Java
Cloud Firestore SDK を初期化する方法は環境に応じて異なります。最も一般的な方法を以下に示します。完全なリファレンスについては、Admin SDK の初期化をご覧ください。import com.google.auth.oauth2.GoogleCredentials; import com.google.cloud.firestore.Firestore; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; // Use the application default credentials GoogleCredentials credentials = GoogleCredentials.getApplicationDefault(); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(credentials) .setProjectId(projectId) .build(); FirebaseApp.initializeApp(options); Firestore db = FirestoreClient.getFirestore();
各自のサーバーで Firebase Admin SDK を使用するには、サービス アカウントを使用します。
Google Cloud コンソールで [IAM と管理] > [サービス アカウント] にアクセスします。新しい秘密鍵を生成し、JSON ファイルを保存します。次に、このファイルを使用して SDK を初期化します。
import com.google.auth.oauth2.GoogleCredentials; import com.google.cloud.firestore.Firestore; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; // Use a service account InputStream serviceAccount = new FileInputStream("path/to/serviceAccount.json"); GoogleCredentials credentials = GoogleCredentials.fromStream(serviceAccount); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(credentials) .build(); FirebaseApp.initializeApp(options); Firestore db = FirestoreClient.getFirestore();
Python
Cloud Firestore SDK を初期化する方法は環境に応じて異なります。最も一般的な方法を以下に示します。完全なリファレンスについては、Admin SDK の初期化をご覧ください。import firebase_admin from firebase_admin import firestore # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore.client()
既存のアプリケーションのデフォルト認証情報も SDK を初期化する際に使用できます。
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore # Use the application default credentials. cred = credentials.ApplicationDefault() firebase_admin.initialize_app(cred) db = firestore.client()
各自のサーバーで Firebase Admin SDK を使用するには、サービス アカウントを使用します。
Google Cloud コンソールで [IAM と管理] > [サービス アカウント] にアクセスします。新しい秘密鍵を生成し、JSON ファイルを保存します。次に、このファイルを使用して SDK を初期化します。
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore # Use a service account. cred = credentials.Certificate('path/to/serviceAccount.json') app = firebase_admin.initialize_app(cred) db = firestore.client()
Python
Cloud Firestore SDK を初期化する方法は環境に応じて異なります。最も一般的な方法を以下に示します。完全なリファレンスについては、Admin SDK の初期化をご覧ください。import firebase_admin from firebase_admin import firestore_async # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore_async.client()
既存のアプリケーションのデフォルト認証情報も SDK を初期化する際に使用できます。
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore_async # Use the application default credentials. cred = credentials.ApplicationDefault() firebase_admin.initialize_app(cred) db = firestore_async.client()
各自のサーバーで Firebase Admin SDK を使用するには、サービス アカウントを使用します。
Google Cloud コンソールで [IAM と管理] > [サービス アカウント] にアクセスします。新しい秘密鍵を生成し、JSON ファイルを保存します。次に、このファイルを使用して SDK を初期化します。
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore_async # Use a service account. cred = credentials.Certificate('path/to/serviceAccount.json') app = firebase_admin.initialize_app(cred) db = firestore_async.client()
Node.js
Cloud Firestore SDK を初期化する方法は環境に応じて異なります。最も一般的な方法を以下に示します。完全なリファレンスについては、Admin SDK の初期化をご覧ください。-
Cloud Functions で初期化する
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp(); const db = getFirestore();
-
Google Cloud で初期化する
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp({ credential: applicationDefault() }); const db = getFirestore();
-
各自のサーバーで初期化する
各自のサーバー(またはその他の Node.js 環境)で Firebase Admin SDK を使用するには、サービス アカウントを使用します。Google Cloud コンソールで [IAM と管理] > [サービス アカウント] にアクセスします。新しい秘密鍵を生成し、JSON ファイルを保存します。次に、このファイルを使用して SDK を初期化します。
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
const serviceAccount = require('./path/to/serviceAccountKey.json'); initializeApp({ credential: cert(serviceAccount) }); const db = getFirestore();
Go
Cloud Firestore SDK を初期化する方法は環境に応じて異なります。最も一般的な方法を以下に示します。完全なリファレンスについては、Admin SDK の初期化をご覧ください。import ( "log" firebase "firebase.google.com/go" "google.golang.org/api/option" ) // Use the application default credentials ctx := context.Background() conf := &firebase.Config{ProjectID: projectID} app, err := firebase.NewApp(ctx, conf) if err != nil { log.Fatalln(err) } client, err := app.Firestore(ctx) if err != nil { log.Fatalln(err) } defer client.Close()
各自のサーバーで Firebase Admin SDK を使用するには、サービス アカウントを使用します。
Google Cloud コンソールで [IAM と管理] > [サービス アカウント] にアクセスします。新しい秘密鍵を生成し、JSON ファイルを保存します。次に、このファイルを使用して SDK を初期化します。
import ( "log" firebase "firebase.google.com/go" "google.golang.org/api/option" ) // Use a service account ctx := context.Background() sa := option.WithCredentialsFile("path/to/serviceAccount.json") app, err := firebase.NewApp(ctx, nil, sa) if err != nil { log.Fatalln(err) } client, err := app.Firestore(ctx) if err != nil { log.Fatalln(err) } defer client.Close()
PHP
PHP
Cloud Firestore クライアントのインストールと作成の詳細については、Cloud Firestore クライアント ライブラリをご覧ください。
C#
C#
Cloud Firestore クライアントのインストールと作成の詳細については、Cloud Firestore クライアント ライブラリをご覧ください。
Ruby
データを追加
Cloud Firestore はデータをドキュメント内に保存します。ドキュメントはコレクション内に保存されます。データを初めてドキュメントに追加すると、Cloud Firestore によってコレクションとドキュメントが暗黙的に作成されます。コレクションやドキュメントを明示的に作成する必要はありません。
次のサンプルコードを使用して、新しいコレクションとドキュメントを作成します。
Java
Python
Python
Node.js
Go
PHP
PHP
Cloud Firestore クライアントのインストールと作成の詳細については、Cloud Firestore クライアント ライブラリをご覧ください。
C#
Ruby
次に、別のドキュメントを users コレクションに追加します。このドキュメントには、最初のドキュメントに表示されない Key-Value ペア(ミドルネーム)が含まれています。コレクション内のドキュメントには、それぞれ異なる情報のセットを含めることができます。
Java
Python
Python
Node.js
Go
PHP
PHP
Cloud Firestore クライアントのインストールと作成の詳細については、Cloud Firestore クライアント ライブラリをご覧ください。
C#
Ruby
データを読み取る
Firebase コンソールのデータビューアを使用して、Cloud Firestore にデータが追加されたことをすばやく確認します。
また、"get" メソッドを使用してコレクション全体を取得することもできます。
Java
Python
users_ref = db.collection("users") docs = users_ref.stream() for doc in docs: print(f"{doc.id} => {doc.to_dict()}")
Python
Node.js
Go
PHP
PHP
Cloud Firestore クライアントのインストールと作成の詳細については、Cloud Firestore クライアント ライブラリをご覧ください。
C#
Ruby
次のステップ
次のトピックで知識を深めてください。
- データモデル - 階層データやサブコレクションなど、データが Cloud Firestore で構造化される仕組みを学習します。
- データの追加 - Cloud Firestore でデータを作成および更新する方法を学習します。
- データの取得 - データを取得する方法を学習します。
- 単純なクエリと複合クエリの実行 - 単純なクエリと複合クエリを実行する方法を学習します。
- クエリの並べ替えと制限 - クエリによって返されるデータを並べ替え、制限する方法を学習します。