Firebase Analyticsで送信するイベント設計の方針を考えてみた (BigQueryは使わない案)

スマホアプリの使用状況を把握するために、Google Analyticsを導入していましたが、2019年10月31日でサポートが終了するため、Firebase Analyticsに入れ替えました。

しかし、Google Analyticsと同じようにイベント送信をしても、Firebaseコンソール上で同じように確認できないことに改めて気づきました。

そのため、「どのような方針でイベント送信すれば良いのか?」を自分なりに考えてみました。

注意

本記事は筆者の考えをまとめた内容です。そのため、事実と異なる可能性や推測を含む点にご注意ください。

目次

とりあえず結論から(個人的な方針)

「イベントに属するパラメータの内容(テキスト)は、10個までしか見れない」を考慮した結果、下記の方針を考えました。

  • 「パラメータ内容が見れる項目は最大10個まで」を念頭に送信するデータを決める
  • 「xxxを追加、yyyを削除、zzを選択」などのイベント系は、なるべくイベント名で工夫する
    • イベント名の上限は500のため、それなりに余裕がある
    • パラメータは見れないと割り切る
      • どうしても見たいパラメータだけ、10個までピックアップしておく
    • イベント名とパラメータ名は、長さに気をつける(半角英数字40文字まで)
    • イベント名は固定名とする(変数を含むと煩雑になるため。時刻とか。)
      • add_xx
      • delete_yyy
      • select_zzz
  • 設定値などのON/OFF系も、イベント名で工夫する
      • setting_xxx_on
      • setting_xxx_off
      • setting_yyy_on
      • setting_yyy_off
  • 「合計と平均」が分かれば良い数値は、数値で扱う
  • 「個別の値(合計や平均以外)」が知りたい数値は、文字列で扱う

小規模なアプリの場合、BigQueryを使っても気にならないレベルの金額だと思うので、いっそ使うのも有りかもしれません。

イベントのおさらい

「自動で送信されるイベント」と「自分で送信するイベント」の2種類があります。

このうち、「自分で送信するイベント」には下記の特徴(仕様)があります。

送信されたイベントの詳細(パラメータ)は、Firebase Analyticsコンソールでは見れないため、BigQueryで見る必要があります。 もしくは、BigQueryで処理をして、Tableauなどの可視化ツールを使う必要がありそうです。

ただし、下記の制限内で、Firebaseコンソールで見ることができます。

  • テキスト:10個まで
  • 数値:40個まで

参考:Firebase Analyticsのイベント送信について調べた | Developers.IO

Firebaseコンソールでイベントを見る

イベント送信

下記のイベントを送信しました。(一部抜粋)

var analytics = FirebaseAnalytics.GetInstance(this);
var timestamp = DateTime.Now.ToString("s");

// ------------------------------------
// Event: post_score, post_socre_custom1, post_socre_custom2
// ------------------------------------
var bundle1 = new Bundle();
bundle1.PutLong(FirebaseAnalytics.Param.Score, 111);
bundle1.PutLong(FirebaseAnalytics.Param.Level, 333);
bundle1.PutString(FirebaseAnalytics.Param.Character, $"any_charactor_name_{timestamp}");

analytics.LogEvent(FirebaseAnalytics.Event.PostScore, bundle1);
analytics.LogEvent("post_socre_custom1", bundle1);

bundle1.PutString("post_score_add_param", $"post_score_add_value_{timestamp}");

analytics.LogEvent(FirebaseAnalytics.Event.PostScore, bundle1);
analytics.LogEvent("post_socre_custom2", bundle1);

// ------------------------------------
// Event: select_content, select_content_custom1, select_content_custom2
// ------------------------------------
var bundle2 = new Bundle();
bundle2.PutString(FirebaseAnalytics.Param.ContentType, $"any_content_type_{timestamp}");
bundle2.PutString(FirebaseAnalytics.Param.ItemId, "123");

analytics.LogEvent(FirebaseAnalytics.Event.SelectContent, bundle2);
analytics.LogEvent("select_content_custom1", bundle2);

bundle2.PutString("select_content_add_param", $"select_content_add_value_{timestamp}");

analytics.LogEvent(FirebaseAnalytics.Event.SelectContent, bundle2);
analytics.LogEvent("select_content_custom2", bundle2);

// ------------------------------------
// Event: view_item, view_item_custom1, view_item_custom2
// ------------------------------------
var bundle3 = new Bundle();
bundle3.PutString(FirebaseAnalytics.Param.ItemId, "any_item_id");
bundle3.PutString(FirebaseAnalytics.Param.ItemName, $"any_item_name_{timestamp}");
bundle3.PutString(FirebaseAnalytics.Param.ItemCategory, "any_item_category");

analytics.LogEvent(FirebaseAnalytics.Event.ViewItem, bundle3);
analytics.LogEvent("view_item_custom1", bundle3);

bundle3.PutString("view_item_add_param", $"view_item_add_value_{timestamp}");

analytics.LogEvent(FirebaseAnalytics.Event.ViewItem, bundle3);
analytics.LogEvent("view_item_custom2", bundle3);

Firebaseコンソールの様子

送信したイベントが表示されています。

送信されたイベントが表示されている

ただし、詳細画面で各イベントに属するパラメータの内容は表示されません。(item_iditem_nameといったパラメータが無い)

view_itemでパラメータの内容が表示されてない

イベントパラメータを追加する

各イベントに属するパラメータの内容を見るために、「イベントパラメータ」を追加します。

イベント一覧の右側で「パラメータレポートを編集」を選択します。

イベント一覧でメニューを表示する

「パラメータレポートを編集」を選択する

「そのイベントに属するパラメータ一覧」が表示されるため、見たいパラメータを選択し、保存します。

項目が無い場合は、「パラメータを入力」して追加すればOKです。

見たいパラメータを選択する

しかし、データ数は0件となっています。

データは0件になっている

この設定後、36時間ぐらい経過しても表示されませんでしたが、Analyticsデータを再送信すると表示されました。

データが表示された様子

Firebaseコンソールで見れるパラメータは、上記の設定後に送信したイベントみたいです。

select_contentは特別?

「イベント:select_content」は、何もしなくてもcontent_typeが表示されていました。

select_contentは、content_typeが表示されている

定義済みイベント名(FirebaseAnalytics.Event)に記載があるパラメータは自動表示かな?」とも思いましたが、content_typeのみであること、他のイベントでは表示されないことから、「select_contentのcontent_typeは特別」みたいです。

定義済みイベント名の記載(select_content)は下記ですが、item_idは表示されていません。(イベント送信はしています)

select_contentの仕様

他のイベントの様子(post_score)は下記ですが、Firebaseコンソールではscore / level / characterは表示されていません。(イベント送信はしています)

post_scoreの仕様

post_scoreの様子(データ表示なし)

イベントパラメータの制限

「イベントパラメータの追加」は、プロジェクト毎に下記の制限があります。

  • テキスト:10個まで
  • 数値:40個まで

この制限はかなり厳しく、下記のように「テキストを10個追加」すると上限となります。

イベントパラメータの閲覧仕様

つまり、「イベントに属するパラメータの内容(テキスト)は、10個までしか見れない」という理解です。

なお、数値は40個まで登録可能ですが、「合計 or 平均」しか見れません。

さいごに

いろいろ実験しましたが、結果が分かるまで長時間(24時間+日付変更)も待つのが長かったです……。