Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

アプリを Cloud Functions エミュレータに接続する

アプリを Cloud Functions エミュレータに接続する前に、Firebase Local Emulator Suite の全体的なワークフローを理解し、Local Emulator Suite のインストールと構成を行い、CLI コマンドを確認しておいてください。

Firebase プロジェクトを選択する

Firebase Local Emulator Suite は、1 つの Firebase プロジェクト向けにプロダクトをエミュレートします。

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

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

プロジェクト タイプ 特長 エミュレータで使用
実際

実際の Firebase プロジェクトとは、自分で作成および構成した(通常は Firebase コンソールで)プロジェクトのことです。

実際のプロジェクトには、データベース インスタンス、ストレージ バケット、関数など、その Firebase プロジェクト用にセットアップしたリソースなどのライブリソースが含まれています。

実際の Firebase プロジェクトを使用する場合、サポートされているプロダクトの一部またはすべてに対してエミュレータを実行できます。

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

デモ

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

デモ プロジェクトのプロジェクト ID には demo- という接頭辞が付いています。

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

可能な限り、デモ プロジェクトを使用することをおすすめします。次のような特長があります。

  • Firebase プロジェクトを作成せずにエミュレータを実行できるため、セットアップが簡単である
  • エミュレートされていない(本番環境の)リソースを誤って呼び出しても、データが変更されたり、使用量がカウントされたり、課金が発生したりする可能性がないため、安全性が高い
  • インターネットにアクセスして SDK 構成をダウンロードする必要がないため、オフラインでも使いやすい

アプリをインストルメント化してエミュレータと通信する

呼び出し可能関数用にアプリをインストルメント化する

プロトタイプとテストのアクティビティに呼び出し可能なバックエンド関数が含まれる場合、Cloud Functions for Firebase エミュレータとのやり取りを次のように構成します。

Android
        // 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);
iOS - Swift
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

ウェブ バージョン 9

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

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

ウェブ バージョン 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 エミュレータは、次のソースからバックグラウンドでトリガーされる関数をサポートします。

  • Realtime Database エミュレータ
  • Cloud Firestore エミュレータ
  • Authentication エミュレータ
  • Pub/Sub エミュレータ

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

Cloud Functions が存在することをテストするための他のツールについて

Cloud Functions エミュレータは、他のプロトタイプとテストツールによって補完されます。

  • Cloud Functions シェル。対話型の反復型関数のプロトタイピングと開発を可能にします。このシェルは、開発用に REPL スタイルのインターフェースを備えた Cloud Functions エミュレータを使用します。Cloud Firestore エミュレータまたは Realtime Database エミュレータとの統合は提供されていません。このシェルを使用してデータをモックし、Local Emulator Suite が現在サポートしていないプロダクト(Cloud Storage、Pub/Sub、アナリティクス、Remote Config、Storage、Auth、Crashlytics)とのやり取りをシミュレートする関数呼び出しを実行します。
  • Cloud Functions 用の Firebase Test SDK(関数開発用の Mocha フレームワークを備えた Node.js)。実際、Cloud Functions Test SDK は Cloud Functions シェルの上に自動化機能を提供します。

Cloud Functions シェルと Cloud Functions Test SDK の詳細については、関数をインタラクティブにテストするCloud Functions の単体テストをご覧ください。

次のステップ