Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

関数をローカルで実行する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

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

  • HTTPS 関数
  • 呼び出し可能な関数
  • Firebase Authentication、Realtime Database、Cloud Firestore、Cloud Storage、Cloud Pub/Sub からトリガーされるバックグラウンド関数。

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

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 トリガーにはすでに十分な資格情報があり、追加の設定は必要ありませ
  • Authentication や FCM などの Firebase API や、Cloud Translation や Cloud Speech などの Google API など、他のすべての API には、このセクションで説明するセットアップ手順が必要です。これは、Cloud Functions シェルを使用しているか、 firebase emulators:startを使用しているかに関係なく適用されます。

エミュレートされた機能の管理者資格証明を設定するには:

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

    Unix

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

    ウィンドウズ

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

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

機能構成のセットアップ (オプション)

カスタム関数構成変数を使用している場合は、最初にコマンドを実行して、ローカル環境でカスタム構成を取得します ( functionsディレクトリ内でこれを実行します)。

firebase functions:config:get > .runtimeconfig.json
# If using Windows PowerShell, replace the above with:
# firebase functions:config:get | ac .runtimeconfig.json

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

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 Functions for Firebase エミュレータとのやり取りを次のように構成します。

アンドロイド
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseFunctions functions = FirebaseFunctions.getInstance();
functions.useEmulator("10.0.2.2", 5001);
迅速
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

Web version 9

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "localhost", 5001);

Web version 8

firebase.functions().useEmulator("localhost", 5001);

HTTPS 関数エミュレーション用にアプリをインストルメント化する

コード内の各 HTTPS 関数は、次の URL 形式を使用してローカル エミュレーターから提供されます。

http:// $HOST : $PORT / $PROJECT / $REGION / $NAME

たとえば、デフォルトのホスト ポートとリージョンを使用した単純なhelloWorld関数は、次の場所で提供されます。

https://localhost:5001/ $PROJECT /us-central1/helloWorld

バックグラウンドでトリガーされる関数のエミュレーション用にアプリをインストルメント化する

Cloud Functions エミュレーターは、次のソースからバックグラウンドでトリガーされる関数をサポートしています。

  • リアルタイム データベース エミュレータ
  • Cloud Firestore エミュレータ
  • 認証エミュレーター
  • Pub/Sub エミュレータ

バックグラウンド イベントをトリガーするには、Emulator Suite UI を使用してバックエンド リソースを変更するか、プラットフォームの SDK を使用してアプリまたはテスト コードをエミュレーターに接続します。

拡張機能によって発行されたカスタム イベントのハンドラーをテストする

Cloud Functions v2 で Firebase Extensions カスタム イベントを処理するために実装する関数の場合、Cloud Functions エミュレーターは Eventarc エミュレーターとペアになってEventarc トリガーをサポートします。

イベントを発行する拡張機能のカスタム イベント ハンドラーをテストするには、Cloud Functions と Eventarc エミュレーターをインストールする必要があります。

Eventarc エミュレーターが実行されている場合、Cloud Functions ランタイムは、現在のプロセスでEVENTARC_EMULATOR環境変数をlocalhost:9299に設定します。 EVENTARC_EMULATOR環境変数が設定されている場合、Firebase Admin SDK は Eventarc エミュレータに自動的に接続します。 「ローカル エミュレーター スイートの構成」で説明されているように、既定のポートを変更できます。

環境変数が適切に構成されている場合、Firebase Admin SDK はイベントを Eventarc エミュレーターに自動的に送信します。次に、Eventarc エミュレーターは Cloud Functions エミュレーターへのコールバックを行い、登録済みのハンドラーをトリガーします。

ハンドラー実行の詳細については、Emulator Suite UI で Functions ログを確認できます。

他のサービスとの相互作用

エミュレーター スイートには複数のエミュレーターが含まれており、製品間の相互作用をテストできます。

クラウド ファイアストア

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

クラウドストレージ

Firebase Admin SDK (バージョン 9.7.0 以降) を使用して Cloud Storage に書き込む関数がある場合、これらの書き込みは Cloud Storage エミュレータが実行されていれば、そのエミュレータに送信されます。これらの書き込みによってさらに関数がトリガーされると、それらは Cloud Functions エミュレーターで実行されます。

Firebase 認証

Firebase Admin SDK (バージョン 9.3.0 以降) を使用して Firebase Authentication に書き込む関数がある場合、これらの書き込みは、実行中の Auth エミュレータに送信されます。これらの書き込みによってさらに関数がトリガーされると、それらは Cloud Functions エミュレーターで実行されます。

Firebase ホスティング

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

ロギング

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

次のステップ

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