Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Cloud Firestore

Google の柔軟でスケーラブルな NoSQL クラウド データベースを使用して、クライアント側開発とサーバー側開発のデータを保存、同期します。

Cloud Firestore は、Firebase と Google Cloud からのモバイル、ウェブ、サーバー開発に対応した、柔軟でスケーラブルなデータベースです。Firebase Realtime Database と同様に、リアルタイム リスナーを介してクライアント アプリ間でデータを同期し、モバイルとウェブのオフライン サポートを提供します。これにより、ネットワーク レイテンシやインターネット接続に関係なく機能するレスポンシブ アプリを構築できます。Cloud Firestore は、その他の Firebase および Google Cloud プロダクト(Cloud Functions など)とのシームレスな統合も実現します。

使ってみる

主な機能

柔軟性 Cloud Firestore データモデルは、柔軟な階層型データ構造に対応しています。データはドキュメントに格納され、ドキュメントはコレクションにまとめられます。ドキュメントには、サブコレクションの他に複雑なネスト オブジェクトを含めることができます。
高機能なクエリ処理 Cloud Firestore では、個別のドキュメントを取得する場合や、クエリ パラメータに一致するすべてのドキュメントをコレクションで取得する場合に、クエリを使用できます。クエリには複数の連鎖フィルタを使用でき、またフィルタ処理と並べ替え処理を組み合わせることができます。デフォルトではクエリにはインデックスが付いているので、クエリのパフォーマンスは、データセットではなく結果セットのサイズに比例します。
リアルタイム アップデート Realtime Database と同様に、Cloud Firestore はデータ同期を使用して、すべての接続端末のデータを更新します。ただし、シンプルな 1 回限りの取得クエリを効率的に実行するようにも設計されています。
オフライン サポート Cloud Firestore は、アプリでアクティブに使用されるデータをキャッシュします。これによりアプリは、デバイスがオフラインになっている場合でもデータの書き込み、読み取り、聞き取り、クエリを実行できます。デバイスがオンラインに戻ると、Cloud Firestore でローカルに行われた変更がすべて同期されます。
スケーラビリティのある設計 Cloud Firestore は、Google Cloud の強力なインフラストラクチャの優れた機能(自動マルチリージョン データ複製、強整合性の保証、アトミックなバッチ オペレーション、リアル トランザクション サポート)を提供します。Cloud Firestore は、世界でも最大規模のアプリからの最も過酷なワークロードに対応できるように設計されています。

仕組み

Cloud Firestore は、クラウドホストの NoSQL データベースであり、iOS アプリ、Android アプリ、およびウェブアプリからネイティブ SDK を介して直接アクセスできます。Cloud Firestore は、REST API と RPC API の他に、ネイティブ Node.js、Java、Python、Unity、C++、および Go SDK で使用可能です。

Cloud Firestore の NoSQL データモデルに従い、値に対応するフィールドを含むドキュメントにデータを格納します。これらのドキュメントはコレクションに格納されます。コレクションは、データの編成とクエリの作成に使用できるドキュメントのコンテナです。ドキュメントでは、単純な文字列や数値から複雑なネスト オブジェクトまで、さまざまなデータタイプがサポートされています。また、ドキュメント内にサブコレクションを作成し、データベースの拡大に合わせて拡張できる階層型データ構造を構築できます。Cloud Firestore データモデルでは、アプリに最適なあらゆるデータ構造がサポートされています。

また、Cloud Firestore でのクエリ処理は機能性、効率性、柔軟性に優れています。層が少ないクエリを作成することで、コレクション全体またはネスト サブコレクションを取得することなくドキュメント レベルでデータを取得できます。クエリまたはカーソルに並べ替え、フィルタ、制限を追加して、結果をページ処理できます。更新が発生するたびにデータベース全体を取得することなく、アプリ内のデータを最新の状態に保つには、リアルタイム リスナーを追加します。リアルタイム リスナーをアプリに追加すると、クライアント アプリがリッスンしているデータが変更されるたびに、アプリからデータ スナップショットにより通知され、新しい変更だけが取得されます。

Cloud Firestore のデータへのアクセスを保護するには、Android、iOS、および JavaScript では Firebase Authentication と Cloud Firestore セキュリティ ルールを使用し、サーバー側言語では Identity and Access Management(IAM)を使用します。

実装パス

Cloud Firestore SDK を統合する Gradle、CocoaPods、またはスクリプト インクルード経由でクライアントをすばやく統合します。
データをセキュリティで保護する Cloud Firestore セキュリティ ルールを使用してモバイル/ウェブ開発のデータを保護するか、または Identity and Access Management(IAM)を使用してサーバー開発のデータを保護します。
データの追加 データベースにドキュメントとコレクションを作成します。
データを取得する クエリを作成するか、リアルタイム リスナーを使用して、データベースからデータを取得します。

次のステップ