Google I/O 2022で発表されたFirebaseの新機能をまとめてみた。

こんにちは。[virapture株式会社](https://virapture.com)でCEOしながら[ラグナロク株式会社](https://ragna-rock.com)でもCKOとして働いている[もぐめっと](https://mogmet.com)です。
![mogmet.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/da66fe2b-213f-2236-da87-e48eb1d70a34.jpeg)
最近[ラグナロクのCKOに就任しました](https://prtimes.jp/main/html/rd/p/000000013.000038912.html)。頑張ります！

本日は2022年のGoogleI/Oで発表されたfirebaseの新機能について紹介致します。

https://www.youtube.com/watch?v=i0VNBvCqpgI&t=301s

結論から言うと、Crashlyticsがやばい進化してます！！！

## Firebase Extension

今回もたくさん新しい機能を追加しました（15個）

### Stripe Extension
Stripe Extensionを使ってサブスクをつかった場合の各種イベントを設定することができるようになりました。
例えば、キャンセルを行う場合のイベントを設定できるようになったりしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/c7f32b84-6726-3055-c6fa-2e2e892716ba.png)

今回のデモではサブスクをキャンセルした時にキャンセルメールを送るようにコーディングしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/9e512b6f-68c5-3505-d25b-00ebe3f3466a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/71f4406c-b8e1-5b93-7308-c54d06c27872.png)

### Snapの拡張機能

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/8ce89bdf-9662-079f-b90c-73111cab40db.png)

Snapを使用してログインし、SnapStoryに共有することで、ユーザが製品を友だちにすすめることができるようになった。

### Stream Extension
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/071f3225-6643-6dad-b963-9621f05a9692.png)

アプリにチャットを簡単に実装できるようになります。

### Typesense

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/91591cc4-88db-0f90-1686-d9f4bb8d48a5.png)
Firestoreのインデックス作成と検索のためのOSSが追加。

※しれっと紹介されてますが、今までよく紹介されていたalgoriaはコストが高いことが問題でもありました。全文検索の選択肢としてTypesenseが公式に追加されたのはスタートアップにとってとっても魅力的なアップデートになります。

導入について、日本語の検索方法についてとか色々紹介されてるので下記をご参照ください。

https://guide-nipo.web.app/develop/typesense/

### RevenueCat
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/5133e063-9cf7-dec0-e2bb-5028d67a48ba.png)

アプリ内サブスクの支払い処理のロックを解除するアプリやストアでデジタル商品を簡単に販売できる。

### 一部の拡張機能がエミュレータに対応

より開発しやすくなることでしょう！

## Firebase Hosting

firebase deployのコマンドだけで最新のウェブアプリをデプロイできるようになりました。

デモでは--onlyなどをつけずに爆速でデプロイできてました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/243dc080-f198-4401-9d3d-cf05a91390bd.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/f5c3cece-5013-89d6-c5f2-9ac5c916c90f.png)

ただ、対応してるのはまだNext.jsとAngularだけっぽいです。今後追加する予定らしいので今後に期待しましょう。

## Flutter

FlutterのfirebaseプラグインがGAになりました！！
それにあたりドキュメントやスニペット、カスタマーサポートなどが追加されております。

## Firebase Clashlytics

3つ追加しました。

### Flutterアプリの初期設定の簡略化

プラットフォーム固有のIDEを開く必要がなくなりました。
Dartにはこれを書くだけ。お手軽！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/6556b94a-1bda-f6b7-afa7-795d4e6a725c.png)

### リアルタイムにエラーを送信 for Flutter

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/5120dd96-6bcf-4894-2f9e-64dfaafa6640.png)
クラッシュのないユーザメトリックや速度アラートなどはiOSやAndroidのみで使用可能でしたが、
致命的なエラーをリアルタイムに送ることができるようになりました。

### エラーのグループ化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/b56068db-5be1-e615-15bf-2637e8a56a72.png)

エラーを直感的にグループ化することができるようになりました。
これにより優先順位をつけることができるようになりました。

これらの機能はSDKを更新するだけで追加できます！

## Swift対応

firebase SDKのほとんどがObj-Cで書かれていたが、Swift対応しました！
これにより最新のSwift機能を使ったり、SwiftUIなどと統合できるようになりました！

例えばCodableを使ってTypeSafetyでかけたり
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/30f04bcf-7af4-3160-4f25-d4d1ba4b917e.png)

async awaitを使えるようになったりしました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/baaa2bc3-bd28-5a03-4cdf-59874ef4b3e3.png)

SwiftUIの場合はカスタムビュー修飾子を使って分析用のビューを識別したりFirestoreQueryプロパティラッパーを使用して、ライブアップデートでビューをFirestoreのデータに簡単にバインドできるようになりました。

## AppCheck

AppCheckは正規上のデバイスからの通信であることを保証できる機能。
今回は新しいアプリ認証プロバイダーとして、PlayIntegrityAPIを統合しました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/23f5f627-1fc4-e2b8-bb90-922bb0aa8c4e.png)
Play Integrity APIは、Androidデバイス向けの認証で、より多くの不正防止信号を使える。

そして...AppCheckはGAになりました！！！

## Firebase App Distribution

betaからGAに移行しました！（もぐめっと的には、みんな結構使っていると思うので、まだGAだったことに驚いた）

グループ、アクセスの簡素化、削除、一括テスターの管理などの機能を導入しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/a2905fc5-8c8d-fa2f-01a1-6350d9444694.png)

Android SDK内で直接最新のビルドが使えることをお知らせできるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/a5684d1b-6247-a9c2-47aa-25712d6988bc.png)

iOSで御用達のTestflightを入れてる場合は同じような機能がありますよね。AppDistributionもどんどん便利になってきています。

## Firebase Performance Monitoring

ベータからGAになりました！

カスタムコードトレース、ネットワークリクエスト、画面レンダリング、webトレースのアラートも作成することができるようになった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/4474ed2c-68c0-3563-c353-694bbbdaacd5.png)

アラートもしきい値をカスタマイズすることができます。

## Crashlytics + Android

### App Quolity Insights Window

CrashlyticsとAndroidのつなぎこみが**すごーーーーーーーく**よくなりました。
App Quolity Insights Windowは、Crashlyticsによって報告された問題をローカルのAndroid Studioプロジェクトのコンテキスト内で全て一箇所で発見、調査、再現するのに役立ちます。
やり方は、AndroidStudioの[App QuolityInsights]ウィンドウを開くと、アプリの最新のクラッシュデータをDLし、クラッシュの頻繁度順などに並び替えて表示できたりします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/0a45eec9-9965-d0f7-0c87-91ddc4b06760.png)

エラー種類やバージョンごとにフィルターもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/36d17b4b-a2e5-d9cc-0972-cd5dfcc0cf1e.png)


クラッシュを選ぶとIDE上でソースコードを追うことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/18319481-8419-ad2c-134a-f12261d0dc61.png)

どのデバイスに影響しているかもわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/6cccbb3e-85d1-e10d-534d-8e7d990c202b.png)

より詳細なログを知りたい場合はfirebase consoleへジャンプができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/b5f408b3-bde5-0e73-b112-49d8fb7cd860.png)

普段はこの機能を使うことは少ないと思うので、ソースコード上に問題を表示できるようにしてあります。（神かよ）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/fa88aacd-b7fc-8458-8bfe-b6fb3d1cd231.png)

### Crashlyticsのフィルタの追加

PlayStoreでCrashlyticsを使っている場合はどのリリースを使っているか見分けがつくようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/328bf70f-274a-d6e0-809c-543501df26d6.png)

## もぐめっとの所感

個人的にはCrashlyticsに追加された機能が衝撃でした。（updateも多かったので力を入れていたのを感じる）
App Quolity Insights Windowは特にクラッシュを特定するのにとても使えそうな神ツールなので早速バンバン使っていきたいと思っていました。

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

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

他にも[Camecon](https://camecon.me/)や[Offcha](https://offcha.com/)といったサービスも作ってるのでよかったら使ってね！

https://camecon.me/

https://offcha.com/

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

https://virapture.com/

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

https://ragna-rock.com