Cloud Functions for Firebaseについて
「そもそもどういうサービスなのか知りたい!」
「活用することでどういうメリットがあるのだろうか?」
と思い、調べられる方は多いのではないでしょうか。
Firebaseは、モバイルアプリケーションやウェブアプリケーションの開発者にとって、非常に便利なツールとして知られています。アプリの大半はクライアント側のコードで完結しますが、秘匿が必要なロジックや、サードパーティAPIとの統合など一部でサーバー側でのコード実行が必要になるケースがあります。
そこで本記事ではFirebaseと組み合わせて、サーバー側でコードを実行できるCloud Functions for Firebaseについて解説します。
Cloud Functions for Firebaseとは
Cloud FunctionsはGoogle Cloudが提供するサーバーレスのクラウドコンピューティングサービスです。
類似のサービスとして例えばAWSのLambdaも有名ですね。
サーバーレスのCloud FunctionsはFaaS(Function as a Service)とも呼ばれます。
サーバーレスとは、物理サーバーが存在しないという意味ではなく、実際にはGoogleが管理しているサーバーを使用しているのですが、我々ユーザー側では全くサーバーの運用やスペックを気にせずに、コードを実行できるという意味になります。
本記事で紹介するCloud Functions for Firebaseは、Firebaseに最適化されたCloud Functionsのサービスで具体的には、
・コードによってファンクションを構成するFirebase SDK
・FirebaseコンソールおよびFirebase CLIとの統合
・Google Cloud Functionsと同じトリガーに加えて、Firebase Realtime Database、Firebase Authentication、Firebase向けGoogleアナリティクスの各トリガー
がサポートされています。
Cloud Functions for Firebaseの実装の手順は、以下のステップにより成り立ちます。
- Cloud Functionsの設定
- 関数の記述
- 関数のテスト
- デプロイとモニタリング
Cloud Functions for Firebaseで可能な処理
Cloud Functions for FirebaseではFirebaseおよびGoogle Cloudのイベントにアクセスでき、イベントドリブンなコード実行を行える点と、サーバー上でコード実行を行える特徴により、以下のような処理の実装に適しています。
・関連するイベントが発生したときにユーザーに通知
・データベースのサニタイズとメンテナンスの実行
・アプリではなくクラウドで集中的なタスクを実行
・サードパーティのサービスおよび API と統合
Cloud Functions for Firebase活用の具体例
Cloud Functions for Firebaseを活用することで、以下のようなタスクが実行できアプリのユーザー体験や機能を向上させることができます。
・コンバージョンイベントに対しての処理
例えばFirebase向けGoogleアナリティクスをイベントトリガーとすると、
- 商品を購入したユーザーに対して、クーポンコードを送信する
- 特定のイベントを発生したユーザーにたいして、アンケートの依頼を送信する
Firebase Authenticationをトリガーとすると、
- 新規に会員登録を行なったユーザーに対して、ウェルカムメールを送信する
- ユーザーアカウントが削除された際に、データベースから当該ユーザーを削除する
・リアルタイムデータベースの変更に対しての処理
Firebase Realtime Databaseをトリガーとすると、
- メッセージが投稿される、などデータベースの更新が起こった時に、通知を送信する
- データベースに書き込まれたデータに不適切なテキストが検出された場合に、テキストを更新してデータベースに書き戻す
・サードパーティAPIとの統合処理
- 天気情報を取得するAPIを呼び出して、アプリに表示する
- 支払い処理を行う
- 外部サービスからデータを取得してデータベースに保存する
Cloud Functions for Firebase活用の具体例②
・HTTPトリガーによるウェブフックの処理
- Slackチャンネルに通知やアラートを送信する
- Emailで通知やアラートを送信する
・ストレージの更新に合わせた画像ファイルなどの更新処理
- 新しい画像ファイルがCloud Storageにアップロードされた際に、既存画像の更新を行う
- Cloud Vision APIを使ってCloud Storageにアップロードされた不適切なイメージを修正する
・クラウド上での集中的なタスクの処理
- 未使用のアカウントの定期的な削除
- 一括メールのユーザーへの送信
- 定期的なデータの処理、集計
セキュリティ上気をつけるポイント
Cloud Functions for Firebaseでのコードの実行と運用においてセキュリティ上気を付けておくべき点について解説します。
・アクセス制御
Cloud Functionsはデフォルトでは誰でもアクセスできるようになっていませんが、より細かいアクセス制御を設定できます。Firebase Authenticationやカスタム認証を使用して、特定のユーザーまたは特定のロールに対してのみアクセスを許可できます。
・セキュアなコード
コード内にセキュリティホールがないかを確認しましょう。外部からの不正な入力を適切に処理し、SQLインジェクションやクロスサイトスクリプティング(XSS)などの攻撃を防ぐためのセキュアコーディングプラクティスを採用しましょう。
・APIキーの保護
外部APIを呼び出す場合、APIキーを含む敏感な情報をコードに埋め込まないように注意しましょう。Firebaseの環境変数やシークレットマネージャーを使用して、秘密情報を安全に保護しましょう。
まとめ
本記事ではCloud Functions for Firebaseについてその特徴と活用事例について紹介しました。
アプリケーション側に組み込めないコードを実行するために、従来では自前でサーバーを用意する必要があった点が、Cloud Functions for Firebaseによりすぐにサーバー側でコード実行できる環境を用意できるようになり、開発のスピード感の向上や、試験的な試みの実装など、とてもやりやすくなったと感じます。
特に近年サードパーティAPIとの連携や、リアルタイムなデータ処理が必須のアプリが多いため、Cloud Functions for Firebaseの出番も多いのではないでしょうか。本記事を読んで、Cloud Functions for Firebaseやサーバーレスのサービスについて興味を持っていただけたのであれば幸いです。
株式会社KUIXではGCPを用いたシステムの開発やコンサルティングを行っています。本格的なGCP環境の構築・導入をご検討される際は、ぜひ一度ご連絡ください!お問い合わせはこちらから

