こんにちは、株式会社Pentagonでアプリエンジニアをしている佐伯です。
最近Flutterでユーザー毎のアプリ起動回数の計測をFirebaseとGoogle Analyticsを使用して行いました。それを事例にアプリにカスタムイベントを組み込んで集計まで行う方法を解説します。特にこの記事ではカスタムディメンションのハマりポイントの解決方法を紹介します。
【こんな人に読んで欲しい】
- アプリの使われ方に興味があり、イベントトラッキングをしたいと思っているFlutterエンジニアの方
- Google Analyticsでカスタムディメンション(カスタム定義)を設定したのに(not set)と表示されてしまってハマっているエンジニアの方
【この記事を読むメリット】
- FlutterアプリにFirebase Analyticsを導入して、カスタムイベントを送信できるようになります。
- 送信結果をGoogle Analyticsで集計できます。
- カスタムディメンションの値がいつまでもnot setとしか表示されない方にはその解決策がわかります。
【結論】
スマホアプリの改善には、そのアプリがどのように使われているか知ることが重要です。今回紹介したハマりポイントをクリアして、ユーザーの動向をトラッキングしてより良いアプリにするためのヒントを得ましょう!
FlutterのアプリでFirebase Analyticsを使ってカスタムイベントを送信する
この記事ではハマりポイントの解決方法に焦点を当てているため、詳しい実装は解説しません。
FlutterアプリにFirebase Analyticsを導入して、カスタムイベントを送信するまでの手順について紹介している素晴らしい記事があります。以下のリンクの記事を参考にすれば実装できると思います。
FlutterでFirebase AnalyticsにlogEventを飛ばす実装
私の行ったタスクでは、バックグラウンドからの復帰時にも起動のカスタムイベントを送信したかったのですが、その際には以下の記事が参考になりました。
FlutterのLifecycle(onResume, onPause)を検知する
Google Analyticsでカスタムディメンションを設定する
ここまででFlutterのスマホアプリからカスタムイベントの送信まで実装できたと思います。次にカスタムディメンションをGoogle Analyticsで設定する必要があります。
カスタムディメンション(カスタム定義)とは
カスタムディメンションとは、カスタムイベントのイベントパラメータをGoogle Analytics上で認識するための紐付けみたいなものです。
データは大別すると2種類存在します。それは数値データとカテゴリカルデータです。
カテゴリカルデータとは、数値の大小には意味がなく、足し算や掛け算をする類のものではないデータです。例えば、男性(1)、女性(2)といった性別や、ユーザーID(123,124,125)などのデータが挙げられます。
カスタムディメンションとは、カテゴリカルデータ用の設定です。
カスタムディメンション(カスタム定義)の設定方法
Google Analyticsの左側のナビゲーションにある「設定」で「カスタム定義」をクリックし、「カスタムディメンションを作成」をクリックしましょう。
- プルダウン メニューから [スコープ] を選択します([イベント] または [ユーザー])。
- カスタム ディメンションの [説明] を入力します。
- リストから [イベント パラメータ](イベント スコープ)または [ユーザー プロパティ](ユーザー スコープ)を選択するか、今後収集するパラメータまたはプロパティの名前を入力します。
- [保存] をクリックします。
以下はカスタムディメンション設定後のGoogle Analyticsの画面キャプチャーです。
注意点
カスタムディメンションで選択できるイベントパラメータは、一度でもFirebase Analyticsで送られたことのあるイベントパラメータでなくてはいけません。
もしカスタムディメンションの画面で自分の選択したいイベントパラメータが選択肢に現れなかったら、イベントが送信できているか確認してください。Google Analyticsのリアルタイムビューで確認できます。
Google Analyticsの探索メニューで集計する
Google Analyticsの左側のナビゲーションにある「探索」をクリックし、「新しいデータ探索を開始する」の中から「空白」をクリックしましょう。
- データ探索名をつけます
- セグメントに「最近のアクティブユーザー」を選択します
- ディメンションに追加したカスタムディメンションを選択します
- 指標にイベント数などのみたい指標を追加しましょう
- 手法は自由形式を選択します
- 行のところにみたいカスタムディメンションをディメンションのところからドロップします。
- 値のところには指標からドロップします。
これで完了です。
しかし、ここでカスタムディメンションの値にnot setしか入らないという問題が発生しました。
カスタムディメンションがnot setと表示される理由
以下に、カスタムディメンションがnot setと表示されてしまう2つの原因、ハマりポイントについて説明と解決方法を記します。
原因1 反映されるのに48時間かかる
公式の記事にあるように、カスタムディメンションは設定してから最初の48時間は未設定(not set)という値が表示されます。まずは、カスタムディメンションを設定してから48時間待ちましょう。
原因2 テキストでイベントパラメータを送信しなくてはいけない
ここが最大のハマりポイントです。カスタムディメンションのイベントパラメータはテキスト、つまり、文字列で送信しなくてはなりません。
例えば、ユーザーIDなどのイベントパラメータを数値(1220や1221など)で値を持っている場合を考えてみます。これをそのままイベントパラメータとして送ると、数値と認識されて結果としてカスタムディメンションには認識されずnot setと表示されてしまいます。
以下のコードのように、toString()をつけて文字列として送信しましょう。
await analyticsLogEvent(AnalyticsEventType.startUp, {
'familyId':family.id.toString(),
'userId': user.id.toString(),
'subAccount': user.subAccount.toString(),
'anonymous': user.anonymous.toString(),
});
以下のフォーラムのコメントを参考にしました。
Firebase custom event parameter is missing
Google Analyticsの探索メニューで再度確認
カスタムディメンション設定から48時間経過し、イベントパラメータを文字列で送った場合は、以下のように期間を設定して集計できます。Google Analyticsでのデータ保持期間があるため、こまめに集計しましょう。
まとめ
どうでしたか?Google Analyticsの探索でカテゴリカルデータの集計ができたでしょうか?この結果をアプリの改善のヒントとして活用して、もっとアプリをよくしましょう!