Firebase Remote Config を使用して Unity ゲームの A/B テストを実装する

Firebase Remote Config を使用して Unity ゲームの A/B テストを実装する

この Codelab について

subject最終更新: 8月 24, 2023
account_circle作成者: Joe Spiro, Arthur Thompson

1. はじめに

この Codelab では、Firebase Remote Config でゲームを計測するで変更したサンプルゲーム「MechaHamster: Level Up with Firebase edition」で、A/B テストを使用して Remote Config テストを作成する方法を学習します。

Remote Config を使用した A/B テストでは、アプリの UI、機能、エンゲージメント キャンペーンの変更を、より広範なユーザーにロールアウトする前に、ターゲット ユーザーでテストできます。テスト結果は、次の目的にも使用できます。

  • 収益や維持率などの主要指標を改善するパラメータ値のパターンを特定します。
  • どのバリエーションをどのユーザー サブグループが好んでいるかを確認する。
  • テストデータを収集して保存し、さまざまなパラメータ値を設定した効果について追加分析を行います。

これが A/B テストの本質です。A/B テストでは、Remote Config 用に計測されたコードを使用して、Remote Config の条件(Google アナリティクスのユーザー プロパティを含む)、パーセンテージ ロールアウト、アナリティクスのコンバージョン イベント、またはこれらの組み合わせに基づいて、クライアントが受け取る値を制御するテストを開始できます。

まず、ユーザー アクションに基づいてユーザー プロパティを設定し、テストに含めるユーザーを制御する条件を実装します。次に、Google アナリティクスのユーザー プロパティを使用して、テストに含めるクライアントを決定する A/B テストを作成します。最後に、そのデータを使用してオーディエンスの詳細を把握します。

学習内容

  • 計測された Remote Config 値を使用して A/B Testing を設定する方法
  • A/B テストへの参加条件の一部として Google アナリティクスのユーザー プロパティを使用する方法

前提条件

必要なもの

  • iOS または Android のビルドをサポートする Unity 2019.1.0f1 以降

2. デバッグ メニューを有効にする

プロジェクトにはデバッグ メニューが隠されています。このメニューにアクセスするボタンはゲーム内にありますが、現在は有効になっていません。MainMenu プレハブからアクセスするには、ボタンを有効にする必要があります。

  1. Unity エディタで [Project] タブを選択し、[Assets] で [Hamster] > [Prefabs] > [Menus] を開き、[MainMenu] をクリックします。

アセットが表示された Unity エディタの [プロジェクト] タブ。ハムスター、プレハブ、メニュー

  1. プレファブ階層で、無効になっているサブオブジェクト DebugMenuButton を見つけてクリックし、[インスペクタ] タブで開きます。

Unity エディタにメインメニューが表示され、DebugMenu が無効になっている

  1. [Inspector] タブで、DebugMenuButton を含むテキスト フィールドの左上にあるチェックボックスをオンにして、有効にします。

DebugMenuButton のインスペクタ タブ\n(チェックボックスあり)

  1. プレファブを保存します。

エディタまたはデバイスでゲームを実行すると、メニューにアクセスできるようになります。

3. Remote Config サブメニューを有効にする

  1. Unity エディタの [Project] タブで、[Assets] > [Hamster] > [Prefabs] > [Menus] を開き、[DebugMenu] オブジェクトをダブルクリックして、エディタの [Hierarchy] タブで開きます。

    アセット、ハムスター、プレハブ、メニューの下にネストされた DebugMenu アイテム
  2. [階層] タブで階層を開き、[DebugMenu > Panel] の下にあるサブオブジェクト([Remote Config Actions])をクリックします。

Canvas、DebugMenu の下にネストされた Remote Config アクション

  1. Unity の [Inspector] タブで、オブジェクトの名前を含むテキスト フィールドの左側にあるチェックボックスをオンにして、[Remote Config Actions] を有効にします。

Remote Config を使用した Unity エディタ\nDebugMenu の [Panel] で有効になっているアクション

これには、Set Bored Of Subtitle と Set Enjoys Subtitle という 2 つの GameObject の子があります。どちらも、DebugMenu.cs に存在する未実装のメソッドを呼び出すように構成されています。

4. 字幕のオーバーライドをアプリ内デフォルトにリセット

前回の Codelab では、パラメータのデフォルト値を JSON としてオーバーライドし、条件を使用してさまざまなバリエーションを配信しました。この Codelab では、作成した条件を削除してアプリ内デフォルトを再導入し、A/B テストの結果でのみオーバーライドします。

アプリ内デフォルトを再度有効にするには:

  1. Firebase コンソールの Remote Config ページを開き、subtitle_override パラメータの横にある鉛筆アイコンをクリックして、[パラメータを編集] サイドパネルを開きます。
  2. 条件の横にある X アイコンをクリックして、条件を削除します。
  3. 残りのデフォルト値の横にある [アプリ内デフォルトを使用する] をオンにします。

Remote Config パラメータ エディタから条件を削除する

  1. [保存] をクリックして変更を保存し、[変更を公開] をクリックして変更を公開します。[Remote Config] ページの [変更を公開] オプション

5. デバッグ関数でユーザー プロパティを設定する

次に、DebugMenu.cs で、事前構成済みだが実装されていない Google アナリティクス関数の関数本体を記述します([アセット] > [ハムスター] > [スクリプト] > [状態] で確認できます)。

これらの関数は、ユーザー プロパティを設定します。ユーザー プロパティは、ユーザーベースのセグメントを記述する方法であり、ゲームの字幕に対するユーザーのフィードバックを記録するために使用されます。

SetUserBoredOfSubtitleSetUserEnjoysSubtitle を実装するには、DebugMenu.cs で既存のバージョンを見つけて、次のように上書きします。

void SetUserBoredOfSubtitle()
{
  Firebase.Analytics.FirebaseAnalytics.SetUserProperty("subtitle_sentiment", "bored");
}
void SetUserEnjoysSubtitle()
{
  Firebase.Analytics.FirebaseAnalytics.SetUserProperty("subtitle_sentiment", "enjoys");
}

アプリが Google アナリティクスで正しく設定されている場合は、これらの関数のいずれかを呼び出して、プロパティを Remote Config の条件で使用できるようにできます。モバイル デバイスから SetUserBoredOfSubtitle を呼び出すには、ゲームを起動してメインメニューの [Debug Menu] ボタンを押し、[Set Bored of Subtitle] を押します。

6. カスタム ディメンションを作成する

次に、subtitle_override にさまざまな字幕のバリエーションを設定して、どの字幕が最適かを確認します。ただし、A/B テストでは、現在の字幕に対する感情(subtitle_sentiment に記録)に「退屈」という単語が含まれるユーザーにのみ、これらのバリエーションを配信します。

カスタム ディメンションを使用して、アナリティクス イベントのカスタム パラメータを作成してトラッキングします。詳しくは、カスタム ディメンションとカスタム指標をご覧ください。

新しいカスタム ディメンションを作成するには:

  1. Firebase コンソールを開き、[アナリティクス] メニューを開いて、[カスタム定義] を選択します。
  2. [カスタム定義] ページで、[カスタム ディメンションを作成] をクリックします。
  3. [新しいカスタム ディメンション] ウィンドウで、ディメンション名を [字幕のセンチメント] に設定し、[スコープ] プルダウンから [ユーザー] を選択します。
  4. [ユーザー プロパティ] フィールドで、subtitle_sentiment. を選択します。

7. A/B Testing テストを設定する

次に、A/B Testing テストを作成して、subtitle_override に異なる値を設定し、2 ~ 3 日間のユーザー維持率を最適化するために、それらの値を相互にテストします。

  1. まず、Firebase コンソールの Remote Config ページsubtitle_override パラメータの [編集] を選択します。

[編集] オプションが表示されている Remote Config ページの subtitle_override パラメータ。

  1. 表示された [パラメータを編集] ダイアログで、[新規を追加] をクリックします。

Remote Config の [パラメータの編集] ページにある [新しいテストを追加] オプション。

  1. 表示されたリストから [テスト] を選択します。

Remote Config パラメータ ページ: 新しいテストを追加する

  1. テストの名前と説明を入力します。

テストの名前と説明\n セクション

  1. 次に、ターゲティング条件を選択します。まず、プルダウンからアプリを選択します。

アプリを選択した A/B Testing 構成の [ターゲティング] ステップ

  1. 次に、[かつ] をクリックして新しい条件を追加し、[ユーザー プロパティ] を選択して subtitle_sentiment を選択します。表示されない場合は、手動で入力します。
  2. 現在の字幕のセンチメントに「退屈」が含まれている動画にのみ字幕を設定するため、[contains] を選択し、bored と入力します。
  3. 必要に応じて、上記の条件に一致するオーディエンスのどの割合をテストに表示するかを選択します。簡単に制御できないランダム性を回避するには、[100%] を選択します。

\nsubtitle_sentiment が選択された A/B テストのターゲティング セクション

  1. 次に、テストで最大化を試みる目標を選択します。[定着(2 ~ 3 日)] を選択します。

[A/B テストの目標] セクション

  1. 次に、テストのパラメータを設定し、さまざまな字幕バリエーションを作成します。これらのパターンは、subtitle_sentiment に「bored」が含まれているユーザーに A/B テストで表示されるさまざまな値です。A/B テストでは、維持率を最大化するために最適なパターンを特定します。
  2. バリエーション A に次のパラメータ値を入力します。
    {"text":"A: A game about a mechanical hamster","fontSize":8,"textColor":{"r":0.0,"g":255.0,"b":0.0,"a":255.0}}
  3. バリエーション B に次のパラメータ値を入力します。
    {"text":"B: A game about a mechanical hamster","fontSize":14,"textColor":{"r":255.0,"g":0.0,"b":0.0,"a":255.0}}
  4. 次のように、バリエーションの比率を整数で設定します。
    • ベースライン: 1
    • バリエーション A: 100
    • パターン B: 100
    これにより、ベースラインの重み付けは 0.5%、バリアント A の重み付けは 49.8%、バリアント B の重み付けは 49.8% になります。バリアントの重み付けの設定\n セクションこれらのバリアントは、201 回のうち 1 回は、字幕に飽きたユーザーにデフォルトを表示し、200/201 回は 2 つの新しい値のいずれかを表示してタイトル画面をオーバーライドするように指定します。
  5. [テストを開始] をクリックして保存して送信し、確認ポップアップで [開始] をクリックします。[開始] をクリックしてテストを開始します。

8. Set User Property メソッドを実行して更新する

これで、ユーザーに関するさまざまなプロパティが設定されました。これらのプロパティは、ゲームのロジックや表示を制御するために使用できます。

SetUserProperty メソッドを実行したことがない、または enjoys に設定している場合でも、ゲームを開くとデフォルトの字幕が表示されます。

(再フェッチ前に)bored に設定した場合は、新しい値のいずれかが約 50/50 の比率で表示されます。

デバイスが A/B テストに登録されると、そのテストから受け取る値は変更されず、インストールごとに保持されます。そのため、他のテスト値を受け取るには、同じデバイス/シミュレータにゲームを再インストールするか、新しいデバイス/シミュレータにゲームをインストールして、新しいインストールを作成する必要があります。

ユーザーベース全体を対象に実施する実際の A/B テストでは、ベースラインに他のパターンと同様の重み付けを行う必要があります。ただし、この場合は、テストが機能していることを確認するために、非常に偏った確率を割り当てます。それでもデフォルト値が返される場合は、デバイスまたはシミュレータにゲームを再インストールしてみてください(1 月 201 日のケース)。

また、ユーザー プロパティを enjoys に戻しても、値がベースラインに戻ることはありません。ただし、enjoys に切り替えて再インストールすることで、ベースラインに戻すことができます。

9. お疲れさまでした

Remote Config A/B テストを使用して、さまざまな Remote Config 値をテストし、それぞれがアナリティクス指標に与える影響を判断しました。

学習した内容

  • 計測された Remote Config 値を使用して A/B Testing を設定する方法
  • A/B テストへの参加条件として Google アナリティクスのユーザー プロパティを使用する方法

次のステップ

テストが終了したら、プロジェクト内のテストのリストからテストを選択し、テストの処理方法を決定できます。1 つを「勝者」として選択しますか?それとも、さらにテストを実施しますか?