こんにちは。virapture株式会社でCEOしながらラグナロク株式会社でもCKOとして働いている@mogmetです。
最近Subwayのフォトコンテストに参加するためにたくさんSubway食ってます。痩せそうです。
本日はGoogle I/O 2023で発表されたFirebaseの新機能について紹介致します!
Cloud Functions for Firebase
第2世代のCloud Functions for Firebaseを昨年リリースしました。
第2世代を使うと、単一のインスタンスが最大1000のリクエストを処理できるようになったことで、コールドスタートが減ってレスポンスを早くすることができます。
先月、第2世代のCloud FunctionsでFirestoreトリガーのプレビュー版が導入されました。
また、本日より第2世代Cloud FunctionsがGAになりました。
Cloud FunctionsでPython(public preview)をサポートするようになりました。
コード例
from firebase_functions import firestore_fn
@firestore_fn.on_document_created(document="announcements/{id}")
def notifyusers(event):
announcement = event.data
firebase_admin.initialize_app()
message = messaging.Message(
notification=messaging.Notification(
title='New announcement!',
body=announcement,
),
topic='announce-opt-in'
)
fcm_response = messsaging.send(message)
...
Firestoreでも全てのイベントでCloud functions対応しています。
Firebase Extensions
PaLM API Extensions
継続的な対話のためのチャットインターフェース、要約テキスト機能などの生成AI機能を提供できるPaLM APIを使用したチャットボットを提供できるようになりました。
Build & Publish
誰でも独自の拡張機能を構築して公開できるようになりました。
CLoud Firestore
Cloud Firestore は、サーバーに触れることなく、モバイルアプリやウェブアプリのデータを大規模に保存、同期、クエリできるようにするNoSQLドキュメントデータベースです。
CountクエリのGA
昨年Countクエリを発表しましたが、これがGAになりました
OR Queriesの導入
今まではIn句やArray-Contains-Any句を使って複雑なロジックの検索を実装していました。
新しくORクエリーが実装されたことにより、複数のフィールドで複数の条件を組み合わせることができるようになりました。
例えば4つ星も含まれるホテルを検索する実装としては下記のようになります。
Order Byも組み合わせて使うことができます。
また、IN演算子も拡張して、最大30個の一致する値を検索できるようになりました。(以前は10個)
App Check
Identify Platformを使用したFirebase AuthenticationでもApp Checkが可能になりました。
UnityとC++でもAppCheckが対応しました。これによりチート対策もすることができます。
Replay Protection
Cloud Functionsのエンドポイントに対してリプレイ攻撃から守る機能を追加しました
Terraform
Firebaseの構築にTerraformを使って自動構築することができるようになりました。
すべての環境で統一したインフラ環境を提供することができます。
対応してるサービス一覧です。
例えばこのようなTerraformを書くことで...
resource "google_firestore_database" "prod" {
provider = google-beta
project = google_firebase_project.prod.project
name = " (default)"
location_id = "name-of-region"
type = "FIRESTORE NATIVE"
concurrency_mode = "OPTIMISTIC"
depends_on = [
google_project_service.prod,
]
}
resource "google_firebaserules_ruleset" "prod" {
provider = google-beta
project = google_firebase_project.prod.project
source {
files {
name = "firestore.rules"
content = file("firestore rules")
}
}
depends_on = [
google_firestore_database.prod,
]
}
resource "google _firebaserules_release" "prod" {
provider = google-beta
name = "cloud. firestore"
ruleset_name = google_firebaserules_ruleset.prod.name
project = google_firebase_project.prod.project
}
terafformを実行することができます。
詳細はこちらを参照ください。
Firebase Hosting
サポートする動的フレームワークの追加
昨年Next.jsやAngular Universalなどの動的ウェブフレームワークをFirebase Hostingに簡単にデプロイできるようにしました。
今年は、さらにAstro, SvelteKit, Nuxtのサポートを追加しました。
更に、Pythonが使えることになったことにより、Flask, Djangoのサポートも追加しました。
Dynamic Preview Channels
Firebase Hostingでは静的なhostingに対してのプレビュー機能が使えていましたが、動的フレームワークに関してもプレビュー機能が実装されました。
以前は最後にデプロイされたバージョンを指していましたが...
Cloud Functionsでhostingをデプロイするとリビジョンを相互にリンクすることができるようになりました。
Github Actionsでも作動してPRにコメントしてくれます。
下記はFlaskをデプロイするデモになります。
deployコマンドを実行するとFlaskアプリであることを検出して自動的にCloudFunctionを構築します。
詳細は下記を御覧ください。
Flutter
Flutter webのFirebase Hosting
Flutter Web に対する Firebase Hostingの公式サポートされるようになりました。
Android SDKの改善
Flutterで、Android SDKと同等の機能が使えるようになりました。
例えば、下記のような機能が使えます。
- Cloud MessagingからBigQueryに配信指標をエクスポートしてキャンペーンを追跡する
- Apple, Google, Githubサインインの使用
- ServerTimestampBehaviorプロパティの使用
更に、バックグラウンドプロセスの活用や、初期化遅延を入れることでAndroidの起動が早くなりました。
App Quality Insights in Android Studio
App Quality Insights(以下AQI)はAndroid Studio Flamingoで安定版になりました。
更に、AQIからCloseする機能を追加しました。
他にも下記の機能を追加しております。
- クラッシュに最適な対処方法を話し合ったりできるようにメモ機能
- Crashlyticsシグナルによって問題をフィルターできるようになることで、何をいつ修正するかをより適切に優先順位付けが可能
Firebase App Distribution
アプリ内フィードバック
アプリ内フィードバックが追加されました。
アプリを振るだけでスクリーンショットを含むフィードバックを送信できます。
また、App Distributionフィードバック用にEventrcサポートを追加しました。
これを使えばSlackやJIRAなど、別のツールへ連携することができます。
Remote Config
Real-time Remote Config
新機能や修正などのアプリの変更を迅速に展開できるReal-time Remote Configを追加しました。
デモではSwiftUIを使って、色がすぐに変わるデモを実施しました。
下記のように、RemoteConfigの値を読み取ってボタンの色を変えるソースになっています。
Real-time Remote Configを使う場合はリスナーを登録します。
実際にコンソールで変更するとすぐに変更されることが確認できます。
Real-time Remote ConfigはAndroid, iOS、Unity2で利用できます。
まとめ
発表された内容のまとめです。
- Cloud Funtionsがpythonをサポート
- 独自のFirebase Extensionsが誰でも公開可能に
- FirestoreでORクエリーの導入
- App Checkの強化
- Terraform対応
- Firebase Hostingでの動的フレームワークの追加
- FlutterでのSDK強化
- App Quality Insightsの機能追加
- App Distributionでアプリ内フィードバックを追加
- Real-time Remote Configの追加
もぐめっと的にはようやくFirebase Extensionsが誰でも公開可能になったので、車輪の再発明がより一層減らすことができそうと感じております!
最後に、スノボの楽しく滑るコツを掴める cotsume というアプリを作ってます!よかったらDLしてみてね!
また、ワンナイト人狼オンラインというゲームを作ってます!よかったら遊んでね!
他にもCameconやOffcha、問い合わせ対応が簡単にできるCSmart、フリーランスのコミュニティのNextFreelanceといったサービスも作ってるのでよかったら使ってね!
また、チームビルディングや技術顧問、Firebaseの設計やアドバイスといったお話も受け付けてますので御用の方は弊社までお問い合わせください。
ラグナロクでもエンジニアやデザイナーのメンバーを募集しています!!楽しくぶち上げたい人はぜひお話ししましょう!!