🔥

Google I/O 2022 のFirebaseまとめ

2022/05/15に公開

Google I/O 2022

Googleでは毎年5月に開発者向けの、主力サービスの今までの成果や今後の新機能などの大きな発表が行われています。当記事では、先日2022年5月11日〜12日にかけて行われたGoogle I/O 2022の中で発表されたFirebaseに関連する情報のみを整理し、まとめたものです。筆者による雑翻訳ですので正確では無い部分も含まれております点を予めご了承ください。

参照元

当記事は次にあげる2点を中心に関連する内容をまとめたものです。

ここからは、セッション「What's new in Firebase」で発表の行われたトピックをその発表順で掲載します。関連するFirebase系の別セッションの内容なども該当トピックにぶら下げる形で掲載します。また、参考までに昨年度秋に開催されたFirebase Summit 2021をまとめた記事、Firebase Summit 2021 まとめなどもお読みいただけますと理解が深まるかと思います。

Firebase Extentions Events

Firebase Extentionsにて提供されている一部の拡張機能を対象に、その内部処理における様々な状態に対応したイベントを発行する機能、Firebase Extentions Eventsがリリースされました。このイベントを受け取って処理するカスタムハンドラーをCloud Functions for Firebaseに用意すれば、ユースケースに合わせた処理を開発者が独自につくれる様になると言うものです。

セッションでは、eショップ上における「毎月利用料を徴収する購読商品をやめたい会員を引き止める処理を自作する」例を紹介し、Run Payments with Stripe の拡張機能に提供されている「顧客が購読を削除した」イベントを発行。そのイベントが発火した時に「該当ユーザーへクーポンと共に購入継続を訴える可愛らしい犬の画像付きメールを送信する」の処理を実行するカスタムハンドラーをCloud Function上で実装しています。

現時点では、次のExtentionsのみのリリースですが、将来的に増えそうな予感がすごくします。

  • Run Payments with Stripe
  • Resize Images
  • Enable In-App Purchases with RevenueCat(新Extention。詳細は下記)

なおセッションでは明言されていませんでしたが、Firebase Extentions Events一連の動作を実現する裏側には、次に挙げるプロダクトが深く関係しています。

  • Firebaseのプロダクト
    • Cloud Functions for Firebase V2 API
  • Google Cloudのプロダクト
    • Eventarc
    • Cloud Run

このうち、Cloud Functions for Firebase V2については追って後述します。

新しいFirebase Extentions

新しいFirebase Extentions(以下、拡張機能)が複数追加されました。

SnapChat系 Extentions

"SnapChat"は、Snap Inc.の提供する海外で人気の「コミュニケーションに写真を使う」タイプのSNSです。可愛らしい幽霊?のアイコンが特徴的です。

SnapChat公式

Authenticate with Snap Login Kit

Firebaseによって作られたアプリへのログインやサインアップに、SnapChatのアカウントが使用可能になる拡張機能です。

Authenticate with Snap Login Kitの詳細
GitHub - Snapchat/snap-kit-firebase-extensions/tree/main/login-kit

Snapchat Sticker Generator

"SnapChat"で利用できるステッカー(custom Snapchat Camera sticker)をFirestore上にあるデータを使って生成し、Cloud Storage For Firebase上にpng画像として保存することが可能になる拡張機能です。合わせて、この拡張機能でも利用することになるSnap Inc公式の開発者向けプロダクトであるCreative Kitを活用すれば、"SnapChat"に存在する機能「Stories」(Spotlight?)上で共有できる特別な写真を生成して転送することも可能です。この時、前述のステッカーも付けた写真を転送するとよりユーザーへのアピールにつながりそうですね!

Snapchat Sticker Generatorの詳細
Creative Kitの詳細
GitHub - Snapchat/snap-kit-firebase-extensions/tree/main/sticker-generator

Stream系 Extentions

Stream社は、アプリへチャットやニュースフィードの機能を導入する際にフロントエンド、バックエンド双方で役立つ多数の機能を開発、提供している企業です。今回のアップデートでは、Stream社の有する強力な2つのサービスとFirebaseの連携を簡単に行うための拡張機能が追加されました。

Stream公式
Stream Blog - Announcing Stream Firebase Extensions for Chat and Feeds

Authenticate with Stream Chat

Firebase Authenticationでユーザー認証を行うだけで、Stream社のサービス"Stream Chat"にもユーザー認証が行える様になるという認証情報の橋渡しを自動化する拡張機能です。今までFirebaseプロダクトとStream Chat APIの双方を使用していたアプリでは、ユーザーの認証をFirebase Authenticationで行った後、Cloud Functionsなどを使用し、さらにStream Chat側のユーザー認証(認証トークンの発行)を行う処理を記述しなくてはなりませんでした。この拡張機能を導入することによってその手間がなくなるわけです。

Authenticate with Stream Chatの詳細
GitHub - GetStream/stream-firebase-extensions/tree/main/auth-chat

Authenticate with Stream Feeds

Firebase Authenticationでユーザー認証を行うだけで、Stream社のサービス"Stream Feeds"にもユーザー認証が行える様になるという認証情報の橋渡しを自動化する拡張機能です。流れとしては、前述のAuthenticate with Stream Chatと同じですが、"Stream Feeds"はニュースフィードの生成などに特化したサービスとなっています。

Authenticate with Stream Feedsの詳細
GitHub - GetStream/stream-firebase-extensions/tree/main/auth-activity-feeds

Sync Firestore with Activity Feeds

Firestore上に決まった構成のデータを用意することで、その内容が自動でStream社のサービス"Stream Feeds"へ同期されるという拡張機能です。同期されたデータからは、"Stream Feeds"サービス上で”Activity Feed”が生成されます。既存のFirebaseプロジェクトにニュースフィード生成機能を手っ取り早く導入したいというケースなどで有用そうです。

Sync Firestore with Activity Feedsの詳細
GitHub - GetStream/stream-firebase-extensions/tree/main/firestore-activity-feeds

Typesense系 Extentions

Typesenseは, 高い誤字耐性を有するオープンソースの検索エンジンです。適切な検索インデックスの準備が行われていれば、IDEに備わっているコード補完のような「入力文字に近似した文字列を含むデータ」が短時間で抽出可能になるというものです。

Typesense公式

Search Firestore with Typesense

Firestoreでのデータ作成、更新、削除などに合わせて、指定されたTypesense上にその内容が同期される様になる拡張機能です。これにより検索インデックスが自動で再構築され、常に最適化された文字列検索エンジンが利用可能になります。

注意点としては、利用前にTypesenseがインストールされたサーバーを用意する必要があることです。Typesense CloudなどのSaaSもあるのでこちらの利用を検討してみても良いかもしれません。

Search Firestore with Typesenseの詳細

RevenueCat系 Extentions

RevenueCat社の提供するサービス"RevenueCat"と連携した拡張機能が追加されました。
RevenueCatは、アプリ内課金や定期購読(サブスクリプション)などのマネタイズ処理の実装を助けるSDKとマネタイズ処理の監視を行うバックエンドを提供するサービスです。

Enable In-App Purchases with RevenueCat

この拡張機能を利用することで、FirebaseとRevenueCat間で次の2点をはじめとする様々な連携が可能となります。

  • RevenueCatによって収集された情報をFirestoreへ同期する
  • Firebase Extentions Eventsを利用することで、RevenuCatの検知した顧客情報の変化から様々なイベントを発行する

詳しくは次の関連リンクをご覧ください。RevenueCat公式ドキュメントはスクリーンショットも豊富で、かなり丁寧に解説がなされています。

Firebase ExtentionsがEmulatorで利用可能に

FirebaseのローカルエミュレーターでFirebase Extentionsが利用可能になりました。いくつかの注意点もあるため、下記のドキュメントを一度確認することをお勧めします。

Firebase Documentation - Use the Extensions Emulator to evaluate extensions

Firebase Hostingのアップデート

様々なWebアプリ開発用のフレームワークにFirebase Hostingが対応しました。簡単に説明すれば、Firebase CLIの「firebase deploy」コマンドを入力するだけで対応フレームワークによって開発されたアプリがFirebase Hosting上にそのまま展開されます。現時点では次に挙げる2種のフレームワークのみですが、今後増えるとのこと。

  • Next.js
  • Angular Universal

Firebase & Flutter 連携の強化

クロスプラットフォームなアプリが作成できる開発環境FlutterとFirebaseの親和性を向上させるアップデートが3種類行われました。

Firebase Crashlytics導入の簡素化

今までリリース環境別(Android,iOS,Web)にコードを埋め込む必要があり、複雑な導入手順が必要だったFirebase Crashlyticsの仕様を改め、Flutterの開発言語であるDartに最適化されたシンプルな導入が実現しました。

一部iOS,Androidのみで対応できていたエラーが広く検知可能に

過去、crash-free user metricsやvelocity alertsなどの一部ネイティブ環境でしか検知できなかったエラーが広く検知可能になりました。これにより、「特定環境のどこどこが・・・」という形ではなく、「Flutterアプリのどこどこが・・・」という形でクラッシュ状況を理解することが可能となり、問題点の素早い改善に取り組める様になります。また、Velocity Alertと呼ばれる設定を施すことができる様になり、設定した閾値を超えた際に、eメールやサードパーティ製の通知システムを介して開発者にアラートを通知できる様になりました。

Firebase Crashlyticsの分析機能刷新

Flutterアプリで発生したクラッシュ内容の分類わけや対応優先順位などを分かりやすくするための分析機能が刷新されました。

Monitoring your Flutter app's stability with Firebase Crashlytics

上記3点のアップデート内容を詳しく紹介している動画が公開されています。合わせてこちらも見てみると分かりやすいかもしれません。なお動画上では、Firebase公式上のFlutterに関するドキュメント(firebase.google.com/docs)を整理したとありますが、現時点ではまだ更新されていない様です。

https://www.youtube.com/watch?v=cIFLFpKTy7c

Swift言語への対応強化

モダンなSwift言語の機能にFirebaseが対応しました。これにより、コードの記述量が従来に比べて大幅に減るそうです。またSwiftUIを使用している場合、custom View Modifierを使用することでAnalyticsとの紐付けが簡単になったり、FirestoreQuery property wrapperを使用することでFirestoreと連携させたUI表示がスムーズにできるような更新も行われているそうです。

これらの更新はオープンなコミュニティにより改良され続けているものだそうで、現時点ではFirebase 8 SDKに対応していますが、今年中にFirebase 9 SDKへの対応を進めていくとのこと。インストールなどの詳細は以下のGitHubページをご参照ください。

Firebase App Checkのアップデート

昨年発表された新しいデータセキュリティの仕組みであるApp Checkに更新が入りました。

Play Integrity APIに対応

Android用のapp attestaion provider(もしくはattestation service)であるPlay Integrity APIにApp Checkが対応しました。

General availability

Betaがはずれ、ついに一般提供が開始されました。これを記念してか、Firebase公式のYoutubeにてFirebase App Checkプロダクトの紹介動画が公開されました。

https://www.youtube.com/watch?v=LFz8qdF7xg4

App Checkが気になった方、理解を深めたい方は合わせてドキュメントなどを読んでみてはいかがでしょう?

Firebase App Distributionのアップデート

モバイル開発者向けに提供されていたApp Distribution機能がアップデートされました。

General availability

App Checkに続き、Firebase App Distributionの一般提供が開始されました。

機能の追加

一般提供に合わせて次のような機能面の強化が行われています。

  • テスターのグループ分けと、任意のテストバージョンへのグループ紐付けの利便性向上
  • Firebaseコンソールと新しいAPIにより、大人数のテスターの管理が楽に
  • テスターに新しいテストバージョンがリリースされたことを通知する機能が追加(Beta)。Firebase Documentation - Notify testers about new builds

Firebase Performance Monitoringのアップデート

Real-time alertsのGeneral availability

Firebase Performance Monitoringに昨年追加されたReal-time alerts機能の一般提供が開始されました。一般提供開始に合わせて機能強化とUI強化も行われており、閾値を設定することや、アラートを次に挙げる形で表示分けすることが可能になり、利便性の良さが向上しています。

  • Custom code traces
  • Network calls
  • Screen renderings
  • Web page loads

動画:Optimize app helth with Firebase Performance Monitoring and Crashlyticにて、閾値設定についてのスタンダードや、リリース後のアプリで発生したパフォーマンストラブルをFirebaseコンソール上のFirebase Performance Monitoringの表示に合わせて改善を講じる流れについて紹介しています。

Firebase Documentation - Set up alerts for performance issues

Firebase Crashlyticsのアップデート

Flutterとの連携強化以外にもFirebase Crashlyticsに対するアップデートが行われています。

App Quality Insights window in Android Studio(Android開発との連携強化)

Firebase Crashlyticsでのクラッシュ検知内容が設定を紐づけているAndroid Studioに通知される機能がリリースされました。これによって、Firebaseコンソール(Webブラウザ)とAndroid Studio(開発環境)を交互に見比べたりする手間が減ったり、Firebaseコンソールのチェックし忘れなどが減ることが予想されます。現時点では、Android Studioのカナリアバージョンでのみ利用できるとのことなので、気になった方はそちらをどうぞ。

Android Studio - Preview release

Play Release Tracks in Crashlytics

Google Playに従来から存在するアプリのリリースバージョン区分け、"Play Tracks"(もしくはPlay Release Tracks)にFirebase Crashlyticsが対応しました。これにより、Androidでリリースされたアプリで発生しているクラッシュ内容のフィルタリングをリリースバージョン別で簡単に行える様になります。

動画:Optimize app helth with Firebase Performance Monitoring and Crashlyticにて、導入の流れと動作例が簡単にですが紹介されています。

その他

What's new in Firebaseでは取り上げられませんでしたが、それ以外に登場した情報に次の様なものがありました。

Firebase Hosting & Cloud Logging 連携機能

Firebase HostingとGoogle CloudのCloud Loggingが連携可能になる新機能がリリースされています。Firebaseコンソール上では、「プロジェクトの概要内にある統合タブ」や「Firebase Hostingプロダクトのページ」にて、チラッと主張されています。


FirebaseにおけるCloud Loggingの詳細

Auto alerts for Firebase users with Functions, Logging, and BigQuery

連携機能実装例として、複数のプロダクトを組み合わせて、Webアプリでユーザーに発生した異常状態のログを収集し、自動アラートメールを送信するデモが動画で紹介されています。

  • Firebaseプロダクト
    • Firebase Hosting
  • Google Cloudプロダクト
    • Cloud Function
    • Cloud Logging
    • BigQuery

https://www.youtube.com/watch?v=L8_7HCE83-k

Cloud Functions for Firebase V2 API(Public Preview)

Google Cloud側にて先日発表のあったCloud Functions Generation2に合わせて、Firebase用のCloud Fundtionsにも新バージョンであるV2のプレビュー版が発表されました。今までのCloud Functionsと異なり、次の様な部分が強化されたものになっています。

  • Cloud Runによってインスタンスが構築される仕様に変更
  • 1インスタンスで複数リクエストが対応可能に(上記、Cloud Run利用によるもの)
  • HTTPリクエストに対してCORS(クロスオリジンリソースシェアリング)オプションが指定可能に
  • Firebase Alert Triggerに対応可能に
  • Firebase Extentions用のカスタムイベントトリガーに対応可能に
  • タイムアウト時間が最大1時間まで拡張

Cloud Runについて知りたい方は動画:Running jobs on serverless with Cloud Run jobsをどうぞ。

なお、プレビュー版のCloud Functions V2には利用できるリージョンやトリガーに対応しているプロダクトが一部のみであるなどの制限もありますのでご注意ください。

Cloud Functions V2 public previewの詳細

また、従来のCloud Function for Firebaseとともに次の様な機能強化も入っています。

  • ローカルエミュレーター利用時とプロダクションリリース時の挙動切り分けを.envファイルを利用した環境変数設定によって実現可能(※)に
  • Cloud Task Queue 関数を利用することで、Google CloudのCloud Tasksプロダクトと連携可能に
  • Cloud Functions for Firebase用に記述したコードを任意のフォルダに分けて、参照することを可能にするコードベース機能が実装

※ 以下の動画ではこれをCloud Secrets Managerと呼んでおり、おそらく機能名のことかと思います。公式ドキュメントに当該キーワードについて明言している部分がありません。一瞬、Google CloudのSecret Managerプロダクトのことかと思いました。実際、Sercrets Managerと連携することで、.envファイルの内容をセキュアに管理もできます。

Build production-ready apps with Extensions, Functions, and Google Cloud

Cloud Functions for Firebase V2 APIなどを含んだ複数プロダクトを次の動画で紹介しています。

https://www.youtube.com/watch?v=77sMhsLB2qg

初学者向け解説動画

初学者向けに、Firebase導入のメリットを紹介した動画がいくつかリリースされました。(動画には今回発表された新要素を含んでいるため、紹介が重複しているものも存在します点ご理解ください。)

Secure your Firebase app from the start

モバイルゲームのリリースにて起こりうるセキュリティートラブルを例に、Firebaseのプロダクトを適切に利用することで対策が行えることを紹介しています。

  • Firebase Authentication
  • Security rules
  • App Check

https://www.youtube.com/watch?v=fgS3pyrGWvs

Optimize app helth with Firebase Performance Monitoring and Crashlytics

アプリリリース後に開発者に訪れる3つのステージについて紹介し、それをFirebaseのプロダクトが適切にサポートしてくれることを紹介しています。タイトルにもありますが、次のFirebaseプロダクトについて操作画面などを交えて紹介しています。

  • Firebase Performance Monitoring
  • Firebase Crashlytics

https://www.youtube.com/watch?v=ENaOg5YefjQ

How to ship stable Features with Firebase

アプリの新機能をリリースする際に開発者が感じる不安をFirebaseの各種プロダクトを利用することで軽減しましょう!という趣旨の動画です。動画内では、次のFirebaseプロダクトについて操作画面などを交えて紹介しています。

  • Firebase App Distribution
  • Firebase Crashlytics
  • Firebase Remote Config

https://www.youtube.com/watch?v=lAnt5sl3jaM

Integrate Firebase into your team's development workflow

新規Webブラウザゲームの開発初期段階〜リリースまでを例に、Firebaseと諸機能を組み合わせることで生まれる効果的なチーム開発テクニックを紹介する動画です。この動画では、次の要素が登場します。

  • ローカルエミュレーターを使用した高速なプロトタイプリリース
  • Deploy to Firebase Hosting GitHub Actionsを利用した進捗共有
  • GitHub workflowとローカルエミュレーターを組み合わせたCI環境構築
  • Pricing calculator(料金計算機)を使用した運用経費の試算
  • Billing budgetを使用した経費アラートの設定

https://www.youtube.com/watch?v=tLN-A3kBn7Y

Create better user experoences with Remote Config for advanced app personalization

Remote ConfigとAdMobを組み合わせて収益効果を高めるために、Personalizationを使用することを勧めている動画です。動画後半では、Firebaseコンソールから実際にPersonalizationを設定する流れをステップバイステップで実演しています。

https://www.youtube.com/watch?v=nRQwJV1iMKs

終わりに

興味深い更新が多く、開発者側への深い理解を感じることのできるアップデートばかりですね。個人的にはCloud Functions V2が一番興味深かったのですが・・・。今後のFirebaseにつながるような機能やアップデートの紹介も多く、秋のFirebase Summitも楽しみです。

間違いや漏れなどがある様でしたら是非ともご教授いただけますと幸いです。

Discussion