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

拡張機能マニフェストを使用してプロジェクト構成を管理する

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

拡張マニフェストは、拡張インスタンスとその構成のリストです。マニフェストを使用すると、次のことができます。

  • 拡張機能の構成を他のユーザーと共有する
  • 異なるプロジェクト間で拡張機能の構成をコピーします (ステージング プロジェクトから運用プロジェクトなど)。
  • すべての拡張機能を一度にデプロイする
  • Firebase Local Emulator Suite を使用して、拡張機能がアプリでどのように機能するかをテストします
  • 拡張機能の構成をソース管理にコミットする
  • CI/CD パイプラインに拡張機能を含める

拡張マニフェストには、次の 2 つの部分があります。

  • インスタンス ID から拡張バージョン参照へのマップである、 firebase.jsonextensionsセクション。例えば:

    {
     "extensions": {
       "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18",
       "my-image-resizer": "firebase/storage-resize-images@^0.1.22",
     }
    }
    
  • Firebase プロジェクト ディレクトリのextensions/サブディレクトリにある、各拡張機能インスタンスの構成を含む.envファイル。たとえば、 storage-resize-imagesのインスタンスには、次のような.envファイルが含まれる場合があります。

    IMAGE_TYPE=jpeg
    LOCATION=us-central1
    IMG_BUCKET=${param:PROJECT_ID}.appspot.com
    IMG_SIZES=100x100
    DELETE_ORIGINAL_FILE=false

拡張機能マニフェストを作成する

拡張機能マニフェストを作成するには、次の 3 つの方法があります。

  • Firebase CLI を使用して拡張機能のマニフェストを管理する
  • プロジェクトの拡張機能構成をエクスポートする
  • マニフェスト ファイルを手動で編集する

最初の 2 つの方法について、以下で説明します。

Firebase CLI を使用して拡張機能のマニフェストを管理する

--localオプションを指定して Firebase CLI のext:コマンドのほとんどを実行すると、プロジェクトの現在の構成を実際に変更することなく、拡張機能のマニフェストを更新できます。

例えば:

firebase ext:install --local firebase/firestore-bigquery-export

上記のコマンドを実行すると、 firebase/firestore-bigquery-export拡張機能の最新バージョンを構成し、構成をマニフェストに保存するように求められますが、構成はプロジェクトにデプロイされません。

拡張機能マニフェストを変更するコマンドの例をいくつか次に示します。

# ext:configure changes the params for an extension instance in your extensions manifest
$ firebase ext:configure my-bigquery-extension --local

# ext:update --local updates an instance in your extensions manifest
# to the latest version of that extension
$ firebase ext:update my-bigquery-extension --local

# You can also specify a version if you don't want to update to the latest version
$ firebase ext:update my-bigquery-extension firebase/firestore-bigquery-export@0.1.10 --local 

# ext:uninstall --local removes an instance from your extensions manifest
$ firebase ext:uninstall my-bigquery-extension --local

プロジェクトの拡張機能構成をエクスポートする

プロジェクトの現在の拡張機能構成をマニフェストに保存するには、次の手順を実行します。

  1. まだ行っていない場合は、Firebase CLI をセットアップします。
  2. シェル プロンプトから、プロジェクト ディレクトリに移動します。 (プロジェクト ディレクトリにはファイルfirebase.jsonが含まれています)。
  3. ext:exportコマンドを実行します:
    firebase ext:export

ext:exportコマンドは、 extensionsセクションをfirebase.jsonファイルに追加します。さらに、 ext:exportコマンドは、インストールした各拡張機能インスタンスの.envファイルを含むextensionsディレクトリを作成します。これらのファイルには、各インスタンスの構成パラメーターが含まれています。

Firebase Local Emulator Suite を使用して拡張機能の構成をテストする

拡張機能マニフェストにいくつかの拡張機能インスタンスを追加したら、Local Emulator Suite を使用してそれらをテストできます。

  1. Local Emulator Suite をインストールして構成します

  2. ローカル エミュレーター スイートを起動します。

    • Emulator Suite をインタラクティブに実行するには、以下を実行します: firebase emulators:start
    • Emulator Suite を実行してテスト スクリプトを実行するには、次のコマンドを実行しfirebase emulators:exec my-test.sh

これで、マニフェストに拡張インスタンスがリストされている場合、Local Emulator Suite はそれらの拡張のソース コードを~/.cache/firebase/extensionsにダウンロードします。ダウンロードが完了すると、ローカル エミュレーター スイートが起動し、拡張機能のバックグラウンドでトリガーされる機能をトリガーし、アプリをエミュレーター スイートに接続して、アプリとの統合をテストできます。

拡張機能構成をプロジェクトにデプロイする

拡張機能マニフェストにいくつかの拡張機能インスタンスを追加したら、Firebase CLI を使用してそれをプロジェクトにデプロイできます。拡張機能マニフェストを使用してデプロイする場合、マニフェスト内のすべての拡張機能インスタンスをプロジェクトに一度にインストール、更新、および構成します。

拡張マニフェストをデプロイするには:

  1. シェル プロンプトから、拡張機能の構成が保存されているディレクトリに移動します。 (これはfirebase.jsonを含むディレクトリです。 ext:exportを実行しただけであれば、既に適切なディレクトリに移動しています。)
  2. deployコマンドを実行します。拡張機能を現在のプロジェクト以外のプロジェクトにデプロイする場合は、 --project= :
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID
    も指定します。

deployコマンドは、各インスタンス構成を検証し、 firebase.jsonにリストされていない拡張機能インスタンスを宛先プロジェクトから削除するかどうかを尋ねてから、すべての拡張機能インスタンスをデプロイします。

プロジェクト固有の拡張構成

保存された拡張機能の構成を使用して、ステージング プロジェクトと本番プロジェクトなど、複数の異なるプロジェクトにデプロイできます。これを行う場合、一部のパラメーター値はプロジェクトごとに異なる必要がある場合があります。プロジェクト固有の.envファイルにより、これが可能になります。

  • プロジェクト間で異なるパラメーター値をextensions/ EXTENSION_INSTANCE_ID .env. YOUR_PROJECT_ID
  • 共有パラメータ値をextensions/ EXTENSION_INSTANCE_ID .envに入れます。

拡張機能をエミュレートするときに、別のパラメーター値を使用したい場合があります。たとえば、本番用の API キーではなく、テスト用の API キーを提供したい場合があります。これらのパラメーターを.localファイルに入れます。

  • extensions/ EXTENSION_INSTANCE_ID .env.localでエミュレーション中に使用したい秘密以外のパラメーターを入れます
  • 秘密のパラメーター値をextensions/ EXTENSION_INSTANCE_ID .secret.localに入れます