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

1. はじめに

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

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

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

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

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

学習内容

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

前提条件

必要なもの

  • iOS および Android ビルドをサポートする Unity 2019.1.0f1 以降

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

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

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

アセットが表示された Unity エディタの [Project] タブ。Hamster、プレハブ、メニュー

  1. プレハブの階層で、DebugMenuButton という名前の無効なサブオブジェクトを見つけてクリックし、[インスペクタ] タブで開きます。

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

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

チェックボックス付きの DebugMenuButton の Inspector タブ

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

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

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

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

    Assets、Hamster、Prefabs、Menus の下にネストされた 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([Assets] > [Hamster] > [Scripts] > [States] にあります)で、事前に設定されているものの実装されていない 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 を呼び出すには、ゲームを起動してメインメニューの [デバッグ メニュー] ボタンを押し、[字幕に飽きた] を押します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[A/B Testing Targeting] セクションで [subtitle_sentiment] が選択されている

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

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

  1. 次に、テストのパラメータを設定し、さまざまな字幕のバリエーションを作成します。これらのバリエーションは、subtitle_sentiment に「退屈」が含まれるユーザーに 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% になります。バリアントの重み付けの構成セクションこれらのパターンは、201 回に 1 回、字幕に飽きたユーザーにデフォルトが配信されることを指定しますが、201 回に 200 回は、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 テストを設定する方法
  • Google アナリティクスのユーザー プロパティを A/B テストの条件の一部として使用する方法

次のステップ

テストが終了したら、プロジェクトのテストのリストから 1 つ選択して、テストの処理方法を決定できます。いずれかを「優位なパターン」として選択しますか?それとも、さらにテストを実施しますか?