Firebase AnalyticsのAudiences概説

# Firebase Analyticsとは

ご存知の方も多いかと思いますが、正式名称は`Google Analytics for Firebase`です。
Google I/O 2017で`Firebase Analytics`から名前が変わって非常にややこしくなりましたね。

公式サイトでは
> Firebase 向け Google アナリティクスは、アプリの使用状況とユーザー エンゲージメントについて分析することができる、無料のアプリ測定ソリューションです。

と記載されています。みなさんの認識と一致しているでしょうか？

さて、さらに見ると主な機能として以下の2つが挙げられています。

|機能|概要|
|:--|:-------|
|無制限のレポート|アナリティクスでは、最大で 500 種類のイベントに関するレポートを生成できます。|
|オーディエンス セグメンテーション|端末データ、カスタム イベント、またはユーザー プロパティを元に、Firebase コンソールでカスタムのユーザーリストを定義することができます。定義したユーザーリストは、新機能や通知メッセージのターゲットとして、Firebase の他の機能で使用することができます。|

どうでしょう。みなさんの認識と一致しているでしょうか？

イベントレポートだけでなく、セグメンテーションも主な機能なのです！使ってますかー！
無料で使えるソリューション、使い倒さない手はないですね！

プロジェクトのコンソールでアナリティクスの項目を見てみると

* Dashboard
* Events
* Conversions
* Audiences
* Funnels
* User Properties
* Latest Release
* Retention
* StreamView
* DebugView

と、盛りだくさんなのです。イベント取得だけじゃないんです。(2018/12/21 現在)
今回はこの中でもAudiencesに着目してみました。

# Audiencesとは

簡単な日本語訳としては`ユーザーリスト`が適当でしょうか。（Google様の訳）
設定した条件を満たすユーザをリストとして保持しておくイメージです。

Firebase Summit 2018で動的なAudiences(以下、ユーザーリスト)に対応したことで劇的に使い勝手が良くなりました！
詳しくは[公式ブログ](https://developers-jp.googleblog.com/2018/11/whats-new-at-firebase-summit-2018.html)を見ると早いと思います！大型アップデートです！

ユーザーリストの用途は大きく3つです。
1. イベントレポートのフィルタとしてユーザーリストを設定する
2. Cloud Messagingの対象としてユーザーリストを設定する
3. Remote Configのターゲットとしてユーザーリストを設定する

まずはユーザーリストの作り方をザクッと説明していきましょう。

# ユーザーリストの設定

まずはプロジェクトのコンソールから、`アナリティクス` > `Audiences`を開きましょう。
<img width="1113" alt="スクリーンショット 2018-12-21 17.41.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/128802/a568c2aa-e291-6be8-c39f-b32feb5374be.png">

使ったことがなければ、`All Users`と`Purchasers`の2つがデフォルトで登録されています。(※ MAX50個まで設定可能)
これは名前の通り、それぞれ`すべてのユーザー`と`購入者`のユーザーリストになります。

`新しいユーザーリスト`を選択すると、新規に独自のリストを作ることができるフォームが開きます。
<img width="1105" alt="スクリーンショット 2018-12-21 17.41.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/128802/d4082bdc-815e-55e9-1b4c-fd22ae384e3f.png">
ユーザーリストを作成するには、`ユーザープロパティ`/`イベント`等の条件を選びます。
作成すると、それ以降、指定した条件に合致するユーザーがリストに追加されていきます。

Firebase Summit 2018で発表されたアップデートにより、動的になっただけでなく、
除外グループも追加することができるようになりました！また、有効期間を設定できるようにもなったため、
リストを新鮮な状態に保ち、効率よくユーザーにアプローチが可能です！

**※ 注意点として、作成した日"以降"、ユーザーがリストに追加されます。過去をさかのぼって追加はされません。**

## 動的なユーザーリスト

何もする必要はありません！デフォルトです！

アップデートにより、ユーザーに関するデータをFirebaseが取得すると、ユーザーリストが再評価され
リストに含まれるユーザが条件を満たしていなければ自動で除外される仕組みになっています。

つまり、例えばユーザープロパティ`member_status`が`paid`の条件を設定していたとすると、
![スクリーンショット 2018-12-21 18.47.34.png](https://qiita-image-store.s3.amazonaws.com/0/128802/c1ceb02c-ca89-9018-42ca-277ac5d0edd0.png)

紆余曲折あり、`free`にプロパティが変わった場合、自動でリストから除外されます。

## 除外グループ

今までは、一定の条件を満たしたユーザーを追加するのみでしたが、ある条件を満たすユーザーを
除外することができるようになったので、セクメンテーションの幅が広がりました！

たとえば、私の担当する[Radiotalk](https://radiotalk.jp)を例に挙げてみると
![スクリーンショット 2018-12-21 18.57.11.png](https://qiita-image-store.s3.amazonaws.com/0/128802/ad4f70b3-4d7a-1172-8180-95025b017a3e.png)
上記のように設定することで、「トークの収録を始めた」ことはあるが「トークの投稿」は行っていないユーザーリストができます。

例なので本当はもうすこし考慮すべき点はありますが、このようにすることで、当該ユーザーリストに対して
プッシュ通知で投稿を促したり、Remote Configを使って背中を押すメッセージを表示したりすることができます。

## 有効期間

有効期限を設定することで、「2週間以内にこの操作を行ったユーザー」というセグメンテーションが可能になります。
この有効期限は、「イベントの条件」と「リスト全体」の2種類設定することができます。

再び、私の担当する[Radiotalk](https://radiotalk.jp)を例に挙げてみると
![スクリーンショット 2018-12-21 19.06.32.png](https://qiita-image-store.s3.amazonaws.com/0/128802/61d40f25-1c9d-e7f7-0d77-98bd68ee5c6a.png)
上記のように設定することで、「**7日以内に3回以上トークを投稿した**」ユーザーリストができます。
これで活発に投稿してくれているユーザーの母数を簡単に知ることができます。
また、全体の有効期限を14日に設定することで、「**直近2週間で活発なユーザー**」というように絞ることも可能です。
例としては微妙ですが、2ヶ月前は活発だったけど、最近は活発でないユーザーを除外することができるのです。

有効期限は**1日から540日**までの期間を設定可能です。上限に設定するにチェックを入れた際の期限は540日です。

# 簡単な活用方法

ユーザーリストは、作成するだけで、ユーザー数と比較対象期間での数字の上がり下がりは見ることができるので
簡単なKPI指標としても使えますし、イベントレポートを見る際のフィルタにも使えるのでサクッと作って損はないです。

ここでは、もう少し活用した例を簡単に紹介したいと思います！

## Remote Configで使う

RemoteConfigの説明は割愛させてください！

ユーザーリストはRemote Configの設定にも簡単に使うことができます。

例えばこんなふうにサポートメッセージを出すかどうかの設定があったとしましょう。
![スクリーンショット 2018-12-21 19.36.49.png](https://qiita-image-store.s3.amazonaws.com/0/128802/ee9c0cbf-3db1-0579-fc90-232ad2195fed.png)

この設定を編集し、`条件の値を追加` > `新しい条件を定義`から、このようにアプリとユーザーリストを選択してみましょう。
（`潜在配信ユーザー`は先程設定したユーザーリスト名になります。）
![スクリーンショット 2018-12-21 19.37.57.png](https://qiita-image-store.s3.amazonaws.com/0/128802/84653947-e4a3-00d8-3b90-aca7f6fddea0.png)


あとはそのユーザーリストに対してのRemote Configの値を設定してあげるだけです。
![スクリーンショット 2018-12-21 19.38.16.png](https://qiita-image-store.s3.amazonaws.com/0/128802/8d348afa-83f7-8a5a-85d3-f9e2445a04a6.png)

これで、潜在的な配信ユーザーのみに対して、背中を押すメッセージを表示することができるます！簡単！

## Cloud Messagingで使う

Cloud Messagingの説明は割愛させてください！

こちらも同様に、ユーザーリストを配信ターゲットのセグメントとして選択できるので、こうです。
![スクリーンショット 2018-12-21 19.45.50.png](https://qiita-image-store.s3.amazonaws.com/0/128802/e1cb22b7-329a-eec7-2fa5-861cff9dca67.png)


簡単すぎる…！

### おまけ

Firebase Summit 2018で発表されたアップデートにより、Cloud Messagingで定期配信ができるようになりました！:tada:

これとユーザーリストをうまく使えば、「3日以内に収録開始をした」けど「配信はしていない」条件で有効期限を1週間とし、
毎週土曜日に配信を促すプッシュ通知を送信することができます。有効期限があるので、収録せずしばらくしたユーザーに対しては
プッシュ通知が送り続けられるということなく、より施策の効果が出そうなセグメントへ施策を打つことができるのです！

# まとめ

Audiences(ユーザーリスト)は、いわゆるセグメンテーション。
イベントログやユーザープロパティを組み合わせてユーザーリストが簡単に作れます。
その他Firebaseの機能とも連携が強く、これだけでかなりのことができそうです！

無料で最高のサービスをどんどんグロースしていきましょう！

フィードバックや間違いなどありましたら[@_rmakiyama](https://twitter.com/_rmakiyama)いただけると幸いです！

# 参考リンク

* [Firebase Summit 2018 で発表された新機能](https://developers-jp.googleblog.com/2018/11/whats-new-at-firebase-summit-2018.html)
    * Firebase Summit 2018でのアップデートブログの日本語訳です
* [Audiences](https://support.google.com/firebase/answer/6317509?hl=en)
    * 日本語の情報は古いので`hl=en`で見ることを推奨
* [Smarter Segmentation with Audiences and Predictions (Firebase Summit 2018)](https://www.youtube.com/watch?v=VPLkd_aqKwU)
    * もうこれをみればすべてわかります。例もこちらのほうがわかりやすい。デモも見れます。