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 Testing テストを作成します。最後に、そのデータを使用してオーディエンスの詳細を把握します。

学習内容

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

前提条件

必要なもの

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

2. デバッグ メニューの有効化

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

  1. Unity エディタで [Project] タブを選択し、[Assets] で [Hamster] を展開します。プレハブ >Menus] に移動し、[MainMenu] をクリックします。

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

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

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

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

チェックボックス付きの\nDebugMenuButton の [Inspector] タブ

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

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

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

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

    Assets、Hamster、Prefabs、Menus に\n ネストされた DebugMenu アイテム
  2. [Hierarchy] タブで階層を展開し、DebugMenu >。このパネルには Remote Config のアクション というラベルが付いています。

Remote Config のアクションは Canvas、DebugMenu の下に\n ネストされています

  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. デバッグ関数でユーザー プロパティを設定する

事前構成済みで実装されていない Google アナリティクス関数の関数本体を DebugMenu.cs([Assets] > [Hamster] > [Scripts] > [States] にあります)に記述します。

これらの関数は、ユーザー プロパティを設定します。ユーザー プロパティは、ユーザーベースをセグメントに分けて表現する方法であり、ゲームの字幕に対するユーザーの意見を記録するために使用されます。

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 Edit] パラメータ ページの [Add new experiment] オプション。

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

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

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

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

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

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

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

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

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

A/B Testing の目標のセクション

  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 回が字幕に飽きているユーザーに対しては A/B Testing がデフォルトとして配信されますが、200 回と 201 回で 2 つの新しい値のうち 1 つを配信し、タイトル画面を上書きします。
  5. [テストを開始] をクリックして保存して送信し、確認ポップアップで [開始] をクリックします。[開始] をクリックしてテストを開始します。

8. ユーザー プロパティの設定メソッドを実行して更新

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

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

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

デバイスが A/B Testing に入ると、そのテストで受け取る値は変更されず、インストールごとに永続的になります。そのため、他の試験運用版の値のいずれかを受け取るには、同じデバイス/シミュレータにゲームを再インストールするか、新しいデバイス/シミュレータにゲームをインストールすることで、新たにインストールを作成する必要があります。

ユーザーベース全体で実施する実際の A/B テストでは、ベースラインに他のパターンと同様の重みを設定します。しかし、この場合は、テストが機能していることを検証するため、かなり偏った確率を割り当てます。(1/201 のケースで)デフォルト値が引き続き表示される場合は、デバイス/シミュレータにゲームを再インストールしてください。

ユーザー プロパティを enjoys に戻しても値がベースラインに戻らないという効果もありますが、これも enjoys に切り替えて再インストールすることで変更できます。

9. 完了

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

学習した内容

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

次のステップ

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