Measurement Protocol を使用してアプリイベントを GA4 に送信する

1. はじめに

最終更新日: 2021 年 6 月 8 日

作成するアプリの概要

この Codelab では、Measurement Protocol を使用して外部イベントを GA4 に送信する方法を学びます。

この Codelab は、アプリに Firebase 向け Google アナリティクスが実装されていることを前提としています。Firebase 向け Google アナリティクスとの統合方法については、まずこちらの Codelab をご覧ください。Firebase を使用してアプリを作成する方法については、Firebase Android Codelab - フレンドリー チャットを構築するをご覧ください。

ラボの内容

  • 初めての MP 呼び出しを行う手順
  • 呼び出しに必要なパラメータを理解する
  • テスト呼び出しを送信して検証する
  • Python で呼び出しを行うサンプル スクリプトを作成します。

必要なもの

  • Android または iOS アプリ
  • 変更が可能な任意の IDE
  • GA4 アカウント
  • 省略可 - Python 開発環境(または Colab

2. 必須項目を収集する

GA4 で API シークレットを作成する

GA4 に移動し、[管理] > [データ ストリーム >配信を選択 >Measurement Protocol >作成

6e4afca63054d291.png

c9e9ccd2ffba98eb.png

e714cd969fca4a4d.png

任意のニックネームを指定するだけで、呼び出しで使用できるシークレット値が表示されます。

GA4 にアクセスする方法がわからない場合は、Firebase プロジェクトにアクセスし、[プロジェクトの設定] > [統合] > [Google アナリティクス] の順に選択して、[管理] をクリックします。Google アナリティクスとの接続が表示されます。そこから直接移動することもできます。

73b4d77a57eddfba.png

app_instance_id を収集する

app_instance_id を収集するには、次のいずれかの方法を使用できます。

  1. BigQuery Export の使用
  2. アプリのソースコードでネイティブに取得する

これらについて、以下で詳しく説明します。

  1. BigQuery Export の使用

BigQuery Export が有効になっている場合は、次の手順を行います。

  • Firebase にログインする
  • [プロジェクト設定] > [統合] > [BigQuery] に移動します。
  • [BigQuery で表示] をクリックします。データセット付近

注: データセットは、切り替えボタンを有効にして 24~48 時間経過した後にのみ利用できます。

63d061088b622961.png

  • BigQuery では、テーブル内の user_pseudo_id を確認できます。これは、呼び出しで使用できる app_instance_id です。

4b1b80bdc2884581.png

  1. アプリのソースコード内でネイティブに取得

Java で構築されたアプリの場合、次のような方法で app_instance_id を取得できます。

 FirebaseAnalytics.getInstance(this).getAppInstanceId().addOnCompleteListener(new OnCompleteListener<String>() {
        @Override
        public void onComplete(@NonNull Task<String> task) {
            if (task.isSuccessful()) {
                String user_pseudo_id = task.getResult();
            }
        }
    });

Kotlin の場合は、次のことを試します。

Thread {
   Firebase.analytics.appInstanceId.addOnSuccessListener { user_pseudo_id ->
       Log.d("Firebase", "user_pseudo_id using appInstanceId is $user_pseudo_id")
       /*
       Store the value to your server or do something with the retrieved id
        */
   }
}.start()

iOS アプリをお持ちの場合は、Swift で次のコードを使用できます。

let user_pseudo_id = Analytics.appInstanceID()
print("user_pseudo_id = \(user_pseudo_id)")
/*
Store the value to your server or do something with the retrieved id
*/

インフラストラクチャに応じて、以下のリンクもご覧ください。

3. 電話相談の組み立て

サンプル呼び出しは、GA4 のイベント ビルダーを使用して作成できます。(使用するには、ログインし、Cookie を有効にする必要があります)。切り替えが [firebase] に設定されていることを確認します。

fd78d961f3e48238.png

次のフィールドに入力する必要があります。

  • api_secret - GA4 ですでに作成されている
  • firebase_app_id - これを取得するには、[管理] >データ ストリーム >配信を選択します。次のように表示されます。

19801c8e5cb29222.png

  • app_instance_id - この値はすでに取得済みです
  • user_id は必須ではありません。今は空欄のままで構いません
  • カテゴリ - プルダウンから [カスタム] に変更し、任意のイベント名を入力します(自動収集イベントは使用しないでください)。ここでは「test_from_codelab」を使用しています。

54cce53df64d697.png

必要に応じて、下のボタンをクリックして、イベント パラメータやユーザー プロパティを指定することもできます。

16a8f531a3894021.png

すべての項目を入力すると、次のような画面が表示され、[イベントを検証] ボタンが表示されます。

475801f25c3caf26.png

このページが表示されたら、[イベントを検証] をクリックします。] を選択し、このボタンはオレンジ色でハイライト表示されています。イベントが有効であることを示す以下のメッセージが表示されます。また、[SEND TO GA] というボタンが表示されます。この時点でそのイベントが無効の場合は、問題があるフィールドが正確に示されるので、問題を修正して再試行できます。

23e4e6800705b4aa.png

ボタンをクリックすると、テストイベントが GA4 に送信されます。

4. GA4 でのイベントの検証

イベントを送信したら、GA4 アカウントに移動して [リアルタイム] を確認できます。イベントが表示されます。

994b51ca46bb1973.png

イベントがリアルタイム ビューから [実際のイベント レポート] タブに反映されるまでに 24 時間ほどかかる場合があります。そのため、通常のイベント レポートにすぐに反映されていなくても心配はいりません。

問題や不一致がある場合は、Measurement Protocol の既知の制限事項をご確認いただくことをおすすめします。

5. Python スクリプトの作成

テストが完了したので、API 呼び出しとイベント ペイロードを調べて、この呼び出しを行うことができる同様のアーキテクチャを Python(または任意の言語)で構築できます。その後、必要な頻度でスケジュールを設定し、運用できます。このパートでは、Python をサポートする任意の IDE を使用することも、デバイスにインストールする必要のない Google Colab ノートブックを使用することもできます。

GA4 イベント ビルダーに戻ると、エンドポイントが次のようになっていることがわかります。

POST /mp/collect?firebase_app_id=XXXX&api_secret=XXXX 
HTTP/1.1
Host: www.google-analytics.com

イベント ペイロードは次のようになります。

{
  "app_instance_id": XXXX,
  "non_personalized_ads": false,
  "events": [
    {
      "name": "test_from_codelab",
      "params": {
        "test_param": "test_123"
      }
    }
  ]
}

これを Python に翻訳するには、次のようなコードを使用します。

import requests
import json
url = "https://www.google-analytics.com/mp/collect?firebase_app_id=XXXX&api_secret=XXXX"
payload = {
  "app_instance_id": XXXX,
  "non_personalized_ads": False,
  "events": [
    {
      "name": "test_from_codelab",
      "params": {
        "test_param": "test_123"
      }
    }
  ]
}
r = requests.post(url,data=json.dumps(payload),verify=True)
print(r.status_code)

適切な値で実行すると、GA4 でも同様にイベントがリアルタイムで反映されます。

6. 完了

これで、GA4 で Measurement Protocol を正常に使用できました。より有意義なデータを Google アナリティクスに送信し、マーケティングとビジネスの分析を改善できる、強力なソリューション アーキテクチャを構築できるようになりました。これを最大限に活用するには、Google 広告に接続し、これらのイベントをコンバージョンとしてインポートすることもおすすめします。詳細な手順については、こちらの Codelab のステップ 6 をご覧ください。コンバージョン トラッキングの目的で、Google 広告では過去 60 日間に Firebase SDK から収集された IDFA またはデバイス ID に関連付けられているデータのみが表示されます。これはまだアルファ版の API であるため、こちらに記載されている制限事項をよく確認し、完全なリリース前に対処してください。

学習した内容

  • MP 呼び出しを行うための適切な変数を収集する方法
  • テストイベントを送信して検証する方法
  • MP 呼び出しを送信するスクリプトを作成する方法