Cloud Functions によって、デベロッパーは Firebase および Google Cloud イベントにアクセスでき、それらのイベントに対応してコードを実行するスケーラブルな処理能力を得ることができます。Firebase アプリでは、独自の要件を満たすために独自の方法で Cloud Functions を使用することが想定されますが、典型的な使用例は次の領域に分類されます。
- 関心事が発生したときにユーザーに通知します。
- データベースのサニタイズとメンテナンスを実行します。
- アプリではなくクラウドで集中的なタスクを実行します。
- サードパーティのサービスおよび API と統合します。
興味のあるカテゴリの使用例とサンプルを確認してから、はじめにチュートリアル、または認証イベントやアナリティクス イベントなどの入門ガイドに進みます。
関心事が発生したときにユーザーに通知する
デベロッパーは Cloud Functions を使用して、ユーザーが常にアプリに関する情報に関心を持ち、最新情報に接するようにすることができます。たとえば、ユーザーがアプリ内でのお互いの活動をフォローできるアプリを考えてみましょう。ユーザーが自分を別のユーザーのフォロワーとして追加するたびに、Realtime Database に書き込みが行われます。この書き込みイベントによって関数がトリガーされ、適切なユーザーに新しいフォロワーの追加を知らせる Firebase Cloud Messaging(FCM)通知が作成されます。
- 関数は、フォロワーが保存されている Realtime Database パスへの書き込みでトリガーされます。
- 関数によって、FCM を介して送信するメッセージが作成されます。
- FCM によって、通知メッセージがユーザーのデバイスに送信されます。
実際のコードを確認するには、GitHub のサンプルコードをご覧ください。
- Node.js: fcm-notifications
- Python: fcm-notifications
関心事通知のその他の使用例
- ニュースレターを登録または登録解除したユーザーに確認メールを送信します。
- ユーザーがサインアップを完了したときに登録完了の通知メールを送信します。
- ユーザーが新しいアカウントを作成したときに SMS 確認を送信します。
データベースのサニタイズとメンテナンスを実行する
Cloud Functions データベース イベント処理を使用すると、ユーザーの動作に応じて Realtime Database または Cloud Firestore を変更し、システムを目的の状態に保つことができます。たとえば、書き込みイベントをモニタリングし、ユーザーのメッセージ内の特定の文字列の形式を変更(大文字に変更するなど)できます。 その仕組みは次のとおりです。
- 関数のデータベース イベント ハンドラによって、特定のパス上の書き込みイベントがリッスンされ、メッセージのテキストを含むイベントデータが取得されます。
- この関数はテキストを処理して、文字列を大文字に変換します。
- 更新されたテキストが関数によってデータベースに書き戻されます。
実際のコードを確認するには、GitHub のサンプルコードをご覧ください。
- Node.js: uppercase-rtdb
- Python: uppercase-rtdb
データベースのサニタイズとメンテナンスのその他の使用例
- 削除されたユーザーのコンテンツを Realtime Database からパージします。
- Firebase データベース内の子ノードの数を制限します。
- Realtime Database リスト内の要素の数を追跡します。
- Realtime Database から Google Cloud BigQuery にデータをコピーします。
- テキストを絵文字に変換します。
- データベース レコードの計算されたメタデータを管理します。
アプリではなくクラウドで集中的なタスクを実行する
Cloud Functions を利用して、リソースを大量に必要とする作業(負荷が大きい CPU やネットワーキング)をユーザーのデバイスで実行するのではなく、Google Cloud にオフロードすることで、アプリの応答性を向上させることができます。 たとえば、Cloud Storage への画像アップロードをリッスンする関数を記述し、関数を実行するインスタンスに画像をダウンロードし、変更し、Cloud Storage にアップロードして戻すことができます。変更には、sharp や Pillow などのツールによる画像のサイズ変更、切り抜き、変換などが含まれます。
- 画像ファイルが Cloud Storage にアップロードされると、関数がトリガーされます。
- ファンクションによって画像がダウンロードされ、画像のサムネイル バージョンが作成されます。
- ファンクションによってそのサムネイルの場所がデータベースに書き込まれるため、クライアント アプリはそれを見つけて使用できます。
- 関数によってサムネイルは Cloud Storage の新しい場所にアップロードされます。
- アプリはサムネイル リンクをダウンロードします。
画像処理の例のチュートリアルについては、Cloud Storage イベントの処理のガイドをご覧ください。
Firebase Cloud でのバッチジョブのその他の例
- 未使用の Firebase アカウントを定期的に削除します(Node.js | Python)。
- アップロードされた画像を自動的にバックアップします(Node.js | Python)。
- 一括メールをユーザーに送信します。
- データを定期的に集計して整理します。
- 保留中の作業のキューを処理します。
サードパーティのサービスおよび API との統合
Cloud Functions は、ウェブ API の呼び出しや公開によってアプリと他のサービスとの連携を強化するのに役立ちます。たとえば、開発時の共同作業に使用されるアプリは、GitHub の commit をワークグループのチャットルームに投稿できます。
- ユーザーが GitHub リポジトリに commit を push します。
- HTTPS 関数が GitHub webhook API を介してトリガーされます。
- 関数によって commit の通知がチームの Slack チャンネルに送信されます。
サードパーティのサービスおよび API と統合するためのその他の方法
- Google Cloud Vision API を使用して、アップロードした画像を分析およびタグ付けします。
- Google 翻訳を使用してメッセージを翻訳します。
- カスタム認証を使用してユーザーをログインします。
- Realtime Database 書き込みで Webhook にリクエストを送信します。
- Realtime Database 要素に対する全文検索を有効にします。
- ユーザーからの支払いを処理します。
- 電話や SMS メッセージに対する自動応答を作成します。
- Google アシスタントを使用して chatbot を作成します。