あなたが知らない(かもしれない)Firebase Analytics

# Firebaseとは

- 高品質のアプリをすばやく開発できる統合アプリプラットフォーム
- 開発者はアプリの機能に集中できる
- アプリを利用するユーザーを中心に考えている

利用する際の全体的な注意点としては、日本語ドキュメントは古いことが多いのであまり当てにしないこと。
英語のドキュメントはきちんと更新されていますが、SDK内のコメントの方が情報量が多いです。

# Firebase Analyticsとは

- 無料、イベント無制限のアナリティクスツール
- Firebaseで提供されている様々な機能と上手く連携する
- ユーザー中心設計で、開発アクションを起こしやすい

Google Analyticsと何が違うの？と疑問の方もいらっしゃると思います。
Firebase AnalyticsはFirebaseの機能と連携したり、開発者が行動を起こしやすいように設計されています。
[デモプロジェクト][Demo Project]があるので、利用してみて下さい。
本記事では発展的な内容も含めてどのようなことが出来るのか、Firebase Analyticsの概要が把握できることを目指しました。

## 無料、イベント無制限のアナリティクスツール

### SDKを利用するだけで基本的なイベントは自動で取得してくれる

アプリ開発で重要となる指標を自動で取得・表示してくれます。

具体的には

- アプリ初回起動
- セッション開始
- OSアップデート
- アプリアップデート

などです。以下のような画面でアクティブユーザー、維持率コホートなどでユーザーの動向を確認できます。

![image](https://qiita-image-store.s3.amazonaws.com/0/68131/2271532f-5ef0-8450-0f00-82b7be860edb.png)

### カスタマイズも容易

もちろん手動でイベントを設定することもできます。
FIREventNames.hにいくつか定数が定義されているので、利用例に該当する場合にはこちらを利用する方が良いでしょう。
イベントだけでなく、User Propertyを利用することでユーザー属性も設定できます。

```swift
FIRAnalytics.logEvent(withName: kFIREventSelectContent, parameters: [
  kFIRParameterItemID: "id-\(title!)" as NSObject,
  kFIRParameterItemName: title! as NSObject,
  kFIRParameterContentType: "cont" as NSObject
  ])
```

## Firebaseで提供されている様々な機能と上手く連携する

### Crash Reporting

Firebaseにはクラッシュレポート機能もあります、Analyticsとも連携しているためクラッシュしたユーザーについてのイベントを確認することができます。
11月のアップデートで対応済みかどうかチェックできるようになりました。

#### Crash Reporting - トップ画面

![image](https://qiita-image-store.s3.amazonaws.com/0/68131/edeccc95-31e2-12af-46b2-8736e5a408bb.png)

#### Firebase Analytics - クラッシュユーザーでのフィルター例

![image](https://qiita-image-store.s3.amazonaws.com/0/68131/49784cc6-6d99-70fa-4263-d66dba5f9bef.png)

### Remote Config

予め変数を設定しておくことで、Firebase上から値を変更することができます。
A/Bテストにも用いることができ、A/Bテストの結果はもちろんAnalyticsで確認できます。
本家から[Use Firebase Remote Config with Analytics][]というガイドが公開されています。

![image](https://qiita-image-store.s3.amazonaws.com/0/68131/fcd2384e-9bc7-6e91-090c-82bc4d610f87.png)

### Notifications

Analyticsで定義している特定のユーザーセグメントに対して送信することが可能です。
クラッシュしたユーザーへのお詫びメッセージや、チュートリアルが完了したユーザーにも送ることができます。
通知システムはFirebase Cloud Messaging (FCM)と呼ばれておりGoogle Cloud Messagingをベースにしているため、topic機能などもあります。
またカスタムペイロードを送信することも可能です。
ただしFirebase管理画面のNotificationsタブで出来ることは限られているので注意が必要です。

![image](https://qiita-image-store.s3.amazonaws.com/0/68131/085b6491-be58-cb55-d8c4-30b4690cdf30.png)

### BigQuery連携で生データも取得可能

- 従量課金制のBLAZEプランのみBigQuery連携可能
- 無料で類似サービスの[FabricのAnswers](https://fabric.io)では不可

BigQueryのテーブルは以下の2つに分かれていて、Firebase上で連携すると自動的にBigQueryに書き出されるようになっています。

- Events
- User Properties

### Google Data Studioとの連携

BigQueryのデータをGoogle Data Studioと連携させることでダッシュボードも自由に作れます。
Google Data Studioのテンプレートは[Data Studio report templates for Firebase Analytics [BETA]](https://support.google.com/firebase/answer/7200987)から利用できるので、まだ利用したことがない人はぜひ使ってみて下さい。
次のようなダッシュボードが簡単に作れます。

#### Eventsの例

![image](https://qiita-image-store.s3.amazonaws.com/0/68131/59f8776d-9670-4a6a-97e3-719b9ef09fcb.png)

#### User Propertiesの例

![image](https://qiita-image-store.s3.amazonaws.com/0/68131/2e10d1d6-495b-a3b0-96fc-560219439d93.png)

# 日々進化しているFirebase

[Firebase Dev Summit 2016][]でアップデートの報告がありましたが、日々進化しており今後も期待できます。
Youtubeで動画が公開されているので、見てみることをオススメします。
[Firebase Dev Summit 2016][]で紹介されていた新機能としてリアルタイムにイベントを閲覧できるDebug Viewというものがあるのですが、現在はクローズドベータ中です。
既に締め切られているのでオープンベータが待ち遠しいです。
[![image](https://qiita-image-store.s3.amazonaws.com/0/68131/b465cbb1-6472-7ddd-85ce-ed0571eea9a8.png)](https://docs.google.com/forms/d/e/1FAIpQLSeIQQRBDn2ZsIrPXuk9Vh4F3Q9m6kYF0WAFJEhIZDZToU7ONQ/closedform)

# 残念ながら現在できないこと

- 維持率コホートでのフィルタリング
- 管理画面からのカスタムペイロード設定
- A/Bテスト結果の一覧（現在はフィルターを変更しつつ比較する必要あり）
- AdHoc配信
- DebugViewの一般利用

# まとめ

- Firebaseはアプリの構築だけでなく、ユーザー分析からグロース施策まで幅広く使える
- MAU、継続率などアプリの重要指標追跡が容易
- BigQuery連携で細かなカスタマイズも可能
- Data Studio連携でダッシュボードも簡単に

正直まだ不便な部分もあると思いますが、皆さんの使ってみた感想教えてください😇

[Firebase Dev Summit 2016]:https://events.withgoogle.com/firebase-dev-summit/
[Demo Project]:https://support.google.com/firebase/answer/7157552?hl=en#access
[Data Studio report templates for Firebase Analytics (BETA)]:https://support.google.com/firebase/answer/7200987
[Udacity Course: Firebase in a Weekend, Success for a Lifetime]:http://blog.udacity.com/2016/11/firebase-weekend-success-lifetime.html
[Use Firebase Remote Config with Analytics]:https://firebase.google.com/docs/remote-config/config-analytics