Cloud Functions で可能な処理

Cloud Functions によって、デベロッパーは Firebase および Google Cloud イベントにアクセスでき、それらのイベントに対応してコードを実行するスケーラブルな処理能力を得ることができます。Firebase アプリでは、独自の要件を満たすために独自の方法で Cloud Functions を使用することが想定されますが、典型的な使用例は次の領域に分類されます。

興味のあるカテゴリの使用例とサンプルを確認してから、はじめにチュートリアル、または認証イベントアナリティクス イベントなどの入門ガイドに進みます。

関心事が発生したときにユーザーに通知する

デベロッパーは Cloud Functions を使用して、ユーザーが常にアプリに関する情報に関心を持ち、最新情報に接するようにすることができます。たとえば、ユーザーがアプリ内でのお互いの活動をフォローできるアプリを考えてみましょう。ユーザーが自分を別のユーザーのフォロワーとして追加するたびに、Realtime Database に書き込みが行われます。この書き込みイベントによって関数がトリガーされ、適切なユーザーに新しいフォロワーの追加を知らせる Firebase Cloud Messaging(FCM)通知が作成されます。

以下で説明するアプリフローを示す図

  1. 関数は、フォロワーが保存されている Realtime Database パスへの書き込みでトリガーされます。
  2. 関数によって、FCM を介して送信するメッセージが作成されます。
  3. FCM によって、通知メッセージがユーザーのデバイスに送信されます。

実際のコードを確認するには、GitHub のサンプルコードをご覧ください。

関心事通知のその他の使用例

  • ニュースレターを登録または登録解除したユーザーに確認メールを送信します。
  • ユーザーがサインアップを完了したときに登録完了の通知メールを送信します。
  • ユーザーが新しいアカウントを作成したときに SMS 確認を送信します。

データベースのサニタイズとメンテナンスを実行する

Cloud Functions データベース イベント処理を使用すると、ユーザーの動作に応じて Realtime Database または Cloud Firestore を変更し、システムを目的の状態に保つことができます。たとえば、書き込みイベントをモニタリングし、ユーザーのメッセージ内の特定の文字列の形式を変更(大文字に変更するなど)できます。 その仕組みは次のとおりです。

以下で説明するアプリフローを示す図

  1. 関数のデータベース イベント ハンドラによって、特定のパス上の書き込みイベントがリッスンされ、メッセージのテキストを含むイベントデータが取得されます。
  2. この関数はテキストを処理して、文字列を大文字に変換します。
  3. 更新されたテキストが関数によってデータベースに書き戻されます。

実際のコードを確認するには、GitHub のサンプルコードをご覧ください。

データベースのサニタイズとメンテナンスのその他の使用例

  • 削除されたユーザーのコンテンツを Realtime Database からパージします。
  • Firebase データベース内の子ノードの数を制限します。
  • Realtime Database リスト内の要素の数を追跡します。
  • Realtime Database から Google Cloud BigQuery にデータをコピーします。
  • テキストを絵文字に変換します。
  • データベース レコードの計算されたメタデータを管理します。

アプリではなくクラウドで集中的なタスクを実行する

Cloud Functions を利用して、リソースを大量に必要とする作業(負荷が大きい CPU やネットワーキング)をユーザーのデバイスで実行するのではなく、Google Cloud にオフロードすることで、アプリの応答性を向上させることができます。 たとえば、Cloud Storage への画像アップロードをリッスンする関数を記述し、関数を実行するインスタンスに画像をダウンロードし、変更し、Cloud Storage にアップロードして戻すことができます。変更には、sharpPillow などのツールによる画像のサイズ変更、切り抜き、変換などが含まれます。

以下で説明するアプリフローを示す図

  1. 画像ファイルが Cloud Storage にアップロードされると、関数がトリガーされます。
  2. ファンクションによって画像がダウンロードされ、画像のサムネイル バージョンが作成されます。
  3. ファンクションによってそのサムネイルの場所がデータベースに書き込まれるため、クライアント アプリはそれを見つけて使用できます。
  4. 関数によってサムネイルは Cloud Storage の新しい場所にアップロードされます。
  5. アプリはサムネイル リンクをダウンロードします。

画像処理の例のチュートリアルについては、Cloud Storage イベントの処理のガイドをご覧ください。

Firebase Cloud でのバッチジョブのその他の例

  • 未使用の Firebase アカウントを定期的に削除します(Node.js | Python)。
  • アップロードされた画像を自動的にバックアップします(Node.js | Python)。
  • 一括メールをユーザーに送信します。
  • データを定期的に集計して整理します。
  • 保留中の作業のキューを処理します。

サードパーティのサービスおよび API との統合

Cloud Functions は、ウェブ API の呼び出しや公開によってアプリと他のサービスとの連携を強化するのに役立ちます。たとえば、開発時の共同作業に使用されるアプリは、GitHub の commit をワークグループのチャットルームに投稿できます。

以下で説明するアプリフローを示す図

  1. ユーザーが GitHub リポジトリに commit を push します。
  2. HTTPS 関数が GitHub webhook API を介してトリガーされます。
  3. 関数によって commit の通知がチームの Slack チャンネルに送信されます。

サードパーティのサービスおよび API と統合するためのその他の方法

  • Google Cloud Vision API を使用して、アップロードした画像を分析およびタグ付けします。
  • Google 翻訳を使用してメッセージを翻訳します。
  • カスタム認証を使用してユーザーをログインします。
  • Realtime Database 書き込みで Webhook にリクエストを送信します。
  • Realtime Database 要素に対する全文検索を有効にします。
  • ユーザーからの支払いを処理します。
  • 電話や SMS メッセージに対する自動応答を作成します。
  • Google アシスタントを使用して chatbot を作成します。