ローカルでの関数の実行

Firebase CLI には、次のタイプの関数をエミュレートできる Cloud Functions エミュレータが含まれています。

  • HTTPS 関数
  • 呼び出し可能関数
  • Cloud Firestore 関数

関数を本番環境にデプロイする前に、ローカルで実行してテストできます。

Firebase CLI をインストールする

Cloud Functions エミュレータを使用するには、まず Firebase CLI をインストールします。

npm install -g firebase-tools

ローカル エミュレータを使用するには、Cloud Functions が以下に依存している必要があります。

  • firebase-admin バージョン 8.0.0 以降。
  • firebase-functions バージョン 3.0.0 以降。

管理者の認証情報を設定する(省略可)

関数のテストにおいて、Firebase Admin SDK を介して Google API や他の Firebase API とインタラクションするには、管理者の認証情報を設定しなければならない場合があります。

  • Cloud Firestore と Realtime Database のトリガーにはすでに十分な認証情報があるため、追加の設定は必要ありません
  • Firebase API(Authentication や FCM など)、Google API(Cloud Translation や Cloud Speech など)といった他のすべての API では、このセクションで説明する設定手順を行う必要があります。これは、Functions shell と firebase emulators:start のいずれを使用している場合も当てはまります。

エミュレートされる関数の管理者認証情報を設定するには:

  1. Google Cloud Console の [サービス アカウント] ペインを開きます。
  2. App Engine default service account が選択されていることを確認し、右側のオプション メニューで [キーを作成] を選択します。
  3. プロンプトが表示されたら、キーのタイプとして JSON を選択し、[作成] をクリックします。
  4. ダウンロードしたキーを参照するように Google のデフォルトの認証情報を設定します。

    UNIX

    $ export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
    
    $ firebase emulators:start
    

    Windows

    $ set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json
    
    $ firebase emulators:start
    

上記の手順を完了すると、関数テストで Admin SDK を使用して Firebase API や Google API にアクセスできるようになります。たとえば、Authentication のトリガーをテストする場合は、エミュレートする関数で admin.auth().getUserByEmail(email) を呼び出すことができます。

エミュレータ スイートを実行する

Cloud Functions エミュレータを実行するには、emulators:start コマンドを使用します。

firebase emulators:start

emulators:start コマンドは、ローカル プロジェクトで firebase init を使用して初期化したプロダクトに基づいて、Cloud Functions、Cloud Firestore、Realtime Database、Firebase Hosting のエミュレータを起動します。特定のエミュレータを起動する場合は --only フラグを使用します。

firebase emulators:start --only functions

エミュレータの起動後にテストスイートやテスト スクリプトを実行する場合は、emulators:exec コマンドを使用します。

firebase emulators:exec "./my-test.sh"

他のサービスとのインタラクション

エミュレータ スイートには複数のエミュレータが含まれており、プロダクト間のインタラクションをテストできます。

Cloud Firestore

Firebase Admin SDK を使用して Cloud Firestore に書き込む Cloud Functions がある場合、Cloud Firestore エミュレータが実行されていれば、この書き込みはエミュレータに送信されます。この書き込みによってさらに Cloud Functions がトリガーされると、それらは Cloud Functions エミュレータ内で実行されます。

Firebase Hosting

Cloud Functions を使用して Firebase Hosting の動的コンテンツを生成する場合、firebase emulators:start ではローカルの HTTP 関数がホスティングのプロキシとして使用されます。

ロギング

エミュレータは関数からのログを実行中のターミナル ウィンドウにストリーミングします。関数内の console.log()console.info()console.error()console.warn() のステートメントからの出力がすべて表示されます。

次のステップ

Firebase エミュレータ スイートの完全な使用例については、クイックスタート サンプルをご覧ください。