読者です 読者をやめる 読者になる 読者になる

コネヒト開発者ブログ

コネヒト開発者ブログ

Google I/O 2016で発表されたFirebase Analyticsを使ってみた

f:id:Utmrer:20160519231110j:plain

こんにちは、最近AbemaTVでフリースタイルダンジョンを深夜に見る習慣が出来て寝不足気味の田村(@Utmrer)です。

みなさんはアプリのトラッキングにどのAnalytics Toolを使っていますか?Google AnalyticsやFlurry, Facebook Analyticsなどいろいろありますが、弊社では主にMixpanelを使ってトラッキングしています。
Mixpanelは一定のデータ量までは無料で使う事ができるので最初は良かったのですが、サービスが成長してくると結構な金額になってきてます。
そこで日々良いツールは無いかと探していたのですが、Google I/Oで発表されたFirebase Analyticsが無料という話を聞いたので試しに使ってみることにしました。

簡単なトラッキング

プロジェクトの作成やアプリの追加は公式のドキュメントを参考にしてください。Console画面はほとんど日本語化されているのでとてもわかりやすいです。

FirebaseはCocoaPodsに対応しているのでpod 'Firebase'を追加してpod installするだけでインストール出来ます。
それではユーザーの会員登録イベントをトラッキングしてみます。

// AppDelegate
override func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
    FIRApp.configure()
}
// RegisterViewController
func register(sender: AnyObject) {
    FIRAnalytics.logEventWithName(kFIREventSignUp, parameters: nil)
}

AppDelegateでAnalyticsの設定を行って、ViewControllerで登録イベントを発火させただけのシンプルなイベントトラッキングです。
FIRAnalytics.logEventWithNameの最初の引数がイベント名で2番目の引数がそのイベントのパラメータになります。
kFIREventSignUpというのはFirebase SDKが定数として持っているイベント名で「こういうのトラックするといいんじゃない?」という声が聞こえてきそうです。 他にもkFIREventTutorialBeginkFIREventUnlockAchievementなど重要そうなイベント名の定数が設けられています。

もちろんイベント名は定数だけでなく、オリジナルなイベント名も入れられます。

func watch(sender: AnyObject) {
    FIRAnalytics.logEventWithName("WatchAnimation", parameters: ["Series": "LoveLive"])
}

これで「ラブライブを観た」というイベントがトラック出来ました。

ユーザー情報の設定

Google AnalyticsのようにユーザーIDやパラメータが設定できます。ユーザーIDを設定した時のAnalyticsでの挙動みたいな文言は見つからなかったのですが、ユニバーサル アナリティクスのようにUUの精度が上がったりするのでしょうか。

// AppDelegate
override func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
    FIRApp.configure()
    FIRAnalytics.setUserPropertyString("のぞみ", forName: "name")
    FIRAnalytics.setUserID("9")
}

AppDelegateのハンドリング

FirebaseにはAppDelegateに関するトラッキングが3つ用意されています

  • + handleEventsForBackgroundURLSession:completionHandler:
  • + handleOpenURL:
  • + handleUserActivity:

これらは自動で行われるので実装する必要はなく、手動でやりたい場合は設定ファイルに書いて自分で実装するようです。
これらのメソッドが何をやるのか詳しくは書いてないですが、Universal LinkやAppIndexing, Spotlightなどのアプリ起動のReferrerに関するトラッキングをしてくれそうな気がします。

使ってみて

このライブラリで開発者がやることはFIRAnalytics.logEventWithNameぐらいです。かなりクラス数やAPI数が少なく、すぐ使えると思います。
逆に言うと、Firebase Analyticsだけではあまり機能が無い、とも言えます。Console画面もMixpanelに比べると

  • ユーザー継続率のコホートしかなく、カスタムイベントのRetentionが見れない
  • Formulasがない(Register/Launchで新規率をグラフにしたりする機能)
  • iOSとAndroidの数値を合算して表示したりできない(Google Analyticsの様に複数のOSを1つのプロパティで管理できない)

などがデメリットでMixpanelからスイッチすることは難しいな、という感じでした。
一方で、Firebase AnalyticsのログはBigQueryに吐けるらしいのでお手製で解析ツールを作れるのなら自由度は上がると思います。
また、NotificationsやRealtime Database, Crash Reportingなど他のFirebaseサービスと連携するならロックインされた方がメリットが大きかもしれませんね。
Google AnalyticsのSDKより断然使いやすいので1度試してみてはどうでしょう!