59
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Google I/O 2023で発表されたFirebaseの新機能まとめ

Last updated at Posted at 2023-05-11

こんにちは。virapture株式会社でCEOしながらラグナロク株式会社でもCKOとして働いている@mogmetです。
mogmet.jpg
最近Subwayのフォトコンテストに参加するためにたくさんSubway食ってます。痩せそうです。

本日はGoogle I/O 2023で発表されたFirebaseの新機能について紹介致します!

Cloud Functions for Firebase

第2世代のCloud Functions for Firebaseを昨年リリースしました。
第2世代を使うと、単一のインスタンスが最大1000のリクエストを処理できるようになったことで、コールドスタートが減ってレスポンスを早くすることができます。

先月、第2世代のCloud FunctionsでFirestoreトリガーのプレビュー版が導入されました。

CleanShot 2023-05-11 at 06.55.24@2x.png

また、本日より第2世代Cloud FunctionsがGAになりました。
CleanShot 2023-05-11 at 06.56.50@2x.png

Cloud FunctionsでPython(public preview)をサポートするようになりました。
CleanShot 2023-05-11 at 06.57.21@2x.png

コード例

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対応しています。

CleanShot 2023-05-11 at 07.01.41@2x.png

Firebase Extensions

PaLM API Extensions

継続的な対話のためのチャットインターフェース、要約テキスト機能などの生成AI機能を提供できるPaLM APIを使用したチャットボットを提供できるようになりました。

CleanShot 2023-05-11 at 07.03.24@2x.png

デモでは、promptをいれると生成が始まり、
CleanShot 2023-05-11 at 07.07.05@2x.png

しばらくすると応答が帰ってきました
CleanShot 2023-05-11 at 07.07.56@2x.png

Build & Publish

誰でも独自の拡張機能を構築して公開できるようになりました。

CleanShot 2023-05-11 at 07.08.33@2x.png

CLoud Firestore

Cloud Firestore は、サーバーに触れることなく、モバイルアプリやウェブアプリのデータを大規模に保存、同期、クエリできるようにするNoSQLドキュメントデータベースです。

CountクエリのGA

昨年Countクエリを発表しましたが、これがGAになりました

CleanShot 2023-05-11 at 07.10.29@2x.png

OR Queriesの導入

今まではIn句やArray-Contains-Any句を使って複雑なロジックの検索を実装していました。

CleanShot 2023-05-11 at 07.11.06@2x.png

CleanShot 2023-05-11 at 07.11.25@2x.png

新しくORクエリーが実装されたことにより、複数のフィールドで複数の条件を組み合わせることができるようになりました。
例えば4つ星も含まれるホテルを検索する実装としては下記のようになります。

CleanShot 2023-05-11 at 07 20 36@2x

Order Byも組み合わせて使うことができます。

また、IN演算子も拡張して、最大30個の一致する値を検索できるようになりました。(以前は10個)

App Check

Identify Platformを使用したFirebase AuthenticationでもApp Checkが可能になりました。

CleanShot 2023-05-11 at 09.13.46@2x.png

UnityとC++でもAppCheckが対応しました。これによりチート対策もすることができます。

CleanShot 2023-05-11 at 09.15.00@2x.png

Replay Protection

Cloud Functionsのエンドポイントに対してリプレイ攻撃から守る機能を追加しました

CleanShot 2023-05-11 at 09.15.32@2x.png

Terraform

Firebaseの構築にTerraformを使って自動構築することができるようになりました。

CleanShot 2023-05-11 at 09.17.01@2x.png

すべての環境で統一したインフラ環境を提供することができます。

CleanShot 2023-05-11 at 09.17.27@2x.png

対応してるサービス一覧です。

CleanShot 2023-05-11 at 09.18.14@2x.png

例えばこのような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を実行することができます。

CleanShot 2023-05-11 at 09 32 55@2x

詳細はこちらを参照ください。

Firebase Hosting

サポートする動的フレームワークの追加

昨年Next.jsやAngular Universalなどの動的ウェブフレームワークをFirebase Hostingに簡単にデプロイできるようにしました。 
今年は、さらにAstro, SvelteKit, Nuxtのサポートを追加しました。

CleanShot 2023-05-11 at 09.40.19@2x.png

更に、Pythonが使えることになったことにより、Flask, Djangoのサポートも追加しました。

CleanShot 2023-05-11 at 09.41.16@2x.png

Dynamic Preview Channels

Firebase Hostingでは静的なhostingに対してのプレビュー機能が使えていましたが、動的フレームワークに関してもプレビュー機能が実装されました。

CleanShot 2023-05-11 at 09.41.16@2x.png

以前は最後にデプロイされたバージョンを指していましたが...

CleanShot 2023-05-11 at 09.44.20@2x.png
 
Cloud Functionsでhostingをデプロイするとリビジョンを相互にリンクすることができるようになりました。
CleanShot 2023-05-11 at 09.44.45@2x.png

Github Actionsでも作動してPRにコメントしてくれます。

CleanShot 2023-05-11 at 09.45.56@2x.png

下記はFlaskをデプロイするデモになります。

deployコマンドを実行するとFlaskアプリであることを検出して自動的にCloudFunctionを構築します。
CleanShot 2023-05-11 at 09 48 27@2x
CleanShot 2023-05-11 at 09.49.31@2x.png

静的コンテンツも自動的にCDNにアップロードされます。
CleanShot 2023-05-11 at 09 49 53@2x

詳細は下記を御覧ください。

Flutter

Flutter webのFirebase Hosting

Flutter Web に対する Firebase Hostingの公式サポートされるようになりました。

Android SDKの改善

Flutterで、Android SDKと同等の機能が使えるようになりました。
例えば、下記のような機能が使えます。

  • Cloud MessagingからBigQueryに配信指標をエクスポートしてキャンペーンを追跡する
  • Apple, Google, Githubサインインの使用
  • ServerTimestampBehaviorプロパティの使用

更に、バックグラウンドプロセスの活用や、初期化遅延を入れることでAndroidの起動が早くなりました。

CleanShot 2023-05-11 at 10.00.40@2x.png

App Quality Insights in Android Studio

App Quality Insights(以下AQI)はAndroid Studio Flamingoで安定版になりました。

CleanShot 2023-05-11 at 10.02.09@2x.png

更に、AQIからCloseする機能を追加しました。

CleanShot 2023-05-11 at 10.02.43@2x.png

他にも下記の機能を追加しております。

  • クラッシュに最適な対処方法を話し合ったりできるようにメモ機能
  • Crashlyticsシグナルによって問題をフィルターできるようになることで、何をいつ修正するかをより適切に優先順位付けが可能

CleanShot 2023-05-11 at 10.03.19@2x.png

Firebase App Distribution

アプリ内フィードバック

アプリ内フィードバックが追加されました。

CleanShot 2023-05-11 at 10.07.19@2x.png

アプリを振るだけでスクリーンショットを含むフィードバックを送信できます。

CleanShot 2023-05-11 at 10.08.04@2x.png

また、App Distributionフィードバック用にEventrcサポートを追加しました。
これを使えばSlackやJIRAなど、別のツールへ連携することができます。

Remote Config

Real-time Remote Config

新機能や修正などのアプリの変更を迅速に展開できるReal-time Remote Configを追加しました。

CleanShot 2023-05-11 at 10.10.45@2x.png

デモではSwiftUIを使って、色がすぐに変わるデモを実施しました。
下記のように、RemoteConfigの値を読み取ってボタンの色を変えるソースになっています。
CleanShot 2023-05-11 at 10.12.02@2x.png

Real-time Remote Configを使う場合はリスナーを登録します。
CleanShot 2023-05-11 at 10.13.00@2x.png
 
実際にコンソールで変更するとすぐに変更されることが確認できます。
CleanShot 2023-05-11 at 10.14.31.gif

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してみてね!

また、ワンナイト人狼オンラインというゲームを作ってます!よかったら遊んでね!

他にもCameconOffcha、問い合わせ対応が簡単にできるCSmart、フリーランスのコミュニティのNextFreelanceといったサービスも作ってるのでよかったら使ってね!

また、チームビルディングや技術顧問、Firebaseの設計やアドバイスといったお話も受け付けてますので御用の方は弊社までお問い合わせください。

ラグナロクでもエンジニアやデザイナーのメンバーを募集しています!!楽しくぶち上げたい人はぜひお話ししましょう!!

59
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
59
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?