Firebase Summit 2021 まとめ
Firebase Summitとは
Firebase Summitとは、Googleがモバイル(スマホアプリ、ゲームやWebサービス)開発者向けに提供している「Firebase」と呼ぶサービスの新機能やアップデート内容の発表のために年に一度開催される大きな発表会です。かつてはチェコのプラハやスペインのマドリードなど国や場所を変えて大々的なイベントとして開催しておりましたが、昨今の情勢を踏まえて2021年はオンライン開催という小規模な発表会となった様です。
当記事では、Summitの内容を翻訳し、関連する情報とともに提供するものです。筆者による雑翻訳ですので正確では無い部分も含まれております点を予めご了承ください。
11/13 AppCheck,Firebase Crashlytics,Google Analyticsを加筆しました。さらに、Ask Firebase内で議論された内容を関連項目へ反映しました。
参照元
この記事の大まかな内容はYoutubeのFirebase公式チャンネルにアップロードされている「Firebase Summit 2021」のアーカイブ、Firebase公式ブログ「What’s new at Firebase Summit 2021」を元にしています。
Firebase Extensionsのアップデート
Firebase Extensionsは、既存のFirebaseプロジェクトに少ない操作で"拡張機能"を加えるというプロダクトです。ここで追加される"拡張機能"は、Firebase内部の既存プロダクトを組み合わせて実現されたものもあれば、Google社外の製品と連携して実現されるものも存在します。
数年前に発表されたFirebase Extensionsはだんだんとその"拡張機能"のバリエーションを増やしており、昨今は信頼と実績を獲得しているGoogle社外の製品と連携したWebサービス向け"拡張機能"の追加に力が入っているようです。
Run Payments with Stripe
決済サービス大手のStripeの有するStripe APIと連携した拡張機能に追加アップデートがありました。大きな更新としては、次の2点です。
- 一括払い対応(one-time payments)
- 15種に及ぶ様々な支払い方法が選択可能に(15 different payment methods)
その他にも、"定期払い"(recurring payments)も今年中に対応予定とアナウンスがなされています。
Stripe SDK
合わせて、このExtentions用にクライアント側のコードで利活用できるSDKも提供を開始したそうです。
Firestore Stripe Payments Web SDK
ShipEngine系Extensions
ShipEngine社の提供するサービス"ShipEngine"と連携したExtensionsが多数追加されました。
ShipEngineは様々な配送業社の配送APIをラップするサービスで、社の提供するShipping APIを開発に導入することで、国際輸送や商品管理をShipEngineの元で一元管理できるようになるというものです。
ShipEngineが対応可能な配送会社のリストを見たところだと、現時点ではUS,Canada,Mexicoなどの北米とUKは強力にサポートされている様子。各国の配送事情というのもあるかと思いますが、日本企業の参入やグローバルに活躍する配送会社の参入・躍進に期待したいところ。(筆者がロジスティクスに疎いので詳しい人情報ください)
Calculate Shipping Rates with ShipEngine
配送先情報を元に配送会社別に配送料金と配送日数の計測を行ってくれる拡張機能。利用可能な計測結果がリストで生成され、この情報をユーザーに提供することで、ユーザーが候補の中から、”安さ重視”や”速度重視”で自由に配送業社の選択を行うことを可能にします。
Calculate Shipping Rates with ShipEngineの詳細
Purchase Shipping Labels with ShipEngine
利用する配送会社のフォーマットに沿う形で配送情報が自動入力されたラベル(伝票)の画像を生成する拡張機能です。
Purchase Shipping Labels with ShipEngineの詳細
Track Shipping Labels with ShipEngine
配送元から配送先に到着するまでの配送状況のトラッキングする拡張機能。ShipEngine側で配送状況の変化が起きたことをトリガーにFirestore上にその情報を書き込む。
Track Shipping Labels with ShipEngineの詳細
Validate Addresses with ShipEngine
配送先検証を行ってくれる拡張機能。これによって、住所記載方法の異なる国際配送などで配送先未着による返品を防ぐなどの効果が高まります。配送先検証には日本(Japan)も含まれているため、配送会社が日本への配送に対応していれば、この拡張機能を使って日本向けの配送も行いやすいかもしれません。
Validate Addresses with ShipEngineの詳細
Twilio系Extensions
Twilio社の提供するクラウドコミュニケーションプラットフォームTwilioと連携した拡張機能が複数追加されました。Twilioは、APIを通して電話の送受信制御、SMS送受信などを行えるサービスで、日本ではKDDIウェブコミュニケーションズが代理店となっています。SendGridのメールは1月1万件程度であれば無料利用できるようですが、SMS送信は1回あたり$0.08程度徴収されるようです。メッセージ送信だけで見れば"Send Messages with MessageBird"と呼ばれる拡張機能も存在しています。
Twilio Blog - Introducing Firebase Extensions for Twilio
Twilio Docs - Firebase Extensions
GitHub - twilio-labs/twilio-firebase-extensionsPublic
Send Abandoned Cart Reminders with SendGrid
カート内に商品を放り込んだままのユーザーに対して、メール配信サービスSendGrid(Twilio SendGrid API)を介した購入促進メールを配信する拡張機能。
Send Abandoned Cart Reminders with SendGridの詳細
Send Messages with Twilio
Firestoreにメッセージが書き込まれたことをトリガーにTwilioの提供するProgrammable Messaging APIを利用してメッセージを送信する拡張機能。メッセージはSMSなどで送信先に届く。
Sync Contacts with SendGrid
SendGrid(Twilioが2019年に買収)の"SendGrid Marketing Campaigns"上のコンタクトリストをFirestore内のデータ追加や削除に合わせて同期させることのできる拡張機能。これによって、メールマーケティングの対象ユーザーをFirebaseで制御できるようになります。
Sync Contacts with SendGridの詳細
Make Payments with Google Pay
Google Payを使った支払い機能をプロジェクトに追加できる拡張機能です。Google Payの機能を導入する場合は、Google Payに対応している決済代行会社と契約し、その会社のAPIを利用したプログラムを作成することが一般的です。この拡張機能を使用すると、Google Payから発行される支払いトークンがFirestoreにパスされ(書き込まれ)、それをトリガーにあなたが契約している決済代行会社のAPIに支払いリクエストが自動で飛ぶようになります。
現時点では次の決済代行会社が対応しているようです。
日本で使用する場合は、日本拠点のある"Adyen","Cybersource","Square"などが候補に上がるでしょうか?各代行決済代行会社毎に契約料金も異なると思います。
Make Payments with Google Payの詳細
Search with Elastic App Search
FirestoreとFirebase外部のElastic App Searchを使って全文検索を可能にする拡張機能です。Firestoreへ新たに情報が書き込まれると、それをトリガーにCloud FunctionsがElastic App Searchとその情報を同期します。全文検索では、"Search with Algolia"と呼ばれる拡張機能も既に存在していますが、Elastic App SearchはOSSのElastic Enterprise Searchに含まれている製品のため、自身で用意したインフラ環境が利用できる点が魅力となりそうです。
Search with Elastic App Searchの詳細
その他
Ask Firebase内で次の内容が言及されています。
Cloud Secret Managerとの連携
今回追加されたExtentionsには"secrets"と呼ばれるパラメーターが用意されており、TwillioをはじめとしたGoogle外部サービスのAPIキーをユーザーから隠蔽することが可能です。原理としては、Google CloudのSecret Managerを使用しているそうです。
ext exportコマンド(Firebase CLI)
Firebase CLIに利用中のFirebaseプロジェクト上にインストールされている拡張機能を出力するコマンド"ext export"が追加されます。実行すると、firebase.jsonファイルに拡張機能の内容が出力されるとのこと。記載内容をバージョン管理システムの管理下に置けば、開発の引き継ぎ時などに役立ちそうです。
Cloud Shellなどでひとまず確認したところ、ver9.21.0では未実装でドキュメントにもまだ情報がありません。
ext exportは未実装
AppleTV(tvOS)とMac(macOS)の公式サポート(BETA)
Apple TV(tvOS)とMac(macOS)がFirebaseのサポート対象になりました。これによって、Firebaseを利用しているアプリのクロスプラットフォーム対応がますますスムーズになるとのことです。
Apple Platform Support(BETA)
AppleTVが公式サポートに加わったことと合わせて、Firebase C++ SDKのサポート対象にAppleTVが加わりました。これにより、Apple Arcadeのゲーム開発にFirebaseを利用することができるようになりました。
Cloud Firestore for Unity and C++!
Apple環境への対応と合わせて、なんとCloud Firestoreがゲーム開発環境でも利用可能になりました。Firestoreを利用することで、次の要素をゲームに盛り込むことができます。
- リアルタイムに近い形でのローカル(クライアント)とネットワーク(サーバ)のデータ同期
- オフラインとなった場合でもデータを保持、再度オンライン時に自動でデータ同期を再開
- 多くのプレーヤー間で瞬時のデータ共有
Crashlytics NDK と Unity対応の強化
複雑な要因で発生するアプリの"クラッシュ状況"を適切にレポートし、Firebaseコンソール上に表示するChraslyticsのゲーム開発環境対応が強化されました。まずはiOS対応、近日中にAndroid対応もされる予定とのこと。
関連
Crashlytics Native Debelopment Kit(NDK) SDK
Crashlytics NDK SDKへアップデートが入りました。次の3点に強化が入っています。
- Reliability : クラッシュレポートの仕組みを"Breakpad"から"Crashpad"へ置き換え。効果として問題のカテゴリー分けが可能に。
- Quality : より詳細な原因が表示されるように。詳細事項から問題の根本原因の追求が可能に。
- Ease-of-use : Crashlytics NDK SDKの導入がよりシンプルに。
Crashlytics Unity SDK
IL2CPP Support
Unityでは、C#をIL2CPP(Intermediate Language To C++)と呼ばれる仕組みを用いてC++のコードに変換し、それをAndroidやiOSネイティブの変換方法でアプリに変化させることができます。しかし、前述の構造上、スタックトレースを行うこと(バグが発生したときに、結局どこのC#コードが悪かったのか把握すること)がかなり難しいという現実がありました。今回のアップデートでは、これらの問題にかなりメスを入れており、結果として非常にわかりやすいクラッシュレポート表示ができるように改善されました。
Issue Prioritization
クラッシュレポートが出たときに、同じ項目が複数回(多い時は数十回以上)報告されるケースがあります。この中から優先的に取り組むべき問題を探すのは中々骨が折れます。そこで、Crashlyticsでは同種のクラッシュ内容を一まとめにするように機能改善されました。これで、レアケースなバグなのか多くの端末で起きているバグなのかの判別も行いやすくなりそうです。
Crash Metadata
例えば、ユーザーの端末解像度が起因でゲームがクラッシュする特殊なケースがあります。こう言った場合に、どんな解像度だったのか、どんなグラフィックボードの設定が行われていたのかを調査する必要があります。通常は、これらの情報を取得するためにキーを埋め込み、その情報を転送することで判断していましたが、今回のアップデートで端末固有のグラフィックス情報をCrashMetadataという形で自動収集し、表示できるようになりました。
DartPad support for Flutter and Firebase
オンラインコーディングツールのDartPadにて、Cloud FirestoreとFirebase Authenticationが対応しました。他のプロダクトも近日中に対応可能にする予定があるとのこと。インターネット環境とWebブラウザさえあればローカル環境の縛りを受けずにFirebaseの動作確認をすることなどに使えそうです。
DartPadのFirebaseサンプルの動作画面
App Check(BETA)のアップデート
5月に開催されたGoogle I/Oにて発表されたAppCheckは、Firebase Authenticationプロダクトやデータベース系プロダクトの持つSecurity Rules機能に続く、新しいデータセキュリティーの仕組みです。
次の3種類のバックエンドリソースを扱うプロダクトを保護対象に"あなたの開発したアプリやあなたのWebサービス(ドメイン)"の外からの直接アクセスを防ぐ仕組みを実現するというものです。
- Cloud Storage
- Realtime Database
- Cloud Functions for Firebase
今回はこのApp Checkに3つの大きな要素を含んだメジャーアップデートが実施されました。
Cloud Firestore
App Checkの保護対象プロダクトにCloud Firestoreが追加されました。
Custom Backend Resources
Firebase以外のバックエンドリソースに対してもApp Checkが利用可能になりました。
仕組みとしては、まずクライアント(アプリやWebサービス)からAttestation Providerを利用して認証を完了します。これによってトークンが発行されるので、そのトークンをHTTPリクエストに埋め込んで目的のサーバーに転送します。サーバーではNode.jsとNode.js Admin SDKを利用して、HTTPリクエストから抽出したトークンを判定する処理を記述する形です。詳しくは前述の動画を参照してください。
またこの機能を活かすことで、単純なバックエンドリソースだけでなく自作APIの動作が間違いなく"あなたの開発したアプリやあなたのWebサービス(ドメイン)"から行われることを保証することも可能となります。今回の発表では、API管理プラットフォームのApigeeやCDNのCloudflareと組み合わせることでよりよく活用できると紹介されています。
Attestation Providersの追加
今までアプリやWebサービスの正規ユーザーであることを確認するために利用されていた"Attestation Provider"に2つのプロパイダーが追加されました。
従来 | 変更後 |
---|---|
SafetyNet(Android) Device Check(iOS) reCAPTCHA v3(Web) Custom Attestation |
SafetyNet(Android) Device Check(iOS) reCAPTCHA v3(Web) Custom Attestation(その他) App Attest(iOS) reCAPTCHA Enterprise(Web) |
今回の新規プロパイダー登場で、同種の端末を対象に「どのプロバイダーを使用すれば良いのか?」という疑問が生まれますが、選択の基準として次の点を考慮してください
Attestation Provider | 判断点 |
---|---|
App Attest(iOS) | iOSのv14以上でないと利用できない。認証の強度はDevice Checkよりも高い。Device CheckやCustom Attestationと併用可能。 |
reCAPTCHA Enterprise(Web) | 利用には契約と料金が発生。手厚いサポートとSLAが得られる。ビジネスユーズ。reCAPTCHA v3とどちらか一方を選択。 |
プライバシーと透明性への対応
動画アーカイブでは"Our commitment to transparency"、公式ブログでは"Detailed documentation for upcoming Google Play Safety policies"という形でピックアップされた内容です。
世界各国で個人情報に対する取り扱いやその透明性を明らかにする法整備が進められていく中、各企業もユーザーからどのような情報を収集して、どのように利用しているかを説明しなければなりません。Firebaseにはユーザー情報を収集しているプロダクトが存在するため、Firebaseを利用している開発者(及び企業)は、ユーザーから説明責任を問われることもあるかも知れませんし、Firebaseの提供元であるGoogleに準拠した情報公開を行っていく必要性が生じています。
Firebaseでは、今後このような"プライバシーと透明性"に対しての詳細なドキュメントを来年中にローンチする予定があるそうです。例えば、開発者が必要な場面でそれらの情報を提示できれば、一般ユーザーが安心してあなたのアプリやWebサービスを利用できるようになります。
Firebase Performance Monitoringのアップデート
Firebase Performance Monitoringに新機能が追加されました。
Performance Alerts(BETA)
Performance Alertsはリアルタイムにあなたのアプリユーザーの起動時間を計測し、指定した起動時間をオーバーしたユーザーが増加した場合に、開発者であるあなたにメールを寄越す機能です。
例えば、リリースして初めて問題が顕在化することがあります。それは、地域・使用端末・ネットワークなどの複雑に込み入った"ユーザーのアプリ利用環境"に起因する問題で起きているのかも知れません。こう言った場合に、Performance AlartsをFirebaseコンソールから事前に設定しておくことで、早期に調査・修正を行う環境を作れるようになります。
そう遠くないうちに、他のタイプのアラートも追加の予定があるとのこと。
Firebase Crashlyticsのアップデート
先ほど、Apple系OSへの対応とゲーム関係の対応強化に関わるCrashlyticsのアップデートを紹介しましたが、さらに2つの追加機能がアナウンスされました。
Application Not Responding(ANR) reporting
FirebaseコンソールのCrashlytics画面にて、"応答なしによるアプリ強制終了"へ関連した問題点の情報が記載されるようになりました。
調査の結果、Android端末上の"応答なしによるアプリ強制終了"が、意図しないアプリ終了理由の50%を占めることがわかっており、この情報が表示されることによってピンポイントで修正点の判断つき、素早い対策が取れるようになったとのことです。
Signals
特徴的な問題(Issue,クラッシュやANR)に対して次の3種のタグ付けがなされるようになります。これによって、開発者が優先して対処すべき問題を適切に理解できるようになります。
- Fresh(緑) : 直近7日以内に新規に登場した問題
- Early(青) : アプリ起動時に高確率で発生している問題
- Repetitive(紫) : ユーザー毎に繰り返し発生している問題
タグ付けされた問題点だけを表示するフィルタリングも可能です。
Issues左上のフィルタリング項目を選択したところ
Google Analyticsのアップデート
いくつかの関連プロダクトの更新に合わせて、それらがGoogle Analyticsプロダクトで観測、分析できるようになるアップデートが行われました。
Ad revenue measurement
異なる広告収益プラットフォームをFirebaseにて試験的に利用できるようになり、それらをGoogle Analyticsのレポートで確認できるようになります。
例えば、"A/B Testing"プロダクトを利用して広告収益目標値を設定した後、AdMobに加えて他社を比較対象として選択することが可能です。動画では、次の広告会社名が挙げられていました。
Predictive audiences
課金傾向の強いユーザーや脱退しそうなユーザーを予測し、セグメント分けし、わかりやすく表示する機能。Firebase Cloud MessagingやFirebase In-App Messagingなどと組み合わせて対象セグメントに含まれるユーザーへ通知を出したり、クーポンを配るなどの対策が適切に取れるようになります。
Unified campaign management(BETA)
Firebaseコンソール上におけるFirebase Cloud MessagingとFirebase In-App Messagingの2つが1画面に統合され、双方が使いやすくなるようにUIがリデザインされました。
Firebase Remote Configのアップデート
Remote Configが使いやすさに焦点を当てたアップデートが行われました。
Personalization
5月に開催されたGoogle I/Oで告知済だったPersonalizationがいよいよBETAになりました。PersonalizationはGoogleの強力な機械学習技術を使ってユーザー毎に最適な体験を与えることを可能とする機能です。
"最適化"と聞くと、"A/B Testing"も似たような機能ですが、決定的に異なる点も複数存在します。以下に特徴的な違いを挙げておきますが、詳細はマーケティングの得意な方にお譲りします。
Personalization | A/B Testing |
---|---|
個人に対する最適化が得意 | 集団に対する最適化が得意 |
ある目的に最大限近づけたいときに利用 | ある決断による効果を最大限に伸ばしたいときに利用 |
Core improvements
Remote Config利用の軸となっていた部分を大幅に改修、機能改善がされました。次のような内容にメスが入っています。
- Remote Config用のパラメータ作成フローを理解しやすい形に改善
- Datatypeを追加(ユーザーへ"悪い値"を間違って送ってしまうリスクを低減)
- 更新履歴の表示を改善
その他
今回Apple TVをはじめとしたApple関連の多数のOSサポートがアナウンスされていましたが、Remote Configにおいては、まだそれら新規OSを対象にすることはできません。今後のアップデートをお待ちくださいとのこと。
まとめ
ひとまず関連情報とともにまとめてみました。近いうちに新発表された内容から筆者の環境ですぐに触れそうなモノがあれば、それを検証した記事を投稿してみたいと思います。
Discussion