1. はじめに
この Codelab では、Firebase Remote Config を使用してゲームを計測するで変更したサンプルゲーム MechaHamster: Level Up with Firebase エディションの A/B Testing を使用して Remote Config テストを作成する方法を学びます。
Remote Config を使用した A/B Testing では、アプリの 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 プレハブからアクセスするには、ボタンを有効にする必要があります。
- Unity エディタで [Project] タブを選択し、[Assets] で [Hamster] を展開します。プレハブ >Menus] に移動し、[MainMenu] をクリックします。
- プレハブ階層で、無効化された DebugMenuButton という名前のサブオブジェクトを見つけてクリックし、[Inspector] タブで開きます。
- [Inspector] タブで、左上の [DebugMenuButton] を含むテキスト フィールドの横にあるチェックボックスをオンにして有効にします。
- プレハブを保存します。
エディタまたはデバイスでゲームを実行すると、メニューにアクセスできるようになります。
3. Remote Config サブメニューを有効にする
- Unity Editor の [Project] タブで、[Assets] を展開します。ハムスター >プレハブ >Menus に移動し、DebugMenu オブジェクトをダブルクリックして、エディタの [Hierarchy] タブで開きます。
- [Hierarchy] タブで階層を展開し、DebugMenu >Remote Config Actions というラベルが付けられています。
- Unity の [Inspector] タブで、オブジェクト名を含むテキスト フィールドの左側にあるチェックボックスをオンにして、[Remote Config Actions] を有効にします。
この中には、Set Bored Of Subtitle と Set Comes Subtitle という名前の 2 つの GameObject の子があります。どちらも DebugMenu.cs
の既存の未実装メソッドを呼び出すように構成されています。
4. 字幕のオーバーライドをアプリ内のデフォルトにリセットする
前の Codelab では、パラメータのデフォルト値を JSON としてオーバーライドし、条件を使用してさまざまなバリアントを提供しました。この Codelab の一環として、作成した条件を削除してアプリ内デフォルトを再度導入し、A/B Testing の結果のみでオーバーライドします。
アプリ内デフォルトを再度有効にするには:
- Firebase コンソールの Remote Config ページを開き、
subtitle_override
パラメータの横にある鉛筆アイコンをクリックして、[パラメータを編集] サイドパネルを開きます。 - 削除する条件の横にある [X] アイコンをクリックします。
- 残りのデフォルト値の横にある [Use in-app default] 切り替えボタンをオンにします。
- [保存] をクリックして変更を保存し、[変更を公開] をクリックして変更を公開します。
5. デバッグ関数でユーザー プロパティを設定する
次に、事前構成済みで実装されていない Google アナリティクス関数の関数本体を DebugMenu.cs
([Assets] > [Hamster] > [Scripts] > [States] にあります)に記述します。
これらの関数は、ユーザー プロパティを設定します。ユーザー プロパティはユーザーベースのセグメントを記述する方法であり、ゲームのサブタイトルについてユーザーがどう感じているかを記録するために使用されます。
SetUserBoredOfSubtitle
と SetUserEnjoysSubtitle
を実装するには、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
で記録されている)に対して「退屈」という言葉が含まれるユーザーのみにこれらのパターンを配信します。
カスタム ディメンションを使用して、アナリティクス イベントでカスタム パラメータを作成し、トラッキングします。詳しくは、カスタム ディメンションとカスタム指標をご覧ください。
新しいカスタム ディメンションを作成するには:
- Firebase コンソールを開き、[アナリティクス] メニューを展開して、[カスタム定義] を選択します。
- [カスタム定義] ページで、[カスタム ディメンションを作成] をクリックします。
- [新しいカスタム ディメンション] ウィンドウで、ディメンション名を「字幕感情」に設定します。[範囲] プルダウンから [ユーザー] を選択します。
- [ユーザー プロパティ] フィールドで [
subtitle_sentiment.
] を選択します。
7. A/B Testing のテストをセットアップする
次に、2 ~ 3 日間のユーザー維持率を最適化するために、A/B Testing のテストを作成し、subtitle_override
に異なる値を設定して比較します。
- まず、Firebase コンソールの Remote Config ページで、
subtitle_override
パラメータの [編集] を選択します。
- 表示された [パラメータを編集] ダイアログで、[新たに追加] をクリックします。
- 表示されたリストから [テスト] を選択します。
- テストの名前と説明を入力します。
- 次にターゲティング条件を選択しますまず、プルダウンからアプリを選択します。
- 次に、[AND] をクリックして新しい条件を追加し、[ユーザー プロパティ]、[
subtitle_sentiment
] の順に選択します。表示されない場合は、手動で入力します。 - 現在の字幕の感情に「bored」が含まれるユーザーにのみ字幕を設定するため、[contains] を選択して「
bored
」と入力します。 - (省略可)上記の条件に一致するオーディエンスのうち、テストの対象とするユーザーの割合を選択します。[100%] を選択すると、簡単に制御できないランダム性を回避できます。
- 次に、テストで最大化しようとする目標を選択します。[保持(2 ~ 3 日)] を選択します。
- 次に、テスト用のパラメータを設定し、さまざまな字幕のバリエーションを作成します。これらのパターンは、
subtitle_sentiment
に「退屈」、A/B Testing により、ユーザー維持率を最大化するうえで最適なパターンが特定されます。 - パターン A に次のパラメータ値を入力します。
{"text":"A: A game about a mechanical hamster","fontSize":8,"textColor":{"r":0.0,"g":255.0,"b":0.0,"a":255.0}}
- パターン B に次のパラメータ値を入力します。
{"text":"B: A game about a mechanical hamster","fontSize":14,"textColor":{"r":255.0,"g":0.0,"b":0.0,"a":255.0}}
- 以下のように、整数のバリアントの比率を設定します。
- ベースライン: 1
- バリエーション A: 100
- バリエーション B: 100
- [テストを開始] をクリックして保存し、送信し、確認ポップアップで [開始] をクリックします。
8. ユーザー プロパティの設定メソッドを実行して更新
これで、ユーザーに関するさまざまなプロパティが設定されました。これらのプロパティを使用して、ゲームのロジックや表示方法を指定できます。
SetUserProperty
メソッドをまだ実行していない場合や、enjoys
に設定している場合は、ゲームを開くとデフォルトのサブタイトルが表示されます。
(再取得する前に)bored
に設定すると、新しい値のいずれかが約 50 対 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 人を選びますか?テストをさらに行うか