Firebase Analyticsを触ってみる

こんにちは。Androiderの梅津です。

最近、Firebaseが注目を集めていますね。 先日行われたGoogle for MobileでもFirebaseに関する多くのセッションがありました。 セッションを聞いているうちに何だか簡単そうだし面白そうだなーと思い、触ってみたくなりました。 というわけで今回はFirebaseの機能の一つ、Analyticsを触ってみたいと思います。

導入

まずはFirebaseを使うための準備をしていきましょう。

アカウント作成

Firebaseのプロジェクトを作るにはGoogleアカウントが必要になります。
Googleアカウントを作成して、ログインしておきましょう。

プロジェクト作成

Firebase Consoleへ行き、「新規プロジェクトを作成」というボタンを押します。
すでに Google API Console でプロジェクトを作っている場合、それらをインポートして使うことも可能です。その場合は、「またはGoogleプロジェクトのインポート」の方を押しましょう。

firebase console

適当なプロジェクト名を入れましょう。
必要な項目を入力したら「プロジェクトを作成」というボタンを押します。

firebase console

終わるとOverviewが表示されます。

firebase console

アプリを追加

続いてAndroidアプリをプロジェクトに追加しましょう。
「Android アプリに Firebase を追加」 というところを押します。

firebase console

パッケージ名を聞かれるので自分のAndroidアプリのパッケージ名を入れましょう。
今回はサンプルのアプリを作り、それのパッケージ名を入れました。

署名証明書はFirebaseのAuth機能などを使う時に必要になるようです。
今回は入力しませんが、必要に応じてこちらのページを参考に入力してください。

入力が終わったら「アプリを追加」ボタンを押します。

Androidアプリへの導入

アプリの追加が終わると、自動的に google-services.json のダウンロードが始まると思います。
あとは表示されている内容のとおりにAndroidアプリの設定を変更していってください。

firebase console

firebase console

Gradleの同期が無事に終わればFirebaseの導入は完了です。

Analyticsを使う

それではAnalyticsを使ってみましょう。

Analyticsの導入

Analyticsを使うには、app/build.gradleのdependenciesに次の一行を追加します。

dependencies {
    ...
    compile 'com.google.firebase:firebase-analytics:9.2.1'
}

あとは FirebaseAnalytics#getInstance を呼び出すことで、Analyticsを使う準備は完了です。

final FirebaseAnalytics firebaseAnalytics = FirebaseAnalytics.getInstance(context);

イベントの送信

イベントを送信するには FirebaseAnalytics#logEvent メソッドを使います。
第一引数にイベント名、第二引数にパラメータとなるBundleを渡します。
次の例ではFirebaseAnalytics.Eventクラスにあらかじめ用意されているイベント名を使いました。
パラメータは必要ないのでnullを渡しています。

firebaseAnalytics.logEvent(FirebaseAnalytics.Event.APP_OPEN, null);

次にパラメータを渡す例も見てみましょう。

final Bundle bundle = new Bundle();
bundle.putString(FirebaseAnalytics.Param.ITEM_ID, "1234");
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, "special_item");
bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "image");
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);

Bundleを使ってパラメータを詰めていきます。
イベント名の時と同様、いくつかのパラメータ名があらかじめ用意されています。
使うパラメータ名によって、どのBundleのメソッドを使うかが決まっているようです(FirebaseAnalytics.Param.ITEM_IDならBundle#putStringを使うとか)。
詳しくはドキュメントを確認してください

カスタムイベント

ここまではあらかじめ用意されたイベントやパラメータを使ってきましたが、任意のイベント名などを使うことも可能です(使える文字や文字数の上限などが決まっています)。
FirebaseAnalytics.Event, FirebaseAnalytics.Param

final Bundle bundle = new Bundle();
bundle.putString("user_name", "umetsu");
bundle.putLong("height", 165);
firebaseAnalytics.logEvent("custom_event", bundle);

カスタムイベントを使うにあたって注意したい点があります。
それはカスタムイベントを送信した場合、WebのFirebase Consoleからはどういったパラメータが付与されていたかが確認できないという点です。
例えば、先ほどの例の user_name や height といったパラメータはFirebase Consoleからは確認できませんでした。
BigQueryと連携すれば確認できるらしいのですが、なんでわざわざそんな事をしないといけないんだろう?というのが正直な感想です。
この先、Firebase Consoleからパラメータを詳しく見れるようになると嬉しいですね。

自動的に収集されるイベントについて

Firebase Analyticsでは導入するだけで収集されるイベントがあります。例えば次のようなものです。 * ユーザーが初めてアプリを開いた(first_open) * アプリが新しいバージョンに更新された(app_update) * FCMによって送信された通知をユーザーが開いた(notification_open)

他にもいくつかのイベントが自動的に収集されます。
詳しい内容はドキュメントをご参照ください。

おわりに

いかがだったでしょうか?
最初のFirebaseの準備をする部分が少し手間かもしれませんが、準備が終わってしまえばAnalyticsを使い始めるのはとても簡単でしたね。
入れるだけで自動的に収集してくれるイベントもあるので、とりあえず導入して様子を見てみるのもアリかもしれません。 Firebaseには他にも強力な機能が沢山あるので、機会があればそれらについても触っていければと思います。

それでは、また。