概要
この記事はUnity Advent Calendar 2021 その2 17日目の記事です
- Unity+Firebase Analytics+Data Portalを組み合わせて、アプリ内のユーザー行動を可視化します
- Unityから送ったログをもとにData Portalを使ってグラフを起こします
- 応用すればDAUやMAUのグラフを書くこともできます
- 本記事は大きく分けて2部に分かれます
- UnityアプリへのFirebase Analyticsの導入
- Data Portalを用いた可視化
UnityアプリへのFirebase Analyticsの導入
Firebaseの下準備
https://console.firebase.google.com/u/1/
にアクセスし、新規プロジェクトを作成します
今回はAnalyticsを使いたいのでGoogleアナリティクスを有効にしておきます

プロジェクトが作られたら、次にアプリケーションをFirebase上で作成します
iOSまたはAndroidのアイコンをクリックします

Androidの場合はjson、iOSの場合はplistがダウンロードできるようになるのでダウンロードしておきます

次にBigqueryとの連携を行います
Unity側の準備
今回はAndroidアプリの場合で説明していきます
まず、Unityプロジェクトの任意の場所に先ほどダウンロードした
google-services.jsonまたはGoogleService-Info.plist、あるいはその両方を配置しておきます

Firebase SDKを下記からダウンロードします
https://firebase.google.com/download/unity?hl=ja

ZIPを展開したら使用するdotnetのバージョンのフォルダに入っているFirebaseAnalytics.unitypackageをインポートします
(ほとんどの方はdotnet4だと思われます)

インポート後に自動的にFirebaseの設定を行ってくれます
また、パッケージ名は先ほどWEB上で指定したものと同じである必要があります

アプリから任意のイベントを発行する
- 何も設定しない状態でも、インストール・アプリを開く辺りのイベントはFirebaseが自動的に回収してくれます
- ここではアプリから任意のイベントを発行できるようにコードを書いていきます
ボタンを押したらイベントが発行されるサンプルコードです
using Firebase.Analytics; //このusingが必要
using UnityEngine;
using UnityEngine.UI;
public class Analytics : MonoBehaviour
{
[SerializeField]
Button startButton;
[SerializeField]
Button levelUpButton;
int level = 1;
private void Start()
{
this.startButton.onClick.AddListener(() =>
{
//イベントだけ発行してパラメータが無いパターン
FirebaseAnalytics.LogEvent("startbutton_pushed");
Debug.Log("StartButton Pushed");
});
this.levelUpButton.onClick.AddListener(() =>
{
this.level++;
//イベント+パラメータのパターン
FirebaseAnalytics.LogEvent("levelup", new Parameter("level", this.level));
Debug.Log($"LevelUp:{this.level}");
});
}
}
イベントの発行の仕方は大きく分けて2つのパターンがあります
一つはイベントだけ発行してパラメータが無いパターン。例えばゲームスタート、ゲームクリアなどトリガーとなるイベントに使うことができます
もう一つがイベントとパラメータを同時に発行するパターン
イベント名と各パラメータを同時にログを取ることができます
このパラメータは、可変長引数になっているので、同時に複数のパラメータを送ることもできます。
FirebaseAnalytics.LogEvent("gameover",
new Parameter("level", this.level),
new Parameter("stage", this.stageName),
new Parameter("enemy", this.enemyName));
ここまで出来たらビルドしてモバイル端末で実行できるようにします
イベントが来ているかテストする
通常、Firebase Analyticsはイベントが発行されてから次の日にならないとイベントが来ているかどうかわかりません
しかし、Debug Viewという機能を使うことでイベントが発行されたら即時に確認することができます
Androidの場合はAPKインストール時後に下記のコマンドを実行します
adb shell setprop debug.firebase.analytics.app package_name
iOSの場合はXcode で次のコマンドライン引数を指定します
-FIRDebugEnabled
FirebaseのWebコンソールからDebugViewを開きます

アプリ上でイベントが発行される行動をすると、Web上でもイベントが発行されていることが確認できます

また、各イベントの詳細を開いて、来ているパラメータを確認することもできます

Data Portalを用いた可視化
Big Query上で確認する
直接Data Portalでグラフを書いてもいいのですが、まずはBigquery上でデータがどのような形式で来ているかを確認することをお勧めします
Firebaseのコンソールを開き、Eventsのページ下部にBigQueryで生のイベントを表示という項目があるのでそこをクリックしBig Queryを開きます
Big Queryのテーブルは1日のデータが1テーブルに分かれて保存されています

とりあえず、どのようなデータ形式になっているか見てみましょう
SELECT *
FROM `unity-analytics-a849e.analytics_295319553.events_20211202`
LIMIT 1000
代表的なカラムは
| カラム名 | 意味 |
|---|---|
| event_date | 日付 |
| event_timestamp | タイムスタンプ(UTC) |
| event_name | イベント名 |
| event_params | イベントのパラメータ |
| user_pseudo_id | Firebaseからアプリインストール時に付与されるID |
| user_id |
FirebaseAnalytics.SetUserIDを利用して付与されたID |
| device.mobile_model_name | モバイル端末の型番(例:SCV38) |
| device.mobile_marketing_name | モバイル端末の名称(例:Galaxy S9) |
user_idは下記のコードで設定することができます
会員登録などがあるアプリでは、会員のUserIDをここに設定しておくことで、ログが分かりやすくなります
また、複数端末を使っているユーザーなども判別ができるようになります。
Firebase.Analytics.FirebaseAnalytics.SetUserID("123456");
パラメータを抽出する
Firebaseのevent_paramsは特殊な形式になっており、抽出するのに一手間かかります
UNNESTを使って抽出を行います。
ここではlevelのパラメータを抽出してみます
SELECT event_timestamp,event_name,
(SELECT value.int_value FROM UNNEST(event_params) AS params WHERE params.key = 'level') AS level,
FROM `unity-analytics-a849e.analytics_295319553.events_20211202`
WHERE event_name = "levelup"
ORDER BY level
結果
| event_timestamp | event_name | level |
|---|---|---|
| 1638422330015000 | levelup | 2 |
| 1638422330186001 | levelup | 3 |
| 1638422330637002 | levelup | 4 |
| 1638422330804000 | levelup | 5 |
| 1638422331253000 | levelup | 6 |
| 1638422331437001 | levelup | 7 |
| 1638422331687002 | levelup | 8 |
| 1638422331855003 | levelup | 9 |
| 1638422332021000 | levelup | 10 |
Data Portalへのデータ取り込み
Google Data Portal(Data Stuio)にアクセスし、利用を開始します
https://datastudio.google.com/u/1/
画面上部のデータの追加をクリックし、Bigqueryを選択します


カスタムクエリから、先ほどのBigQueryで使ったプロジェクトを指定します

カスタムクエリを入力の欄にクエリを入力します
入力出来たら右下の追加をクリックします
















