このクイックスタートでは、Cloud Firestore を設定してデータを追加し、追加したデータを Firebase コンソールで表示する方法について説明します。
Cloud Firestore データベースを作成する
まだ Firebase プロジェクトを作成していない場合は作成します。Firebase コンソールで [プロジェクトを追加] をクリックし、画面の指示に沿って、Firebase プロジェクトを作成するか、既存の GCP プロジェクトに Firebase サービスを追加します。
Firebase コンソールの [Cloud Firestore] セクションに移動します。既存の Firebase プロジェクトを選択するよう求められます。データベース作成ワークフローに従います。
Cloud Firestore セキュリティ ルールの開始モードを選択します。
- テストモード
モバイルおよびウェブ クライアント ライブラリを使用する場合に適していますが、すべてのユーザーがデータを読み書きできます。テストが終わったら、必ずデータのセキュリティ保護セクションを確認してください。
ウェブ、Apple プラットフォーム、Android SDK を使用する場合は、テストモードを選択します。
- ロックモード
モバイルおよびウェブ クライアントからのすべての読み書きを拒否します。認証されたアプリケーション サーバー(C#、Go、Java、Node.js、PHP、Python、Ruby)は引き続きデータベースにアクセスできます。
C#、Go、Java、Node.js、PHP、Python、または Ruby サーバー クライアント ライブラリを使用する場合は、ロックモードを選択します。
デフォルトの Cloud Firestore データベースには、Cloud Firestore セキュリティ ルールの初期セット適用されます。プロジェクトに複数のデータベースを作成する場合は、データベースごとに Cloud Firestore セキュリティ ルールをデプロイできます。
データベースのロケーションを選択します。
このロケーション設定が、プロジェクトのデフォルトの Google Cloud Platform(GCP)リソース ロケーションになります。なお、このロケーションは、プロジェクト内のロケーション設定が必要な GCP サービスで使用されます。具体例としては、デフォルトの Cloud Storage バケットや App Engine アプリ(Cloud Scheduler を使用する場合に必要)などがあります。
ロケーションを選択できない場合は、プロジェクトにデフォルトの GCP リソース ロケーションがすでに設定されています。このロケーションは、プロジェクトの作成時か、ロケーション設定を必要とする別のサービスの設定時に設定されたものです。
[完了] をクリックします。
Cloud Firestore を有効にすると、Cloud API Manager で API も有効になります。
開発環境を設定する
必要な依存関係とクライアント ライブラリをアプリに追加します。
ウェブ向けの名前空間付き API
- Firebase をウェブアプリに追加する手順に従います。
- Firebase ライブラリと Cloud Firestore ライブラリをアプリに追加します。
<script src="https://www.gstatic.com/firebasejs/10.7.2/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/10.7.2/firebase-firestore-compat.js"></script>
Cloud Firestore SDK は、npm パッケージとしても提供されています。npm install firebase@10.7.2 --save
Firebase と Cloud Firestore の両方を手動で require する必要があります。import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
ウェブ向けのモジュラー API
- Firebase をウェブアプリに追加する手順に従います。
-
Cloud Firestore SDK は npm パッケージとして提供されています。
npm install firebase@10.7.2 --save
Firebase と Cloud Firestore の両方をインポートする必要があります。import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
iOS+
Firebase を Apple アプリに追加するの手順に沿って操作します。
Swift Package Manager を使用して Firebase の依存関係のインストールと管理を行います。
- Xcode でアプリ プロジェクトを開いたまま、[File(ファイル)] > [Swift Packages(Swift パッケージ)] > [Add Package Dependency(パッケージの依存関係を追加)] の順に移動します。
- プロンプトが表示されたら、Firebase Apple プラットフォーム SDK リポジトリを追加します。
- Firestore ライブラリを選択します。
- 上記の作業が完了すると、Xcode は依存関係の解決とバックグラウンドでのダウンロードを自動的に開始します。
https://github.com/firebase/firebase-ios-sdk
Android
- Android アプリに Firebase を追加するの手順に沿って操作します。
- Firebase Android BoM(部品構成表)を使用して、モジュール(アプリレベル)の Gradle ファイル
(通常は
app/build.gradle.kts
またはapp/build.gradle
)で Android 向け Cloud Firestore ライブラリの依存関係を宣言します。dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.7.1")) // Declare the dependency for the Cloud Firestore library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-firestore") }
Firebase Android BoM を使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。
(別の方法)BoM を使用せずに Firebase ライブラリの依存関係を宣言する
Firebase BoM を使用しない場合は、依存関係の行でそれぞれの Firebase ライブラリのバージョンを指定する必要があります。
アプリで複数の Firebase ライブラリを使用する場合は、すべてのバージョンの互換性を確保するため、ライブラリのバージョンの管理に BoM を使用することを強くおすすめします。
dependencies { // Declare the dependency for the Cloud Firestore library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-firestore:24.10.1") }
Kotlin 固有のライブラリ モジュールをお探しの場合、2023 年 10 月のリリース以降は、Kotlin と Java のどちらのデベロッパーもメイン ライブラリ モジュールを利用できるようになります(詳しくは、このイニシアチブに関するよくある質問をご覧ください)。
Dart
- まだ行っていない場合は、Flutter アプリで Firebase の構成と初期化を行います。
- Flutter プロジェクトのルートから、次のコマンドを実行してプラグインをインストールします。
flutter pub add cloud_firestore
- 完了したら、Flutter アプリケーションを再ビルドします。
flutter run
- 省略可: プリコンパイルされたフレームワークを組み込むことで、iOS と macOS のビルド時間を短縮できます。
現在、iOS 向け Firestore SDK は、Xcode でビルドするのに最大 5 分かかるコードに依存しています。ビルド時間を大幅に短縮するには、Podfile で
target 'Runner' do
ブロックに次の行を追加して、プリコンパイルされたバージョンを使用します。target 'Runner' do use_frameworks! use_modular_headers! pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => 'IOS_SDK_VERSION' flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) target 'RunnerTests' do inherit! :search_paths end end
IOS_SDK_VERSION は、
firebase_core
のfirebase_sdk_version.rb
ファイルで指定された Firebase iOS SDK のバージョンに置き換えます。最新バージョンのfirebase_core
を使用していない場合は、ローカルの Pub パッケージ キャッシュ(通常は~/.pub-cache
)でこのファイルを探します。また、CocoaPods が 1.9.1 以降にアップグレードされていることを確認してください。
gem install cocoapods
詳細については、GitHub での問題をご覧ください。
Java
- アプリに Firebase Admin SDK を追加します。
-
Gradle を使用する:
compile 'com.google.firebase:firebase-admin:1.32.0'
-
Maven を使用する:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>1.32.0</version> </dependency>
-
Gradle を使用する:
- 以下の手順に従い、ご使用の環境で適切な認証情報を使用して Cloud Firestore を初期化します。
Python
- Firebase Admin SDK を Python アプリに追加します。
pip install --upgrade firebase-admin
- 以下の手順に従い、ご使用の環境で適切な認証情報を使用して Cloud Firestore を初期化します。
C++
- Firebase を C++ プロジェクトに追加するの手順に沿って操作します。
- Android 用の C++ インターフェース。
- Gradle の依存関係。モジュール(アプリレベル)の Gradle ファイル(通常は
app/build.gradle
)に以下を追加します。android.defaultConfig.externalNativeBuild.cmake { arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir" } apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { // earlier entries auth firestore }
- バイナリ依存関係。同様に、バイナリの依存関係を取得するために推奨される方法は、
CMakeLists.txt
ファイルに以下を追加することです。add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) set(firebase_libs firebase_auth firebase_firestore firebase_app) # Replace the target name below with the actual name of your target, # for example, "native-lib". target_link_libraries(${YOUR_TARGET_NAME_HERE} "${firebase_libs}")
- デスクトップ統合を設定するには、Firebase を C++ プロジェクトに追加するをご覧ください。
Unity
- Firebase を Unity プロジェクトに追加するの手順に沿って操作します。
- Unity インターフェースを使用して、Android ビルドを最小化するようにプロジェクトを構成します。
- このオプションは [Player Settings] > [Android] > [Publishing Settings] > [Minify] にあります。
- オプションは Unity のバージョンによって異なる場合があります。公式の Unity ドキュメントと Firebase Unity Build Debug ガイドをご覧ください。
-
圧縮を有効 にした後も、参照されるメソッドの数が制限を超える場合は、次の場所で
multidex
を有効にすることもできます。-
[Player Settings] の下の [Custom Gradle Template] が有効な場合は、
mainTemplate.gradle
。 -
Android Studio を使用してエクスポートされたプロジェクトをビルドする場合は、モジュール レベルの
build.gradle
ファイル。
-
[Player Settings] の下の [Custom Gradle Template] が有効な場合は、
メッセージ Error while merging dex archives
を避けるには、ビルドを最小化する必要があります。
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
C#
-
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 サービス アカウント キーファイルを指すように
-
.csproj
ファイルでアプリに Cloud Firestore C# ライブラリを追加します。<ItemGroup> <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" /> </ItemGroup>
-
以下を
Program.cs
ファイルに追加します。using 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 のインスタンスを初期化します。
ウェブ向けのモジュール方式 API
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = getFirestore(app);
FIREBASE_CONFIGURATION は、ウェブアプリの firebaseConfig
に置き換えます。
デバイスの接続が失われた場合にデータを維持する方法については、オフライン データの有効化をご覧ください。
ウェブ向けの名前空間方式 API
import firebase from "firebase/app"; import "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = firebase.firestore();
FIREBASE_CONFIGURATION は、ウェブアプリの firebaseConfig
に置き換えます。
デバイスの接続が失われた場合にデータを維持する方法については、オフライン データの有効化をご覧ください。
Swift
import FirebaseCore import FirebaseFirestore
FirebaseApp.configure() let db = Firestore.firestore()
Objective-C
@import FirebaseCore; @import FirebaseFirestore; // Use Firebase library to configure APIs [FIRApp configure];
FIRFirestore *defaultFirestore = [FIRFirestore firestore];
Kotlin+KTX
// Access a Cloud Firestore instance from your Activity
val db = Firebase.firestore
Java
// Access a Cloud Firestore instance from your Activity
FirebaseFirestore db = FirebaseFirestore.getInstance();
Dart
db = FirebaseFirestore.instance;
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()
C++
// Make sure the call to `Create()` happens some time before you call Firestore::GetInstance(). App::Create(); Firestore* db = Firestore::GetInstance();
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 クライアント ライブラリをご覧ください。
Unity
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
C#
C#
Cloud Firestore クライアントのインストールと作成の詳細については、Cloud Firestore クライアント ライブラリをご覧ください。
Ruby
データの追加
Cloud Firestore はデータをドキュメントに保存します。ドキュメントはコレクションに保存されます。データを初めてドキュメントに追加すると、Cloud Firestore によってコレクションとドキュメントが暗黙的に作成されます。コレクションやドキュメントを明示的に作成する必要はありません。
次のサンプルコードを使用して、新しいコレクションとドキュメントを作成します。
ウェブ向けのモジュラー API
import { collection, addDoc } from "firebase/firestore"; try { const docRef = await addDoc(collection(db, "users"), { first: "Ada", last: "Lovelace", born: 1815 }); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); }
ウェブ向けの名前空間方式 API
db.collection("users").add({ first: "Ada", last: "Lovelace", born: 1815 }) .then((docRef) => { console.log("Document written with ID: ", docRef.id); }) .catch((error) => { console.error("Error adding document: ", error); });
Swift
// Add a new document with a generated ID do { let ref = try await db.collection("users").addDocument(data: [ "first": "Ada", "last": "Lovelace", "born": 1815 ]) print("Document added with ID: \(ref.documentID)") } catch { print("Error adding document: \(error)") }
Objective-C
// Add a new document with a generated ID __block FIRDocumentReference *ref = [[self.db collectionWithPath:@"users"] addDocumentWithData:@{ @"first": @"Ada", @"last": @"Lovelace", @"born": @1815 } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error adding document: %@", error); } else { NSLog(@"Document added with ID: %@", ref.documentID); } }];
Kotlin+KTX
// Create a new user with a first and last name val user = hashMapOf( "first" to "Ada", "last" to "Lovelace", "born" to 1815, ) // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener { documentReference -> Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}") } .addOnFailureListener { e -> Log.w(TAG, "Error adding document", e) }
Java
// Create a new user with a first and last name Map<String, Object> user = new HashMap<>(); user.put("first", "Ada"); user.put("last", "Lovelace"); user.put("born", 1815); // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId()); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error adding document", e); } });
Dart
// Create a new user with a first and last name final user = <String, dynamic>{ "first": "Ada", "last": "Lovelace", "born": 1815 }; // Add a new document with a generated ID db.collection("users").add(user).then((DocumentReference doc) => print('DocumentSnapshot added with ID: ${doc.id}'));
Java
Python
Python
C++
// Add a new document with a generated ID Future<DocumentReference> user_ref = db->Collection("users").Add({{"first", FieldValue::String("Ada")}, {"last", FieldValue::String("Lovelace")}, {"born", FieldValue::Integer(1815)}}); user_ref.OnCompletion([](const Future<DocumentReference>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot added with ID: " << future.result()->id() << std::endl; } else { std::cout << "Error adding document: " << future.error_message() << std::endl; } });
Node.js
Go
PHP
PHP
Cloud Firestore クライアントのインストールと作成の詳細については、Cloud Firestore クライアント ライブラリをご覧ください。
Unity
DocumentReference docRef = db.Collection("users").Document("alovelace"); Dictionary<string, object> user = new Dictionary<string, object> { { "First", "Ada" }, { "Last", "Lovelace" }, { "Born", 1815 }, }; docRef.SetAsync(user).ContinueWithOnMainThread(task => { Debug.Log("Added data to the alovelace document in the users collection."); });
C#
Ruby
次に、別のドキュメントを users
コレクションに追加します。このドキュメントには、最初のドキュメントに表示されない Key-Value ペア(ミドルネーム)が含まれています。コレクション内のドキュメントには、それぞれ異なる情報のセットを含めることができます。
ウェブ向けのモジュラー API
// Add a second document with a generated ID. import { addDoc, collection } from "firebase/firestore"; try { const docRef = await addDoc(collection(db, "users"), { first: "Alan", middle: "Mathison", last: "Turing", born: 1912 }); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); }
ウェブ向けの名前空間方式 API
// Add a second document with a generated ID. db.collection("users").add({ first: "Alan", middle: "Mathison", last: "Turing", born: 1912 }) .then((docRef) => { console.log("Document written with ID: ", docRef.id); }) .catch((error) => { console.error("Error adding document: ", error); });
Swift
// Add a second document with a generated ID. do { let ref = try await db.collection("users").addDocument(data: [ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 ]) print("Document added with ID: \(ref.documentID)") } catch { print("Error adding document: \(error)") }
Objective-C
// Add a second document with a generated ID. __block FIRDocumentReference *ref = [[self.db collectionWithPath:@"users"] addDocumentWithData:@{ @"first": @"Alan", @"middle": @"Mathison", @"last": @"Turing", @"born": @1912 } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error adding document: %@", error); } else { NSLog(@"Document added with ID: %@", ref.documentID); } }];
Kotlin+KTX
// Create a new user with a first, middle, and last name val user = hashMapOf( "first" to "Alan", "middle" to "Mathison", "last" to "Turing", "born" to 1912, ) // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener { documentReference -> Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}") } .addOnFailureListener { e -> Log.w(TAG, "Error adding document", e) }
Java
// Create a new user with a first, middle, and last name Map<String, Object> user = new HashMap<>(); user.put("first", "Alan"); user.put("middle", "Mathison"); user.put("last", "Turing"); user.put("born", 1912); // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId()); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error adding document", e); } });
Dart
// Create a new user with a first and last name final user = <String, dynamic>{ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 }; // Add a new document with a generated ID db.collection("users").add(user).then((DocumentReference doc) => print('DocumentSnapshot added with ID: ${doc.id}'));
Java
Python
Python
C++
db->Collection("users") .Add({{"first", FieldValue::String("Alan")}, {"middle", FieldValue::String("Mathison")}, {"last", FieldValue::String("Turing")}, {"born", FieldValue::Integer(1912)}}) .OnCompletion([](const Future<DocumentReference>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot added with ID: " << future.result()->id() << std::endl; } else { std::cout << "Error adding document: " << future.error_message() << std::endl; } });
Node.js
Go
PHP
PHP
Cloud Firestore クライアントのインストールと作成の詳細については、Cloud Firestore クライアント ライブラリをご覧ください。
Unity
DocumentReference docRef = db.Collection("users").Document("aturing"); Dictionary<string, object> user = new Dictionary<string, object> { { "First", "Alan" }, { "Middle", "Mathison" }, { "Last", "Turing" }, { "Born", 1912 } }; docRef.SetAsync(user).ContinueWithOnMainThread(task => { Debug.Log("Added data to the aturing document in the users collection."); });
C#
Ruby
データを読み取る
Firebase コンソールのデータビューアを使用すると、Cloud Firestore にデータが追加されたことをすばやく確認できます。
また、"get" メソッドを使用してコレクション全体を取得することもできます。
ウェブ向けのモジュラー API
import { collection, getDocs } from "firebase/firestore"; const querySnapshot = await getDocs(collection(db, "users")); querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); });
ウェブ向けの名前空間方式 API
db.collection("users").get().then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); }); });
Swift
do { let snapshot = try await db.collection("users").getDocuments() for document in snapshot.documents { print("\(document.documentID) => \(document.data())") } } catch { print("Error getting documents: \(error)") }
Objective-C
[[self.db collectionWithPath:@"users"] getDocumentsWithCompletion:^(FIRQuerySnapshot * _Nullable snapshot, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error getting documents: %@", error); } else { for (FIRDocumentSnapshot *document in snapshot.documents) { NSLog(@"%@ => %@", document.documentID, document.data); } } }];
Kotlin+KTX
db.collection("users") .get() .addOnSuccessListener { result -> for (document in result) { Log.d(TAG, "${document.id} => ${document.data}") } } .addOnFailureListener { exception -> Log.w(TAG, "Error getting documents.", exception) }
Java
db.collection("users") .get() .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { if (task.isSuccessful()) { for (QueryDocumentSnapshot document : task.getResult()) { Log.d(TAG, document.getId() + " => " + document.getData()); } } else { Log.w(TAG, "Error getting documents.", task.getException()); } } });
Dart
await db.collection("users").get().then((event) { for (var doc in event.docs) { print("${doc.id} => ${doc.data()}"); } });
Java
Python
users_ref = db.collection("users") docs = users_ref.stream() for doc in docs: print(f"{doc.id} => {doc.to_dict()}")
Python
C++
Future<QuerySnapshot> users = db->Collection("users").Get(); users.OnCompletion([](const Future<QuerySnapshot>& future) { if (future.error() == Error::kErrorOk) { for (const DocumentSnapshot& document : future.result()->documents()) { std::cout << document << std::endl; } } else { std::cout << "Error getting documents: " << future.error_message() << std::endl; } });
Node.js
Go
PHP
PHP
Cloud Firestore クライアントのインストールと作成の詳細については、Cloud Firestore クライアント ライブラリをご覧ください。
Unity
CollectionReference usersRef = db.Collection("users"); usersRef.GetSnapshotAsync().ContinueWithOnMainThread(task => { QuerySnapshot snapshot = task.Result; foreach (DocumentSnapshot document in snapshot.Documents) { Debug.Log(String.Format("User: {0}", document.Id)); Dictionary<string, object> documentDictionary = document.ToDictionary(); Debug.Log(String.Format("First: {0}", documentDictionary["First"])); if (documentDictionary.ContainsKey("Middle")) { Debug.Log(String.Format("Middle: {0}", documentDictionary["Middle"])); } Debug.Log(String.Format("Last: {0}", documentDictionary["Last"])); Debug.Log(String.Format("Born: {0}", documentDictionary["Born"])); } Debug.Log("Read all data from the users collection."); });
C#
Ruby
データをセキュリティで保護する
ウェブ、Android、または Apple プラットフォーム SDK を使用している場合は、Firebase Authentication と Cloud Firestore セキュリティ ルールを使用して、Cloud Firestore のデータを保護します。
最初に使用できる基本的なルールセットを以下に示します。セキュリティ ルールはコンソールの [ルール] タブで変更できます。
認証必須
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
ロックモード
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
テストモード
// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
ウェブアプリ、Android アプリ、または iOS アプリを本番環境にデプロイする前に、自分のアプリ クライアントのみが Cloud Firestore データにアクセスできるように準備します。App Check のドキュメントをご覧ください。
いずれかのサーバー SDK を使用している場合は、Identity and Access Management(IAM)を使用して Cloud Firestore のデータを保護します。
動画チュートリアルを視聴する
Cloud Firestore モバイル クライアント ライブラリを使用する際の詳しいガイダンスについては、以下のいずれかの動画チュートリアルをご覧ください。
ウェブ
iOS+
Android
Firebase の YouTube チャンネルにはさらに多くの動画があります。
次のステップ
次のトピックで知識を深めてください。
- Codelab - Android、iOS、またはウェブの Codelab に沿って、実際のアプリで Cloud Firestore を使用する方法を学習します。
- データモデル - 階層データやサブコレクションなど、データが Cloud Firestore で構造化される仕組みを学習します。
- データの追加 - Cloud Firestore でデータを作成および更新する方法を学習します。
- データの取得 - データを取得する方法を学習します。
- 単純なクエリと複合クエリの実行 - 単純なクエリと複合クエリを実行する方法を学習します。
- クエリの並べ替えと制限 - クエリによって返されるデータを並べ替え、制限する方法を学習します。