Open1
【Google I/O 2023】What's new in Firebase
What's new in Firebase
Cloud Functions for Firebase (2:13~)
- 昨年第二世代の Cloud Functions のパブリックプレビューを公開
- リクエストのタイムアウトを設定して実行できる
- 最大32GBのメモリを搭載したインスタンス
- コンピュートリソースをより細かく制御できるので、function のコストとパフォーマンスをさらに最適化できる
- シングルインスタンスで複数のリクエストを同時にハンドリングできる
- コールドスタートの削減
- レイテンシーの改善
- コストが抑えられる
- 各 Cloud Function は最大1000リクエストを並列にハンドリングできる
- Cloud Functions は現在多くのイベントに応答できる
- 例
- Crashlytics のイベント
- Performance Monitoring のイベント
- 例
- 先月、第二世代の Cloud Functions に Firestore のトリガーがサポートされた
- 第二世代の Cloud Functions にパブリックプレビューとして Python がサポートされた
- Firebase CLI を使うと Cloud Functions を Python か Node のどちらかを選択して、Functions を使用するためのコードを生成してくれる
Firebase Extensions (7:13~)
- Google やサードパーティによってメンテナンスされたオープンソースの extension で、リッチなエコシステムを提供
- 例
- Full Text Search (Algolia)
- Manage Marketing (Mailchimp)
- Send Messages (Twillo)
- 例
- Extension は Google のサーバレスのインフラストラクチャ上に構築されるので、自動的にスケールされる
- 新しい Extension として PaLM API を使った chat bot がパブリックプレビューに
- Google の最新の generative language API と Firestore インスタンスを繋げる
- https://extensions.dev
- Extension の作成と公開が誰でもできるようになった(ベータ)
Firestore (10:37~)
- 昨年
count
のクエリのサポートを発表
Firestore では以前から In
と Array-Contains-Any
をサポートしている。
例えば以下のようなクエリで、neighborhood
が Chelsea
か SoHo
のレコードを取得できる。
val hotels = firestore.collection("hotels")
val snapshot = hotels.where(
Filter.InArray("neighborhood", listOf("Chelsea", "SoHo"))
)
今回 OR
クエリがサポートされ、複数のフィールドの複数の条件を組み合わせることができるようになった。
val hotels = firestore.collection("hotels")
val snapshot = hotels.where(
Filter.or(
Filter.InArray("neighborhood", listOf("Chelsea", "SoHo")),
Filter.greaterThanOrEqualTo("stars", 4)
)
)
orderBy
も組み合わせることができる。
val hotels = firestore.collection("hotels")
val snapshot = hotels.where(
Filter.or(
Filter.InArray("neighborhood", listOf("Chelsea", "SoHo")),
Filter.greaterThanOrEqualTo("stars", 4)
)
).orderBy("stars", Query.Direction.DESCENDING)
AppCheck (12:58~)
- AppCheck では Firebase、Cloud、カスタムのバックエンドリソースに対して未承認のアクセスから保護する
- AppCheck は多くの Firebase サービスを保護しているが、今日から Identity Platform を使用した Firebase Authentication を追加
- Unity と C++ の SDK が利用可能になった
- ゲームのチート行為からの保護
- Replay Attack の対策として Replay Protection がサポートされた
Terraform (15:16~)
- Firebase は Terraform をサポート
- Firebase Project
- Firebase Apps
- Cloud Firestore
- Cloud Storage for Firebase
- Firebase Realtime Database
- Firebase Authentication
- Firebase Security Rules (for Cloud Firestore and Cloud Storage)
- https://firebase.google.com/docs/projects/terraform/get-started
Web Frameworks (17:10~)
- 昨年、Firebase Hosting で Next.js や Angular Universal といった Web フレームワークのデプロイを簡単に行えるようになった
-
firebase deploy
コマンドを実行すると、CLI は自動的にどのフレームワークを使っているかを判定し、ビルドの実行、(必要に応じて)Cloud Functions の作成、その他の必要な設定のセットアップを行う
-
- Astro、SvelteKit、Nuxt のサポートを追加
- さらに Flask と Django の実験的サポートも追加
- 現在 Firebase Hosting に Preview Channel の機能がある
- サイトに異なるバージョンをデプロイでき、指定した時間以降に有効期限が切れるプレビューの URL が生成される
- これは静的なコンテンツしかサポートされていなかった
- そこで Dynamic Preview Channels をサポート
- Astro、Next.js、Angular Universal といったフレームワークで作られたサイトのプレビューを共有できるようになった
その他 (20:33~)
Flutter (20:33~)
- Firebase Hosting に Flutter Web をサポート
Android SDK の改善 (22:01~)
- Android SDK を改善し、Android の起動時間が速くなった(約3% でこれは 20ms 程度)
- 効率的なスレッドプール
- バックグラウンドワーカー
- 必要になるまで初期化処理を遅延
Android Studio (23:08~)
- 昨年の Google I/O で App Quality Insights で Crashlytics のクラッシュデータが確認できるようになった
- Android Studio Flamingo で App Quality Insights は stable channel になった
- 最新の Android Studio の Canary バージョンでは、コードナビゲーションを改善した
App Distribution (24:53~)
- In-App Feedback
- Android でサポート
- 端末を振るとベータテスターはフィードバックを送信できる
- スクリーンショットを含めることができる
- フィードバックは Jira や Slack などにも送ることができる
- Cloud Functions で通知を受け取って、Jira などに反映させるようにする
- https://firebase.google.com/docs/app-distribution/collect-feedback-from-testers#send-new-feedback-third-party-tools
Remote Config (26:34~)
- Real-time Remote Config
- リアルタイムの更新ができるようになった
- Android、iOS、Unity でサポート
private func setupRemoteConfig() {
let remoteConfig = RemoteConfig.remoteConfig()
remoteConfig.addOnConfigUpdateListener { configUpdate, error in
guard let configUpdate, error == nil else { return }
remoteConfig.activate()
}
}