🐓

Cloud Functions for Firebase 第2世代の新機能について

2022/12/08に公開

こんにちは。地図パズル製作所の都島です。今日は地図パズル製作所でも使っている Cloud Functions for Firebase の第2世代の新機能について紹介します。

元になっている公式のブログ記事は以下になります。

https://firebase.blog/posts/2022/12/cloud-functions-firebase-v2

あまり英語は得意ではないので、間違っていることなどありましたらコメントで指摘をお願いします!

Cloud Functions for Firebase とは?

Cloud Functions for Firebase とは Firebase にサーバーサイド処理を追加するためのものです。いわゆる Functions as a Service を作るための GCP のプラットフォーム Cloud Functions の Firebase 版です。

では、なぜ Firebase で Cloud Functions for Firebase が必要なのでしょうか。Firebase を使っているとサーバーサイドで処理を行いたい場合がたくさん出てくるからです。例えば、API キーが必要な API にアクセスしたいような場合です。API キーをクライアント側に持ってきてクライアントから API にアクセスするとセキュリティ的にまずいですので、こういうときは、サーバー側で処理する必要が出てきます。他にも、Firestore のデータを削除するときに、関わるデータも一括して削除したいような場合も Cloud Functions を使ったりします。

Cloud Functions for Firebase 第2世代とは?

Cloud Functions for Firebase 第2世代とは、簡単に言うと Cloud Functions for Firebase をより強力にしたものです。現在は Public Preview 版ということになっています。

具体的にどういうことが強力になったのかというと、関数インスタンスが一度に複数のリクエストを処理できるようになったこととか、Cloud Run 上に構築されるようになったこととか、今までタイムアウト時間が 9分だったのが1時間になったこととか、いろいろあります。

詳しく知りたい方は公式の情報を見てみてください。公式の情報はこちらにあります。

https://firebase.google.com/docs/functions/beta

ということで、そんな Cloud Run for Firebase 第2世代の新機能が先ほどの公式ブログに書かれていたので、自分なりにまとめてみました。

Cloud Functions for Firebase 第二世代の新機能

コールドスタートの減少

第1世代では、一つの関数インスタンスは同時に一つの処理しかできませんでした。そのため、一つの関数インスタンスのみが立ち上がっていて、それが使用されている状態で、新しいアクセスがあった場合は、前の処理が終わるまで待つ必要がありました。

でも、第2世代では一つの関数インスタンスで同時に複数処理できるため、コールドスタートが少なくなったようです。

新しいタイプのバックグラウンドトリガー

  1. 認証ブロッキングトリガー
    新しいユーザーが Firebase Authentication に保存する前などにトリガーできます。たぶん、今年の Firebase Summit で紹介されていたのと同じものだと思います。ドメインが @google.com のユーザーのみを登録できるようにする、なんて処理ができるようです。

  2. FirebaseAlerts トリガー
    アプリのクラッシュが大幅に増加した場合にアラートを出したりできるようです。あまりよくわかってないので、詳しくはこちらをご覧ください。
    https://firebase.google.com/docs/functions/beta/alert-events

  3. カスタムイベント
    インストールされたエクステンションが提供するイベントに応じて特定の処理がトリガーされるようにできるようです。

コードベースの導入とデプロイ時間の減少

Cloud Functions の関数を「コードベース」というものに分割できるようになったようです。「コードベース」というのは、関数をグループ化するためのものです。これによって、package.json をコードベースごとに分割できるので、各関数が依存するパッケージが少なくなって、コールドスタートが少なくなったようです。それだけでなくて、今までは firebase deploy を実行すると全ての関数がデプロイされていましたが、コードベースが導入されたことによって、変更があったコードベースのみをデプロイするようになったので、デプロイ時間が少なくなったようです。

define 関数

defineInt、defineString、defineSecretなどを用いて設定値を利用できるようになりました。これによって、設定値は型安全になります。

まとめ

今日は Cloud Functions for Firebase 第2世代の新機能についてまとめてみました。いろいろな機能追加があって、すごいですね。ということで、最後に Firebase を使って作られている地図パズル製作所の宣伝をして終わりにします。

地図パズル製作所では子供も大人も楽しめる地図パズルをたくさん公開しています。ぜひ楽しんでみてください!

https://chizu-puzzle.com

Discussion