拡張機能エミュレータを使用して拡張機能を評価する

アプリで拡張機能エミュレータを使用する前に、 Firebase Local Emulator Suite の全体的なワークフローを理解し、Local Emulator Suiteインストールして構成し、そのCLI コマンドを確認してください。

また、このガイドは、 Firebase ExtensionsFirebase アプリでの使用方法に精通していることを前提としています。

拡張機能エミュレーターで何ができますか?

拡張機能エミュレーターを使用すると、拡張機能を安全なローカル環境にインストールして管理し、請求コストを最小限に抑えながら拡張機能の機能をよりよく理解できます。エミュレーターは、Cloud Firestore、Realtime Database、Cloud Storage、Authentication および Pub/Sub のエミュレーターを使用したバックグラウンド イベントによってトリガーされる関数、Cloud Functions v2 に実装された Eventarc によってトリガーされる関数など、拡張機能の関数をローカルで実行します。

Firebase プロジェクトを選択

Firebase Local Emulator Suite は、単一の Firebase プロジェクトの製品をエミュレートします。

使用するプロジェクトを選択するには、エミュレータを起動する前に、CLI で作業ディレクトリでfirebase useを実行します。または、 --projectフラグを各エミュレータ コマンドに渡すこともできます。

Local Emulator Suite は、実際のFirebase プロジェクトとデモプロジェクトのエミュレーションをサポートしています。

プロジェクトの種類特徴エミュレーターで使用する
本物

実際の Firebase プロジェクトは、ユーザーが作成して構成したものです (ほとんどの場合、Firebase コンソールを使用して)。

実際のプロジェクトには、データベース インスタンス、ストレージ バケット、関数、またはその Firebase プロジェクト用に設定したその他のリソースなどのライブ リソースがあります。

実際の Firebase プロジェクトで作業する場合、サポートされている製品の一部またはすべてのエミュレータを実行できます。

エミュレートしていない製品の場合、アプリとコードはライブリソース (データベース インスタンス、ストレージ バケット、関数など) とやり取りします。

デモ

デモ Firebase プロジェクトには、実際のFirebase 構成もライブ リソースもありません。これらのプロジェクトには通常、Codelab またはその他のチュートリアルからアクセスします。

デモ プロジェクトのプロジェクト ID には、 demo-プレフィックスが付きます。

デモの Firebase プロジェクトを操作する場合、アプリとコードはエミュレータのみとやり取りします。エミュレーターが実行されていないリソースをアプリが操作しようとすると、そのコードは失敗します。

可能な限りデモ プロジェクトを使用することをお勧めします。利点は次のとおりです。

  • Firebase プロジェクトを作成しなくてもエミュレータを実行できるため、セットアップが簡単
  • コードがエミュレートされていない (本番) リソースを誤って呼び出した場合でも、データの変更、使用、および課金の可能性がないため、より強力な安全性
  • SDK 構成をダウンロードするためにインターネットにアクセスする必要がないため、オフライン サポートが向上します。

拡張機能をインストールして評価する

拡張機能エミュレーターを使用して、拡張機能がニーズを満たしているかどうかを評価するのは簡単です。

トリガー メール ( firestore-send-email )拡張機能に興味があると仮定しましょう。ただし、次のワークフローはすべての拡張機能を対象としています。ローカル エミュレーターで実行すると、Trigger Email は Cloud Firestore と Cloud Functions エミュレーターを自動的に利用します。

拡張機能をローカルで評価するには:

  1. 拡張機能をローカル拡張マニフェストに追加します。拡張マニフェストは、拡張インスタンスとその構成のリストです。

    firebase ext:install --local firebase/firestore-send-email

    上記のコマンドを実行すると、 firebase/firestore-send-email拡張機能の最新バージョンを構成し、構成をマニフェストに保存するように求められますが、構成はプロジェクトにデプロイされません。詳細については、「マニフェストを使用して拡張機能の構成を管理する」を参照してください

  2. 通常どおり Local Emulator Suite を起動します。

    firebase emulators:start

これで、マニフェストにリストされているfirestore-send-email拡張インスタンスを使用して、Local Emulator Suite がその拡張のソース コードを~/.cache/firebase/extensionsにダウンロードします。ソースがダウンロードされると、Local Emulator Suite が起動し、拡張機能のバックグラウンドでトリガーされる機能をトリガーし、アプリを Local Emulator Suite に接続してアプリとの統合をテストできるようになります。

Emulator Suite UI を使用して、電子メール ドキュメント コレクションにデータを追加し、Trigger Email 拡張機能の必要に応じて他のバックエンド リソースを設定できます。

または、継続的インテグレーション ワークフローなどの非インタラクティブなテスト環境では、拡張機能を評価するためのテスト スクリプトを作成できます。このスクリプトは、他のステップの中でも、必要な Cloud Firestore データを入力して関数をトリガーします。次に、Local Emulator Suite を呼び出して、テスト スクリプトを実行します。

firebase emulators:exec my-test.sh

拡張機能エミュレーターを使用したテストと本番環境の違い

拡張機能エミュレーターを使用すると、運用環境とほぼ同じ方法で拡張機能をテストできます。ただし、本番動作とはいくつかの違いがあります。

クラウド IAM

Firebase Emulator Suite は、実行のために IAM 関連の動作を複製または尊重しようとはしません。エミュレーターは、提供されている Firebase セキュリティ ルールに準拠しますが、IAM が通常使用される状況では、たとえば、Cloud Functions 呼び出しサービス アカウントを設定してアクセス許可を設定する場合、エミュレーターは構成可能ではなく、開発者のマシンでグローバルに利用可能なアカウントを使用します。ローカル スクリプトを直接実行するのと同様です。

トリガータイプの制限

現在、Firebase Local Emulator Suite は、HTTP リクエストによってトリガーされる関数、拡張機能の Eventarc カスタム イベント トリガー、Cloud Firestore、Realtime Database、Cloud Storage、Authentication、および Pub/Sub のバックグラウンド イベントによってトリガーされる関数のみをサポートしています。他の種類のトリガー関数を使用する拡張機能を評価するには、拡張機能をテスト Firebase プロジェクトにインストールする必要があります。

次は何?