FirebaseSummit 2020のキャッチアップをしてみた

こんにちは。[virapture株式会社](https://virapture.com)の[もぐめっと](https://mogmet.com)です。

![IMG_9493.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/b30fdbe2-b199-4a9d-d139-03ff8d8ea4f2.jpeg)
実は隠してましたが、忍法影分身の術を使えます。

今回は[Firebase Summit 2020](https://firebase.google.com/summit)が行われたのでその内容をキャッチアップのためにアウトプットしていこうと思います。

発表された大体の内容は[Helpful product updates from Firebase Summit 2020](https://firebase.googleblog.com/2020/10/whats-new-at-Firebase-Summit-2020.html)にまとめられてるので、これの和訳といっても過言ではないかもしれません。

## 認証エミュレーター

[Firebase Authenticationのエミュレーター](https://firebase.google.com/docs/emulator-suite/connect_auth)が実装されました。

認証エミュレーターの起動はこちらのコマンドを実行するだけ

```sh
$ firebase emulators:start
# authだけならこちら
$ firebase emulators:start --only auth
```

認証エミュレーターへの使い方は簡単で、クライアントでAuthを使う時にエミュレーターを指定するだけ

```javascript
firebase.auth().useEmulator('http://localhost:9099/');
```

Firebase Admin SDKでは、FIREBASE_AUTH_EMULATOR_HOSTの環境変数がセットされていれば自動的にエミュレーターを使います

```sh
export FIREBASE_AUTH_EMULATOR_HOST="localhost:9099"
```

リンクでのメール認証やSMS認証とかもエミュレーターでできちゃいます。すごい。

コード上でこんな使い方をしていてこれ良いなと思いました。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Webの開発の時はこうやってる <a href="https://t.co/fMeIE9n8kU">pic.twitter.com/fMeIE9n8kU</a></p>&mdash; nori 村本章憲 (@1amageek) <a href="https://twitter.com/1amageek/status/1321691878824140800?ref_src=twsrc%5Etfw">October 29, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## [hostingで公開前にプレビューできるPreview channels](https://firebase.googleblog.com/2020/10/preview-channels-firebase-hosting.html)

こんな感じで使えます。わかりやすいgif。

![preview channels](https://1.bp.blogspot.com/-d9qgWR66xVI/X5cfyp4FQaI/AAAAAAAAFPE/LucXz0QEI7sauuk7QVAuLhCuyCWYIPgBQCLcBGAsYHQ/s0/hosting%2Bchannel%2Bkeynote.gif)

使い方は下記になります。（[公式ドキュメントより](https://firebase.google.com/docs/hosting/test-preview-deploy))

```sh
$ firebase hosting:channel:deploy {CHANNEL_ID}
```

CHANNEL_IDを、スペースを含まない文字列でなんでもいいみたいです。
このIDがプレビュー用URLに使われます。
実行するとURLがコンソールに表示されるのでそれにアクセスするだけです。

構成的にはこんな感じ
![](https://1.bp.blogspot.com/-xLjkpB6W8Kc/X35CeveVxdI/AAAAAAAAFJ8/GBQ8vRcEab4A6ZJZBujpUdB_qX1Oqh2-gCLcBGAsYHQ/s0/Anatomy%2Bof%2Bpreview%2BURL.png)

ちなみにexpireとかもつけれるみたいです。

```sh
$ firebase hosting:channel:deploy new-blog-post --expires 1d
```

1m, 12hなど細かい時間指定も可能。

デプロイしたリストがみたければこちら

```sh
$ firebase hosting:channel:list
```

ちなみに本番環境はliveというChannel IDで固定されているようです。

また、Github Actionsにも対応しているので、デプロイしたらpreview用のurlを生成とかもできちゃいます。
cf: [Deploy to Firebase Hosting](https://github.com/marketplace/actions/deploy-to-firebase-hosting)
![](https://1.bp.blogspot.com/-SV9LrZuuUaY/X346v6sALoI/AAAAAAAAFJk/9Oug9P5ivxclJvsLKen3NvYw_ha64qMxACLcBGAsYHQ/s1920/hosting-github-action.gif)

## Stripeによる課金処理のExtension追加

こちらに関しては以前私がやり方などまとめたのでそちらをご参照ください。

[Firebase ExtensionsのRun Subscription Payments with Stripeを使ってサブスク課金をコードを書かずに実装する](https://qiita.com/mogmet/items/cddc182156028c928ecf)

[Firebase extensionsのSend Invoices using Stripeを使って請求を送る](https://qiita.com/mogmet/items/9ca447be07c6fc2c07c5)

Extensionで課金処理が簡単にできちゃいます！すごい時代になった。

## オンライン状況を確認するExtension追加

Detect Online Presenceというオンライン状況を確認できるExtensionが追加予定とのこと。
こちらはまだalpha版のようなので、[Alpha Program](https://services.google.com/fb/forms/firebasealphaprogram/)に登録してればそのうち早く使えるようになります。

ソシャゲとかに使えそうですね。
裏側の仕組みはきっと[realtime databaseの機能を使っていい感じ](https://firebase.google.com/docs/firestore/solutions/presence)にやってくれるんじゃないかなぁとおもいます。

## パフォーマンス監視ダッシュボードの刷新

重要なことに注目できるように、指標を追加できるようになりました。
cf: [ダッシュボードで主要な指標を追跡する](https://firebase.google.com/docs/perf-mon/console?authuser=0&platform=ios#metrics-dashboard)

![](https://1.bp.blogspot.com/-2OMDNIyU1lo/X5cgmjDSZyI/AAAAAAAAFPU/T-5J247OC50a_y7-vriKz8IdrSWTqmw5ACLcBGAsYHQ/s0/fireperf-new-dashboard.gif)

（関わってるプロダクトでそもそもPerfomance SDKいれてなかったのでいれるようにしなければ・・・）

## Remote Configの強化

Configをグループで管理できるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/2cf732ce-e2c2-2327-9439-5e5923a24b33.png)

また、semantic versioningに対応したことでバージョニング管理がRemoteConfig上でできるようになりました。
これでアプリ側で正規表現とか書かずにすみますね。
![](https://1.bp.blogspot.com/-tpWFx6wD2pc/X5cjsZ3a6aI/AAAAAAAAFPg/4UiOBEnO3ZYJjAfVPQoK7wR7H-JGskvTwCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%25289%2529.png)


また、新しい値のセットのロールアウトを監視できるリアルタイムのフェッチ要求と、ユーザー間でのパラメーター値の分布を示すフェッチの割合が見れるようになり、ちゃんと意図した条件でユーザに反映されているかもわかるようになりました。
![](https://1.bp.blogspot.com/-PS2Eof_KuNc/X5ckQH5-GYI/AAAAAAAAFPo/k8x_ald-K8EVvObRZ_q6tOhI_00jiEx8QCLcBGAsYHQ/s0/config%2Bmetrics%2Bannotated.png)

## CrashlyticsデータをBigQueryに自動export

Crashlyticsデータをより分析しやすくするためにとりあえずリンクしておくと便利そうです。

[Crashlytics データを BigQuery にエクスポートする](https://firebase.google.com/docs/crashlytics/bigquery-export)

## GoogleAnalyticsの新しいAPI

### [Measurement Protocol (Google Analytics 4)](https://developers.google.com/analytics/devguides/collection/protocol/ga4)

イベントを直接GAに記録できるAPIです。これでCloud Functionsとかでイベントを記録できるようになりますね。
![](https://1.bp.blogspot.com/-6zwu-ihokMc/X5ckveug1mI/AAAAAAAAFPw/YqlobmVjSLwG7auFe5ibr1pavIiS4VrXQCLcBGAsYHQ/s0/mp_demo.gif)

### [Analytics Data API](https://developers.google.com/analytics/trusted-testing/analytics-data)

GAのレポートにプログラムでアクセスできるようになりました！
管理画面で好きにレポート作成がしやすくなりそうです。

### [Google Analytics Admin API](https://developers.google.com/analytics/trusted-testing/analytics-admin)

Analyticsアカウントを構成し、ユーザー権限を設定できます。
会社などでアカウント管理するのに便利そうですね。

## BigQueryとFirebaseのセグメント連携

cf: [セグメントのインポート]()
BigQueryのカスタムセグメントをFirebaseにインポートすることができるようになりました。
たとえば、eコマースアプリと実店舗がある場合は、ストアなどのオフラインソースからデータをインポートし、In-AppMessagingを使用してBigQueryのデータを用いてアプリ内プロモーションを送信できます。
![](https://1.bp.blogspot.com/-4wFDr8pejDE/X5clNaMVxuI/AAAAAAAAFP8/7oUg6YhZHeMN7BRKLr0xB2Prbi6SdETxwCLcBGAsYHQ/s0/imported_segments_blog.gif)

## [もぐめっと](https://mogmet.com)の所感

年々Firebaseは便利になって大きいところでも小さいところでも、手が届くようになってきたなぁと感じます。

Stripeとかはとくに今後のサービス作りに衝撃を与えたのではないかと思います。

また、地味ですけどGAのAPI公開とかはマーケティング業界におおきな変革が訪れる様になったのかなと思います。
管理画面と連携してGAのデータを表示するとかもできるようになると思うのでより分析が捗ることかと思います。（エンジニア陣は実装頑張れ・・・)

今後のFirebaseに益々期待です！