Firebase Data Connect には、エンドツーエンドの プロトタイピング用のローカル エミュレータと、継続的インテグレーションと継続的デプロイ (CI/CD)フローが用意されています。
- Data Connect エミュレータは、ローカルの統合 PGLite データベース インスタンスと連携して、クエリとミューテーションのプロトタイプを作成し、 完全にローカルな環境でクライアント コードをテストできます。
- Data Connect エミュレータは、非インタラクティブな 作業にも使用できます。自動テストを実行できるため、CI/CD ワークフローでの使用に適しています。これは、スキーマが安定していて、クライアントサイドのコードのプロトタイプを作成してテストする場合に便利です。
このガイドでは、クイックスタートよりも詳しくエミュレータのインストールと使用について説明します。
Data Connect エミュレータをインストールする
Data Connect エミュレータを使用するために Local Emulator Suite をインストールする前に、次のものが必要になります。
- Node.js バージョン 18.0 以降。
Firebase CLI をインストールしてプロジェクト ディレクトリを設定する
インストール ガイドに沿って Firebase CLI をインストールします。定期的に更新してください。 Data Connectエミュレータはバグの修正と 新機能の追加により活発に開発されています。
まだ行っていない場合は、プロンプトに従って使用するサービスを指定し、現在の作業ディレクトリを Firebase プロジェクトとして初期化します。
firebase init
Local Emulator Suite の構成を設定または変更する
Data Connect VS Code 拡張機能から Data Connect エミュレータを起動した場合、 必要に応じてエミュレータがインストールされます。
Firebase CLI を使用して、エミュレータと 他の選択したコンポーネントを手動でインストールできます。Local Emulator Suiteこのコマンドにより構成ウィザードが起動します。目的のエミュレータを選択し、対応するエミュレータのバイナリ ファイルをダウンロードして、デフォルトが適切でない場合はエミュレータ ポートを設定します。
firebase init emulatorsエミュレータがインストールされると、Firebase CLI のバージョンを更新するまで、アップデートのチェックは行われず、追加の自動ダウンロードも 行われません。
Firebase プロジェクトを選択する
セットアップ フローで、Firebase CLI は Firebase プロジェクトを選択または作成するように求めます。Firebase コンソールで Data Connect を使用して設定した既存のプロジェクトを選択すると、選択した構成が 提案されます。Firebase
エミュレータを設定する
エミュレータの構成
firebase init フローを実行すると、エミュレータのセットアップ オプションが表示されます。Local Emulator Suite の他のエミュレータと同様に、構成パラメータ
はローカル プロジェクト ファイルに保存されます。
firebase.jsonファイルには、エミュレータのポート割り当てが含まれています。emulators:uiキーは Data Connect エミュレータには適用されません。
ローカルと本番環境の Data Connect リソースを使用する
本番環境リソースに影響を与えないようにするには、demo- projectID を設定するか、後のセクションで説明するように、エミュレータに接続するようにクライアント コードをインストルメント化します。
エミュレータの使用開始
CI/CD ワークフローなど、エミュレータを非インタラクティブに実行する場合は、exec オプションを指定して起動します。
firebase emulators:exec ./path/to/test-script.shクライアント コードに事前定義されたクエリとミューテーションを統合し、クライアントのテストにエミュレータを使用する場合は、インタラクティブな作業に start オプションを使用できます。Data Connect VS Code 拡張機能からエミュレータを起動することもできます。
firebase emulators:startエミュレータと通信するようにクライアント コードをインストルメント化する
次のように、 Data Connect エミュレータとやり取りするようにアプリ内構成またはテストクラスを設定します。
JavaScript
import { initializeApp } from "firebase/app"; import { connectorConfig } from "@name-of-package"; import { connectDataConnectEmulator, getDataConnect } from 'firebase/data-connect'; // TODO: Replace the following with your app's Firebase project configuration const firebaseConfig = { //... }; const app = initializeApp(firebaseConfig); const dataConnect = getDataConnect(app, connectorConfig); connectDataConnectEmulator(dataConnect, "localhost", 9399); // Make calls from your app
Kotlin Android
val connector = MoviesConnector.instance // Connect to the emulator on "10.0.2.2:9399" connector.dataConnect.useEmulator() // (Alternatively) if you're running your emulator on non-default port: connector.dataConnect.useEmulator(port = 9999) // Make calls from your app
iOS
let connector = DataConnect.dataConnect(DefaultConnectorClient.connectorConfig) // Connect to the emulator on "127.0.0.1:9399" connector.useEmulator() // (alternatively) if you're running your emulator on non-default port: connector.useEmulator(port: 9999) // Make calls from your app
テストと継続的インテグレーションにエミュレータを使用する
コンテナ化された Local Emulator Suite イメージを実行する
一般的な CI 設定でのコンテナを使用した Local Emulator Suite のインストールと構成はシンプルです。
次の点にご注意ください。
- エミュレータのバイナリは
~/.cache/firebase/emulators/にインストールされ、キャッシュされます。ダウンロードが繰り返されないようにするには、このパスを CI キャッシュ構成に追加します。 - リポジトリに
firebase.jsonファイルがない場合は、emulators:startコマンドまたはemulators:execコマンドにコマンドライン引数を追加して、起動するエミュレータを指定する必要があります。例:--only dataconnect
テスト間でデータベースをクリアする
実行間でテスト環境をリセットするには、次のことをおすすめします。
- 次の処理を行う専用のミューテーションを作成します。
- セットアップで、開始データをローカル データベース インスタンスに入力します。
- クリーンアップで、テスト後のデータベース インスタンスから変更されたデータを削除します。
Data Connect エミュレータと本番環境の違い
Data Connect エミュレータは、サーバーサイド プロダクトの多くの機能をシミュレートします。ただし、次のような例外があります。
- PGLite のバージョンと詳細な構成は、本番環境の Cloud SQL インスタンスのバージョンと異なる場合があります。
- エミュレータを使用して Data Connect の
pgvector と Vertex API の統合を開発している場合、Cloud Vertex API への呼び出しは、Cloud SQL の Vertex 統合を介するのではなく、
直接行われます。ただし、本番環境 API への呼び出しは引き続き行われるため、実際の Firebase プロジェクトを使用する必要があります。
demo-プロジェクトは使用できません。Vertex API の費用が発生します。