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

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

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

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

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

Firebaseプロジェクトを選択してください

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

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

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

プロジェクトタイプ特徴エミュレーターで使用
本物

実際のFirebaseプロジェクトとは、(ほとんどの場合、Firebaseコンソールを介して)作成および構成したプロジェクトです。

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

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

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

デモ

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

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

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

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

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

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

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

次のワークフローはすべての拡張機能を対象としていますが、Trigger Email( firestore-send-email拡張機能に関心があると仮定します。ローカルエミュレーターで実行すると、TriggerEmailは自動的にCloudFirestoreおよびCloudFunctionsエミュレーターを利用します。

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

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

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

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

  2. 通常どおりにローカルエミュレータスイートを起動します。

    firebase emulators:start

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

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

または、継続的インテグレーションワークフローなどの非対話型テスト環境の場合、拡張機能を評価するためのテストスクリプトを記述できます。このスクリプトは、他の手順の中でも、必要なCloudFirestoreデータを入力して機能をトリガーします。次に、Local Emulator Suiteを呼び出して、テストスクリプトを実行します。

firebase emulators:exec my-test.sh

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

拡張機能エミュレーターを使用すると、本番環境に厳密に一致する方法で拡張機能をテストできます。ただし、本番環境とはいくつかの違いがあります。

クラウドIAM

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

トリガータイプの制限

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

次は何?