Firebase Extension は、HTTP リクエストに応答して、または Firebase と Google の他のプロダクト(Firebase Cloud Messaging、Cloud Firestore、Pub/Sub など)からのイベントをトリガーして、特定のタスクまたは一連のタスクを実行します。
個人的に利用する拡張機能を作成することも、Firebase Extensions Hub で世界中のユーザーと共有することもできます。たとえば、アプリで定期的に必要となる特定のタスクを実行したり、会社の API に簡単にアクセスする拡張機能を作成できます。作成した拡張機能は他のユーザーと共有できます。これらのユーザーは、自分の Firebase プロジェクトで使用する拡張機能をインストールして構成できます。
拡張機能の構造
拡張機能は、次の 3 つの主要コンポーネントで構成されます。
- Cloud Functions の関数のコード(JavaScript または TypeScript)
- 拡張機能を説明するメタデータ
- ユーザーが拡張機能を構成して使用する際に役立つドキュメント
拡張機能を開発するには、これらのコンポーネントを次の構造にアセンブルします。
example-extension
├── functions
│ ├── integration-tests
│ │ ├── extensions
│ │ │ └── example-extension.env
│ │ ├── firebase.json
│ │ └── integration-test.spec.js
│ ├── index.js
│ └── package.json
├── README.md
├── PREINSTALL.md
├── POSTINSTALL.md
├── CHANGELOG.md
├── icon.png
└── extension.yaml
functions
ディレクトリには、Cloud Functions の関数のコード(JavaScript または TypeScript)を含めます。これは、Firebase と Google サービスによってトリガーされたイベントに応答して拡張機能のタスクを実行するコードです。extension.yaml
ファイルには、トリガーや IAM アクセスロールなど、拡張機能に関するメタデータと、ユーザーが構成できるパラメータを含めます。PREINSTALL
、POSTINSTALL
、CHANGELOG
ファイルは、拡張機能に必要な最小限のドキュメントです。これらのファイルは、拡張機能が実行する処理、使い方、更新内容を知るのに役立ちます。また、ユーザーが拡張機能を認識できるように、アイコンを用意する必要があります。ユーザーが拡張機能を検索、インストール、管理するときに、これらのファイルの内容が Firebase コンソール、Firebase CLI、Extensions Hub に表示されます。
拡張機能を作成したら、Firebase CLI を使用してプロジェクトにインストールしたり、Extensions Hub に公開できます。Extension Hub では、この拡張機能をプロジェクトに追加してインストールできます。
拡張機能で利用できるプロダクト
Firebase Extensions は Cloud Functions を使用して動作するため、どのような統合が可能かという質問には、拡張機能の関数をどのプロダクトでトリガーできるのかという意味と、トリガー後にどのプロダクトが拡張機能の関数と連携できるのかという意味があります。
サポートされている関数トリガー
手動トリガー
関数のトリガーは手動で行うことができます。Firebase Extensions と Cloud Functions では、次の 2 つの方法で関数を手動でトリガーします。
- HTTP トリガー: HTTP エンドポイントに関数をデプロイします。
- 呼び出し可能関数: Firebase クライアント SDK を使用して、iOS、Android、またはウェブ クライアント コードから直接 Cloud Functions を呼び出します。
拡張機能から HTTP エンドポイントを公開することで、Webhook をサポートする任意のウェブサービスと統合できます。呼び出し可能関数を使用すると、拡張機能をインストールするユーザーは Firebase SDK をクライアント ライブラリとして使用し、拡張機能で実装されている API にアクセスできます。
Firebase サービスのトリガー
ほとんどの Firebase プロダクトは、拡張機能の Cloud Functions の関数をトリガーできるイベントを出力します。
- アナリティクス: アナリティクスがイベントを記録したときに関数をトリガーします。
- App Distribution: App Distribution がアラートをトリガーしたときに関数をトリガーします。
- Authentication: ユーザーがアカウントを作成または削除したときに関数をトリガーします。
- Cloud Firestore: ページの作成、更新、削除時に関数をトリガーします。
- Cloud Storage: バケットでオブジェクトのアップロード、アーカイブ、削除が実行されたときに関数をトリガーします。
- Crashlytics: Crashlytics がアラートをトリガーしたときに関数をトリガーします。
- Performance Monitoring: Performance Monitoring がアラートをトリガーしたときに関数をトリガーします。
- Realtime Database: データの作成、更新、削除時に関数をトリガーします。
- Remote Config: パラメータが更新されたときに関数をトリガーします。
- Test Lab: Test Lab がアラートをトリガーしたときに関数をトリガーします。
Google Cloud サービスのトリガー
拡張機能では、Firebase 以外の Google Cloud サービスをトリガーする関数も使用できます。
- Cloud Pub/Sub: 構成可能な Pub/Sub トピックにイベントが投稿されたときにトリガーされる関数を拡張機能に含めることができます。
- Cloud Scheduler: 設定されたスケジュールで実行される関数を拡張機能に含めることができます。
- Cloud Tasks: Cloud Tasks を使用してキューに追加できる関数を拡張機能に含めることができます。Firebase Extensions で、拡張機能の作成者は拡張機能のライフサイクル イベント(プロジェクトへの初回インストール、新しいバージョンへのアップグレード、バージョンの再構成)に応答する関数を作成できます。
- Eventarc: 構成可能な Eventarc チャネルにイベントが公開されるとトリガーされる関数を拡張機能に含めることができます。また、拡張機能が Eventarc チャネルに独自のイベントを公開することで、ユーザーは拡張機能のイベントからトリガーする独自の関数を定義できます。
関数からのサポート
拡張機能の Cloud Functions の関数がトリガーされると、考えられる統合の範囲は一般にオープンエンドになります。以下では、Cloud Functions の関数でできることをいくつか紹介します。
- サポートされている IAM ロールを使用する Firebase または Google Cloud サービスに対する読み取り、書き込み、その他の操作。
- ウェブ API を提供するサードパーティ サービスの利用。
- カスタム サービスとの連携(ウェブ API を提供する場合)。
- TensorFlow.js、Express.js などの JavaScript ライブラリの実行。
拡張機能の作成方法
スタートガイドのチュートリアルでは、完全な拡張機能の作成、テスト、公開のプロセスについて説明しています。これは、拡張機能の作成方法を学習するためのおすすめの方法です。
スタートガイドをひととおり確認したら、トピックごとのガイドに進みます。このガイドでは、独自の拡張機能の作成に関する次のタスクについて説明しています。
- 拡張機能の関数を作成する
- 拡張機能でパラメータを使用する
- 拡張機能に適切なアクセス権を設定する
- 拡張機能のライフサイクル イベントに対応する
- 拡張機能にユーザーフックを追加する
- 拡張機能のユーザー ドキュメントを作成する
- Extensions Hub で拡張機能を公開する
- extension.yaml リファレンスを完成させる