Firebase Summit 2022 まとめ
Firebase Summitとは
Firebase Summitとは、Googleがモバイル(スマホアプリ、ゲームやWebサービス)開発者向けに提供している「Firebase」と呼ぶサービスの新機能やアップデート内容の発表のために年に一度開催される大きな発表会です。2022年はニューヨークからの生放送です。
当記事では、Summitの内容を翻訳し、関連する情報とともに提供するものです。筆者による雑翻訳ですので正確では無い部分も含まれております点を予めご了承ください。
参照元
この記事の大まかな内容はYoutubeのFirebase公式チャンネルにアップロードされている「Firebase Summit 2022 | Livestream」のアーカイブ、Firebase公式ブログ「What’s new at Firebase Summit 2022」を元にしています。
Firebase Hostingのアップデート
Firebase Hostingが著名なフレームワークで作成されたWebプロジェクトへ対応できる様になりました。最新のFirebase CLIへのアップデートが済んだ上で、対象となるフレームワークで作成されたWebプロジェクトのディレクトリ上でFirebase CLIを使用した操作(例:firebase init hosting、firebase deployなど)を行うと、プロジェクトの構成が捜査され、「対応フレームワークのプロジェクトである」と自動で認識、様々な設定・ビルド等が自動で行われる様になりました。
モダンなJavascriptフレームワークのサポート
現時点では、次の2フレームワークに対応していることが明言されています。ただし、初期のパブリックプレビューであり、Googleからは積極的なサポートを受けられない点は注意してください。
- Next.js
- Angular Universal
関連する内容として、Firebase Summit 2022 | Livestream 上にて、「Secure data on the server」と称したセッションの中で、動的WebフレームワークとFirebase Authenticationの2つを組み合わせたCookieベース認証の紹介もありました。Firebase Hostingが動的Webフレームワークに対応したことから、全てをFirebase上で行えることが取り上げられていました。
クライアントサイドビルドフレームワークのサポート
合わせて、次に挙げるクライアントサイドビルドフレームワークのサポートも行われていることがアナウンスされました。
- Vite
- Preact
- Lit
- Svelte
Cloud Firestoreのアップデート
Count() function (Developer Preview)
サブコレクションの数を数える機能がCloud Firestoreそのものに実装されました。
例えば、Web(Javascript)での利用の流れをご紹介すると、従来のCloud Firestoreからデータを引き出す処理(クエリ)に、getCountFromServer関数でラッピングを行う形をとる様です。
const firestore = getFirestore();
const featureGroup = collectionGroup(firestore, 'features');
const snapshot = await getCountFromServer(featureGroup);
const totalFeaturesCOunt = snapshot,data().count;
Count()にかかるコスト
Ask Firebaseのコーナーにて、Count()の実行にかかるコストは1000ドキュメント単位のバケットを使用しているとの言及がありました。1000ドキュメントに対して1read、1500ドキュメントならば切り上げられて2readとして数える計算とのことです。
Scalable BaaS (General Availability)
コア機能を改善し、大規模なトラフィックの急増によるアプリの拡張とサポートを容易にしたとのことです。(具体的にどんなことが行われたのかの資料が見つかりませんでした)
Time To Live ポリシー (General Availability)
データに利用期限を設け、自動で削除することができる機能、通称TTLが正式利用可能になりました。これにより、わざわざ開発者(運営者)がデータを削除する手間が省けますし、期間の切れたデータがなくなることでCloud Firestoreの維持費用を浮かせたりできるなどのメリットが生じます。
設定は、FirebaseコンソールのCloud Firestoreのページにて、パネルビューの右上にある「Google Cloudのその他の機能」をクリックし、画面を移動して行います。
TTLポリシーの性質は、以下の通りです。詳しくは公式ドキュメントをご参照ください。
TTLポリシーは、特定のフィールドを、特定のコレクショングループ内のドキュメントの有効期限として指定します。TTL を使用すると、古いデータをクリーンアップすることでストレージ コストを削減できます。データは通常、有効期限が切れた後 72 時間以内に削除されます。
Query Builder が追加
Keynoteでは取り上げられませんでしたが、FirebaseコンソールのCloud Firestoreのページにクエリビルダーと呼ばれるタブが追加されています。
このクエリビルダーでは、従来SDKを介して行なっていたFirestoreデータの取り出しをブラウザのみで簡単に確認できる様になっています。特定条件におけるフィルタリングなども可能で、今回追加されたCount()についても指定することが可能です。
クエリビルダー動作の様子
Firebase Authenticationのアップデート
Google Cloud Identity Platformと連携することにより様々な機能が追加されました。各機能についての詳細はこちらからどうぞ。
各機能の説明欄、青字リンク(プラットフォーム別詳細)が参考になります
なお、これらの機能の利用にはAutenticationのアップグレードが必要となります。追加の課金コストが生じる可能性もあるためご注意ください。
Identity Platform を使用する Firebase Authentication の料金体系は、基本プロダクトと異なります。アップグレードすると、無料(Spark)プランのプロジェクトでは、1 日のアクティブ ユーザーの上限が 3,000 人になり、従量課金制(Braze)プランのプロジェクトでは、1 か月のアクティブ ユーザー 50,000 人の無料枠を超える使用量には課金が発生します。アップグレードする前に、料金への影響を理解しておいてください。
アップグレードするとロックされている機能が利用可能に!
今回Keynoteでアナウンスされた主要な機能について、少しだけご紹介します。
Multi Factor Authentication
簡単に行ってしまえば多要素認証のことです。MFAと短く呼ばれます。アプリのユーザーに従来のサインイン方法でサインインを行ってもらった後に、2つ目の要素としてSMS(電話番号に対して6桁の文字列、6digit)を送信し、それらをアプリの画面に入力してもらう流れになります。
SAML and OpenID Connect providers
Firebaseで従来サポートしていなかったサインイン方法に対応できる様になります。SAMLはWebのみ、OpenID Connect はiOS,Android,Webで利用可能です。
意外と無料枠は少ない・・・
Blocking Functions
Authentication内部処理の特定部分に、Cloud Functions for Firebaseで作成した関数を挟むことが可能になりました。これを利用することで、サインアップやサインインの前にユーザーをチェックすることが可能となり、特定の条件を満たしていないユーザーをブロックすることなどが可能です。
Firebase Summit 2022 | Livestream 上では、サインアップ前に登録するメールアドレスに「@google.com」がつかない場合はサインアップできない処理を紹介しています。
import {identity} from "firebase-functions/v2";
export const blockauth = identity.beforeUserCreated((event) => {
const email = event?.data?.email || "";
if(!(email.includes("@google.com"))){
throw new identity.HttpsError(
"permission-denied",
"Only @google.com are allowed to register.");
}
});
User activity and audit logging
エンドユーザーのFirebase Authentication内部の操作や変化を示すUser Activityと、それに関するaudit(監査データ)を記録し、閲覧できる様になる機能です。この機能をONにしておけば、エンドユーザーの保有するアカウントに関して発生した問題をトラブルシューティングする際に役立ちそうです。
Cloud Storage for Firebaseのアップデート
Security rulesのCross server requests サポート(Cross Service Rules)
Cloud Storageのセキュリティルールに、他のサーバー(Cloud Firestore)へアクセスするための関数が追加されました。これによって、Cloud Storage上のデータを参照する際に、アクセス権を本人の認証だけでなく、Cloud Firestore上にあるデータの内容を踏まえて制限をかけることなどが可能になりました。
以下は、Firebase Summit 2022 | Livestream 上で表示されていたfirestore.get()関数を使用したセキュリティルールのサンプルです。
service firebase.storage {
match /b/{bucket}/o {
match release/{releaseID}/file/{fileID}{
allow write: if
firestore.get(/databases/(default)/documents/releases/$(releaseId)).data.author.uid == request.auth.uid;
allow read: if true;
}
}
}
Emulator Suiteのアップデート
ローカル環境でFirebaseの動作を確認できるエミュレーターが存在します。Firebaseの全てのプロダクトは利用できないまでもベータ版という形で多くのプロダクトが利用可能でした。今回のSummitにて、ベータ版となっていたものの中から正式に5つのプロダクトがGAとなりました。
- Cloud Firestore
- Realtime Database
- Cloud Storage for Firebase
- Firebase Hosting
- Authentication
Firebase Summit 2022 | Livestream 上にて、「Firebase Emulator Suite」と称して、エミュレーターのデモを行なっています。気になる方は一度眼を通してみてはいかがでしょうか?
Firebase Extensionsのアップデート
FirebaseのプロダクトやFirebase外部のソフトウェアやサービスを跨いだ複雑な機能を手軽にFirebaseプロジェクトに盛り込むことのできるFirebase Extentionsに新しいアナウンスがありました。
Extensions Marketplace が登場
既存のFirebase Extensions紹介ページを改め、Extensions Marketplaceとして新しくWebサイトがオープンしました。
様々なExtentsionの情報がカテゴリーやプロバイダー別にフィルタリングできるなど、探しているExtensionを簡単に絞り込める様になりました。今後もどんどん追加されるFirebase Extensionsを想定しての作りになっていると思われます。
Marketplaceという名称ではありますが、現時点ではまだ誰でもExtentionを作成・公開できるという状態にはなっていません。「自分でExtention作りたい!!」「我が社のサービスとFirebaseを Extentionで連携させたい!!」という方は、Provider Alpha programへの参加を求められています。
合わせて、複数のExtensionが新規に追加されていますので簡単にですがそれらをご紹介します。
Purchasely系 Extentions
Purchaselyは、アプリ内課金やサブスクリプションの機能を提供するSDKと管理ページを提供しているSaaSです。Apple App Store, Googe Play Storeをはじめ、Huawei App Gallery やAmazon App Storeなどの幅広いストアに対応した課金システムを構築できるとのこと。
Run In-App Purchases & Subscriptions with Purchasely
このExtensionを導入することでPirchaselyのシステムとエンドユーザーの課金情報をFirebaseを介して橋渡しが可能になります。Purchaselyへの開発者登録と設定に加え、以下のFirebaseプロダクトを使用します。
- Firebase Authentication
- Cloud Functions
- Cloud Firestore
詳細:Run In-App Purchases & Subscriptions with Purchasely
参考:Purchases公式ドキュメント(旧来の設定方法のドキュメントです)
Meilisearch系 Extentions
MeilisearchはRustで作られたOpenSourceのRESTfulな検索APIを持つ全文検索エンジンです。高速性、拡張性、多彩な機能を売りにしています。
Search in your Firestore with Meilisearch
このExtensionは、Cloud Firestore上のデータとクラウド上に用意したMeilisearchを連携させることで、Cloud Firestore上のデータに対して高速な全文検索を実現できる様になります。事前にどこかしらにMeilisearchの動作しているサーバを準備することに加え、以下のプロダクトを使用します。
- Cloud Firestore
- Cloud Functions
詳細:Search in your Firestore with Meilisearch Made
既に似たような全文検索を実現可能にするExtensionとして、Algolia、Elastic、Typesenseなどがありますのでより慣れ親しんだものの中から選べる様になったと考えると良いでしょうか。
Vonage系 Extentions
Vonageは、VoIP技術を活用した通信、通話サービスを提供しているプロバイダーです。Vonageの提供するコミュニケーションAPIを活用すれば、ビデオ通話機能をアプリに組み込むことなどが可能になります。
Create Multiparty Video Calls
このExtensionsは、Vonage Video APIと組み合わせてFirebaseにビデオチャット部屋やビデオチャットに参加するために必要な情報を生成します。JavaScriptとされているので、基本的にはWebアプリでの利用となるかと思います。事前にVonage Video Accountを取得することに加え、以下のプロダクトを使用します。
- Cloud Firestore
- Cloud Functions
詳細:Create Multiparty Video Calls
Invertase系 Extentions
Invertaseは開発者支援のためのツールやオープンソースソフトウェアの改良を専門とする企業です。Firebaseに関連する内容としては、React Native FirebaseやFlutterFireなどの開発に携わっています。Invertaseが関わったExtensionは外部APIにあまり頼らず、出来るだけFirebase上で完結しているものが多いです。
Image Processing API
このExtentionを導入すると、Cloud Finctions上に様々な画像加工を実現可能にする特別な関数が追加されます。元画像の保持・加工・処理のために以下のプロダクトを利用します。
- Cloud Storage
- Cloud Functions
詳細:Image Processing API
詳細:Invertase Firebase Extensions - Image Processing API
Export User Data
このExtensionを導入すると、Firebase上の様々なユーザーデータをGoogle Cloud Storage上へ出力する機能が利用できる様になります。次のプロダクトを使用します。
- Firebase Authentication
- Cloud Firestore もしくは Realtime Database
- CLoud Storage
- Cloud Functions
詳細:Export User Data
詳細:Invertase Firebase Extensions - Export User Data
Firestore Record Acknowledgments
このExtensionを導入すると、アプリ上で取り扱うエンドユーザーに向けた通知(notice)と通知に対する承認情報(Acknowledgment)に関する管理がFirestoreで行える様になります。
- Firebase Authentication
- Cloud Firestore
- Cloud Functions
詳細:Firestore Record Acknowledgments
詳細:Invertase Firebase Extensions - Firestore Record Acknowledgments
Firebase系 Extentions
公式からもExtensionが1種追加されています。
Firestore Bundle Builder
このExtensionを導入すると、たくさんのFirestoreのデータを取りまとめた「データバンドル」と呼ばれるデータをFirestorage上に生成・配置します。エンドユーザーが毎回Firestoreからデータを参照することに比べて、このデータバンドルを必要に合わせてダウンロード(更新がなければダウンロードをせず、エンドユーザー端末上のローカルキャッシュに存在するデータバンドルを利用)することでトラフィック容量を抑えることが可能です。例えば、eコマースアプリのトップページに記載する商品カタログリストなど、全てのエンドユーザーが必ず参照する情報などに対して利用すると良いのではないでしょうか。このExtensionでは次のプロダクトを使用します。
- Cloud Storage
- Cloud Functions
- Cloud Firestore
詳細:Firestore Bundle Builder
関連:Firestore Bundle Builder 拡張機能の使用
関連:Cloud Firestore データバンドル
Firebase Summit 2022 | Livestream 上にて、「Cache in a Flash: Building More Efficent Apps with Firestore」と称したセッションの中で、(Extensionの紹介ではありませんでしたが)上記のデータバンドルを使用した通信負荷軽減策の例を紹介しています。
Firebase Test Labのアップデート
Support for Gradle Managed Devices(preview)
Androidアプリの開発に使用するAndroid Studioで採用されているビルドシステムのGradle(のGradle Managed Devices機能)からFirebase Test Labが利用できる様になります。Android Studio + Firebase で開発を行なっているAndroidアプリ開発者にとっては良いお知らせですね。なお、この機能を利用するためにはAndroid Gradle Plugin 8.0.0へアップデートする必要があります。
参考:Gradle で管理されているデバイスを使用したテストのスケーリング
Firebase Crashlyticsのアップデート
App Quality Insights window
Google I/O 2022にて発表されたAndroid Studioで直接クラッシュ内容が参照できるという機能に追加のアップデートが入りました。Google I/O 2022にてFirebase Crashlytics(Firebaseコンソール側)に追加されたPlay TracksやSignalといったクラッシュをフィルタリングしたり分類分けする機能などがこちらのApp Quality Insights windowでも使える様になります。ただし、これらの機能を確認するためにはAndroid Studio Flamingoのカナリアリリースを利用する必要があります。
Flutter連携に関するアップデート
--split-debug-info サポート
アプリのサイズを小さくするために利用できるビルドオプションとして、「--split-debug-info」が追加されます。この機能により、Firebase Crashlyticsで拾い上げられるデバッグ情報(Stack trace)が非常にわかりやすくなるそうです。Androidに関してはすぐに、iOSに関しては数ヶ月のうちに追加される予定とのこと。
Firebase Remote Configのアップデート
Personalizationにて検知イベントの追加
Googleの有する強力な機械学習を利用し、エンドユーザーのユーザー体験を最大化するための機能であるPersonalizationにて検知できるイベントが追加されました。検知されるイベントは「_ value _of」と呼ばれます。この追加により、例えば「課金」の最適化について「購入回数」でしかPersonalizationできなかった内容が「購入金額」に対してPersonalizationできる様にもなったとのことです。
「合計」の選択肢が追加されています
終わりに
今回はセッションや発表内容毎の動画分割が最初からなかった(数日後に追加された)ため、6時間(うち、休憩2〜3時間程度?)のストリーム全部見ることになりました。個人的な環境起因かわかりませんが字幕もなぜかつかなかったので神経すり減ったよ・・・。
ここ最近は少しFirebaseから離れてしまっていたのでキャッチアップ大変でしたが今後も続けていこうと思います。皆さんの参考になれば幸いです。それではまた。
Discussion