Firebase Summit 2022で発表された新機能をまとめ紹介

こんにちは。[virapture株式会社](https://virapture.com)でCEOしながら[ラグナロク株式会社](https://ragna-rock.com)でもCKOとして働いている[@mogmet](https://twitter.com/mogmet)です。
![mogmet.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/28f0d406-8e01-7c60-bab9-7d8763dc1fcc.jpeg)
最近大きいライフイベントが起きて忙しい毎日を送ってます。

本日はFirebase Summit 2022で新機能がいくつか発表されたのでその内容について共有させていただきます。

主な内容は下記から引用しております。

https://firebase.blog/posts/2022/10/whats-new-at-Firebase-Sumit-2022

https://www.youtube.com/watch?v=LR7JIsxKpBU&t=1630s

では早速紹介します！

## Firebase HostingでWebアプリをデプロイ

Next.jsやAngular Universalなどの動的なWebフレームワークを簡単にデプロイできるようにすることができるようになりました！

https://firebase.google.com/docs/hosting/frameworks-overview

firebase deployを実行するだけで使用しているフレームワークを自動的に検出し、ビルドを実行し、必要に応じてCloud Functionを生成し、必要な構成をセットアップしてデプロイ全体を処理します。
また、Vite、Preact、Lit、Svelte などのフレームワークを使用したクライアント側ビルドのサポートも追加しました。

![deploy](https://firebasestorage.googleapis.com/v0/b/first-class-blog.appspot.com/o/posts%2Fwnif2022-firebase-deploy.gif?alt=media&token=f518a160-56f6-47bb-9abe-45f1a9a5b7e1)

`firebase experiments:enablewebframeworks`を実行することで機能を有効化できます。

## Firestoreの新機能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/e6a16dcb-6ccd-0970-9716-d50b70be5dba.png)

3つの新機能が追加されました。

### Count() 関数

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/84b17963-d3c6-8768-d46b-b4c99a04a580.png)

実際のドキュメントを読み込まずに、クエリを実行したり、コレクションから読み取ったりするときに、一致するドキュメントの数を取得できるようになりました。

web sdkではgetCountFromServerという関数が追加されているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/b48baa03-f45e-a872-612c-ce0d665ec02a.png)


こちらは以前もぐめっとの記事でも紹介しているのでご参照いただけたら幸いです。

https://qiita.com/mogmet/items/2a2498d89a0c33bb6ff7

### スケーラブルな BaaS

Firestoreのコア機能が改善され、ハードリミットなしでデータベースの書き込みと接続を処理できるようになりました。
これにより、大きなトラフィックスパイクによるアプリの拡張とサポートが容易になります。

### Time to live (TTL)

![](https://firebasestorage.googleapis.com/v0/b/first-class-blog.appspot.com/o/posts%2Fwnif2022-ttl_1600x800.webp?alt=media&token=f5e837b8-9826-4a83-bc03-90f87ffd378c)

ドキュメントの有効期間を決定するドキュメント内のフィールドを指定できるようになりました。Firestoreは有効期限が切れたときに各ドキュメントを削除するため、データ保持ポリシーの管理に時間を費やす必要がなくなり、ストレージ コストを節約できます。

## 認証とセキュリティルールでユーザーとデータを保護

![](https://firebasestorage.googleapis.com/v0/b/first-class-blog.appspot.com/o/posts%2Fwnif2022-auth_1600x800.webp?alt=media&token=74afe156-4eb9-4f72-b238-c1e214604273)

[Google Cloud Identity Platform](https://cloud.google.com/identity-platform)と連携して4つの認証に関わる機能が使えるようになりました。
（使用するためにはコンソールからFirebase Authenticationインスタンスをアップグレードする必要があります。）
さらに、Cloud Storageのセキュリティールールにも更新が入っております。

### 多要素認証 (MFA) 

多要素認証を導入することでパスワードが漏洩してもユーザアカウントを保護できるようになりました。

こちらの導入方法は以前もぐめっとが紹介してますのでご参照ください。

https://qiita.com/mogmet/items/39a520d292db1e31837e

デモではメールアドレスと電話番号の多要素認証の挙動をデモしてくれました。

メールアドレスを登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/c79aad94-2853-3508-5c81-342bf5e64076.png)

emulatorのコンソールでurlが表示されるので、そのURLでメールアドレスを認証します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/a1e48f8e-80d8-34d4-d796-beb0a74748c3.png)

次に電話番号を登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/c44cd875-7e2f-5ec8-ace8-e77a8993ebe3.png)

emulatorのコンソールに認証番号が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/2bc5ffbe-0467-9f1c-cea8-9a885c7e6ac1.png)

入力することで、、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/4c3aa31d-25cf-5c7c-e21d-dddf20995a38.png)

MFAの登録が完了します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/1ba105ff-192b-1a58-9782-90d6704445f2.png)

### OpenID Connect 標準と SAML のサポート

カスタム統合を待つことなく、SlackやDiscordなどの幅広いサインイン方法を使用できます。

### Blocking Functions

サインインまたはサインアップ時にCloud Functionsを起動し、任意のロジックを適用できるブロッキング関数を追加しました。
例えば、登録されたメールアドレスのドメインが見知らぬドメインなら登録を弾くといったことができるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/3672258d-6e9a-fd5f-c62d-78ad0dd89023.png)


### 監査機能

認証設定に対するすべての変更が監査可能になりました。
Authenticationの使用状況を把握できるようにするために、Authenticationに完全な監査とアクティビティログを追加しました。

### Cloud Storageのセキュリティールールでクロスサーバーリクエストをサポート

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/16a7c35b-84cd-4a2b-0b5f-35004d56856e.png)

各ユーザーが自分のデータのみにアクセスできるようにするクロスサーバーリクエストをサポートするようにしました。
この新しい機能により、Firestore内のデータに基づいてストレージ ファイルへのアクセスを保護するための柔軟な権限を構築できます。

![](https://firebasestorage.googleapis.com/v0/b/first-class-blog.appspot.com/o/posts%2Fwnif2022-rules_1600x800.webp?alt=media&token=64c86804-9e30-4247-83be-49abbb1e8838)

もぐめっと的にはstorageのルールは今までわりとゆるっとした形で運用してましたが、firestoreからデータを取得することができるようになったのでより強固なセキュリティールールを記載できそうと感じております。

## 新しい拡張機能マーケットプレイス

ニーズに合ったFirebase Exntesionsを見つけるための新しいサーフェスであるExtensions Marketplaceができました。

https://extensions.dev/

全文検索、カテゴリ、サービスプロバイダ、firebaseのプロダクトなどから検索できるようになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/7b25eedd-6380-2024-3645-5896e09c47e4.png)


また、検索、チャット、支払い処理をアプリに追加するための新しいサードパーティ拡張機能として下記も追加導入しています。

[Vonage拡張機能](https://extensions.dev/extensions/vonage/firestore-vonage-video-express)：　ビデオチャットを使用して顧客にテクニカルサポートを提供できます。
[Meilisearch拡張機能](https://extensions.dev/extensions/meilisearch/firestore-meilisearch)： Firestore でドキュメントを簡単に検索できます。
[Purchasely拡張機能](https://extensions.dev/extensions/purchasely/purchasely-in-app-purchases)：　アプリ内支払いを簡単に統合できます。

## Test Lab を使用してデバイス全体でより効率的なテストを行う

![](https://firebasestorage.googleapis.com/v0/b/first-class-blog.appspot.com/o/posts%2Fwnif2022-testlab_1600x800.webp?alt=media&token=274d3698-ec3f-40f4-81eb-e1ae08f6adb8)

テスト構成の標準化を支援するために、Gradle Managed DevicesでのFirebase Test Labサポートを導入しました。

この統合により、Android の Gradleマネージドデバイスで導入されたシンプルで一貫性のあるテスト構成形式を使用して、Firebase Test Labでサポートされているすべてのデバイスに1つのコマンドラインでアクセスできるようになりました。
**Firebase コンソールにアクセスする必要はありません。**

下記のように指定デバイスでのテストが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/28e71b8a-5de0-160e-32e4-e5f3bef7a0e2.png)

もぐめっと的にはCIでFirebase Test Labが使えるようになるのでかなりの品質向上が見込めるのではないかと感じております！

## CrashlyticsとAndroid Studioの統合により、さらに多くの機能が利用可能に。

![](https://firebasestorage.googleapis.com/v0/b/first-class-blog.appspot.com/o/posts%2Fintegration-crashlytics-android-studio_1600x800.webp?alt=media&token=4214023e-efbb-4acd-a17d-072405520de8)

先日のGoogle I/O 2022でAndroid StudioでCrashlyticsのログを参照できる[App Quality Insights Window](https://android-developers-jp.googleblog.com/2022/06/whats-new-in-android-studio.html)を発表しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/8eb7c369-ba71-b4e1-7716-ef8873f3d8c5.png)
この機能がAndroid Studio Electric Eel のベータチャネルに移行しました。

Android Studio Flamingoの最新のCanary リリースではCrashlytics機能をAndroid Studioに直接導入したので3つ紹介します。

### Play Tracksのクラッシュフィルタリング
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/f8fcb388-2229-e908-6adc-8e6c6c20f25d.png)

Play Tracksでクラッシュをフィルタリングできるようになりました。
つまり、内部ビルドで発生しているクラッシュを簡単に除外し、本番環境のユーザーに影響を与える問題に優先順位を付けることができます。

### [App Quality Insights Windowに信号を追加](https://firebase.blog/posts/2021/11/whats-new-at-Firebase-Summit-2021#crashlytics-adds-application-not-responding-anr-reports-and-signals)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/4a043653-7fbe-9ec6-e2d6-1b8c32be4253.png)
信号を追加することで、クラッシュの特徴 (Early, Fresh, Regressed, Repetitiveなど) をすばやく特定できるようにしました。

### クラッシュにメモを追加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/a632fb2b-d20a-269c-1d7f-9666ca3c1352.png)
クラッシュにメモを追加して、修正の進行状況をチームに知らせ、Android Studioから直接問題をクローズできるようになりました。

## Flutterとcrashlyticsの機能を強化

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/0905f53d-0ea4-2b6f-5228-ad4f23ad9fb1.png)

`--split-debug-info`をサポートしました。
CrashlyticsでFlutterのどこの部分がクラッシュを起こすかを終えるようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/113a552d-62e7-18e2-83b2-2cf322567d82.png)

この機能はFlutter 2.9.0から使うことができます。
iOSは数カ月後にサポート予定のようです。

## Remote Config のパーソナライズでユーザー エンゲージメントを向上
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/590c3083-2dd1-1524-86e2-e3808f296127.png)

Remote Configのパーソナライゼーションは、Google の機械学習の力を利用して、個々のユーザーエクスペリエンスを自動的に最適化し、ユーザーエンゲージメント時間、機能の利用、広告クリックなど、必要な目標を最大化するのに役立ちます。
アプリ内の特定のタイプのイベントの最適化に加えて、パーソナライゼーションではそのイベントの値も考慮されます。

https://firebase.google.com/docs/remote-config/personalization

RemoteConfigの値変更方法にPersonalizationを選択することでパーソナライゼーションが使えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/31fa5276-bfeb-8f35-5f30-95e98a352b22.png)
変化する値を設定後、、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/ea6d67b0-d939-e26f-4236-6b095538b627.png)
目標となるイベントを設定します。（今回は広告表示数）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/77a54e6b-67b8-1f50-4d59-541c7ed9fa15.png)
配信ターゲットを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/e3dae43c-41a2-9875-f5e3-c9352ead1466.png)
名前をつけて配信します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/5b2e9859-1255-4caa-c723-17917af47a9b.png)
パーソナライズの結果を確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/d51e3afc-65a3-bbb4-e01d-621199ba8d0c.png)


モバイル写真編集アプリのコレクションを作成しているLyrebird Studioは、Remote Config のパーソナライゼーションを使用して、最小限の作業で広告収入を4%増加させました。

![](https://firebasestorage.googleapis.com/v0/b/first-class-blog.appspot.com/o/posts%2Fwnif2022-lyrbird_1600x800.webp?alt=media&token=83b4e9c8-8b14-4cf0-9ae0-e47c1515aab5)

## まとめ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/8c1709f7-622f-8c15-7fd8-b4c175d61e0f.png)
まとめると下記のような発表でした。

- Firebase Hostingでは最新のウェブアプリをデプロイできるようになりました
- FirestoreではCount関数、スケーラビリティの向上、TTLの実装などが増えました
- 認証では、Google Cloud Identity Platformと提携して認証方法が増えました。
- Firebase拡張機能を探す新しいサイトがオープンしました
- Android StudioとCrashlytics、Test Labとの連携が強化されました
- Remote Configのパーソナライズで挙動を最適化しやすくなりました

もぐめっと的にはFirestoreのcount関数がめちゃくちゃ熱いです・・・！今後の関数実装により期待しております。

最後に、[ワンナイト人狼オンライン](https://online.1nite-jinro.com/link/blog)というゲームを作ってます！よかったら遊んでね！

https://online.1nite-jinro.com/link/blog

他にも[Camecon](https://camecon.me/)や[Offcha](https://offcha.com/)、問い合わせ対応が簡単にできる[CSmart](https://csmart.jp/lp)、フリーランスのコミュニティの[NextFreelance](https://next-freelance.net/)といったサービスも作ってるのでよかったら使ってね！

https://camecon.me/

https://offcha.com/

https://csmart.jp/lp

https://next-freelance.net/

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

https://virapture.com/

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

https://ragna-rock.com