2022 年 10 月 18 日に開催される Firebase Summit に、直接会場で、またはオンラインでご参加ください。Firebase を使用してアプリ開発を加速させ、自信を持ってアプリをリリースし、簡単にスケールする方法をご紹介します。 今すぐ登録

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

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

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

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

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

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

    {
     "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つの方法があります。

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

最初の2つの方法を以下に説明します。

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

--localオプションを指定してFirebaseCLIの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. まだ行っていない場合は、FirebaseCLIを設定します
  2. シェルプロンプトから、プロジェクトディレクトリに移動します。 (プロジェクトディレクトリにはファイルfirebase.jsonが含まれています)。
  3. ext:exportコマンドを実行します:
    firebase ext:export

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

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

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

  1. LocalEmulatorSuiteをインストールして構成します

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

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

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

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

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

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

  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に配置します