最初の実験を作成して実行する
このチュートリアルでは次を行います。
- パートナー センターで実験プロジェクトを作成します。この実験では、アプリのボタンのテキストと色を表すリモート変数をいくつか定義します。
- リモート変数の値を取得し、そのデータを使用してボタンの背景色を変更し、パートナー センターでビュー イベントとコンバージョン イベントのデータをログに記録するアプリを作成します。
- アプリのボタンの背景色を変更するとボタンのクリック回数が正常に増えるかどうかをテストする実験をプロジェクトに作成します。
- アプリを実行して、試験的機能のデータを収集します。
- パートナー センターで実験結果を確認し、アプリのすべてのユーザーに有効なバリエーションを選択して、実験を完了します。
パートナーセンターでの A/B テストの概要については、「A/B テストを使用してアプリの実験を実行する」をご覧ください。
前提条件
このチュートリアルを実行するには、パートナー センターのアカウントが必要です。また、「A/B テストを使用してアプリの実験を実行する」の説明に従って開発用コンピューターを構成する必要があります。
パートナーセンターでリモート変数を使用してプロジェクトを作成する
- パートナー センターにサインインします。
- 実験の作成に使用するアプリが既にパートナー センターにある場合は、パートナー センターでそのアプリを選択します。 パートナー センターにまだアプリがない場合は、名前を予約して新しいアプリを作成し、パートナー センターでそのアプリを選択します。
- ナビゲーション ウィンドウで、[サービス] をクリックし、[Experimentation] (試験的機能) をクリックします。
- 次のページの [プロジェクト] セクションで、[新しいプロジェクト] ボタンをクリックします。
- [新しいプロジェクト] ページで、新しいプロジェクトの名前として「Button Click Experiments」と入力します。
- [リモート変数] セクションを展開し、[変数の追加] を 4 回クリックします。 これで、空の変数行が 4 行追加されます。
- 最初の行で、変数名として「buttonText」と入力し、[既定値] 列に「Grey Button」と入力します。
- 2 番目の行で、変数名として「r」と入力し、[既定値] 列に「128」と入力します。
- 3 番目の行で、変数名として「g」と入力し、[既定値] 列に「128」と入力します。
- 4 番目の行で、変数名として「b」と入力し、[既定値] 列に「128」と入力します。
- [保存] をクリックし、[SDK 統合] セクションに表示されるプロジェクト ID 値を書き留めます。 次のセクションでは、アプリのコードを更新し、コードでこの値を参照します。
アプリで実験のコードを記述する
Visual Studio で、Visual C# を使用して新しいユニバーサル Windows プラットフォーム プロジェクトを作成します。 プロジェクトに「SampleExperiment」という名前を付けます。
ソリューション エクスプローラーで、プロジェクト ノードを展開し、[参照設定] を右クリックして [参照の追加] をクリックします。
[参照マネージャー] で、[ユニバーサル Windows] を展開し、[拡張機能] をクリックします。
SDK の一覧で、[Microsoft Engagement Framework] の横にあるチェック ボックスをオンにして、[OK] をクリックします。
ソリューション エクスプローラーで、MainPage.xaml をダブルクリックして、アプリでメイン ページのデザイナーを開きます。
[ツールボックス] からページにボタンをドラッグします。
デザイナーでボタンをダブルクリックしてコード ファイルを開き、Click イベントのイベント ハンドラーを追加します。
コード ファイルのすべての内容を次のコードで置き換えます。
projectId
変数を、前のセクションでパートナー センターから取得したプロジェクト ID 値に割り当てます。using System; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media; using System.Threading.Tasks; using Windows.UI; using Windows.UI.Core; // Namespace for A/B testing. using Microsoft.Services.Store.Engagement; namespace SampleExperiment { public sealed partial class MainPage : Page { private StoreServicesExperimentVariation variation; private StoreServicesCustomEventLogger logger; // Assign this variable to the project ID for your experiment from Dev Center. private string projectId = ""; public MainPage() { this.InitializeComponent(); // Because this call is not awaited, execution of the current method // continues before the call is completed. #pragma warning disable CS4014 InitializeExperiment(); #pragma warning restore CS4014 } private async Task InitializeExperiment() { // Get the current cached variation assignment for the experiment. var result = await StoreServicesExperimentVariation.GetCachedVariationAsync(projectId); variation = result.ExperimentVariation; // Check whether the cached variation assignment needs to be refreshed. // If so, then refresh it. if (result.ErrorCode != StoreServicesEngagementErrorCode.None || result.ExperimentVariation.IsStale) { result = await StoreServicesExperimentVariation.GetRefreshedVariationAsync(projectId); // If the call succeeds, use the new result. Otherwise, use the cached value. if (result.ErrorCode == StoreServicesEngagementErrorCode.None) { variation = result.ExperimentVariation; } } // Get remote variables named "buttonText", "r", "g", and "b" from the variation // assignment. If no variation assignment is available, the variables default // to "Grey button" for the button text and grey RGB value for the button color. var buttonText = variation.GetString("buttonText", "Grey Button"); var r = (byte)variation.GetInt32("r", 128); var g = (byte)variation.GetInt32("g", 128); var b = (byte)variation.GetInt32("b", 128); // Assign button text and color. await button.Dispatcher.RunAsync( CoreDispatcherPriority.Normal, () => { button.Background = new SolidColorBrush(Color.FromArgb(255, r, g, b)); button.Content = buttonText; button.Visibility = Visibility.Visible; }); // Log the view event named "userViewedButton" to Dev Center. if (logger == null) { logger = StoreServicesCustomEventLogger.GetDefault(); } logger.LogForVariation(variation, "userViewedButton"); } private void button_Click(object sender, RoutedEventArgs e) { // Log the conversion event named "userClickedButton" to Dev Center. if (logger == null) { logger = StoreServicesCustomEventLogger.GetDefault(); } logger.LogForVariation(variation, "userClickedButton"); } } }
コード ファイルを保存して、プロジェクトをビルドします。
パートナー センターで実験を作成する
- パートナー センターの ボタンクリック実験 プロジェクト ページに戻ります。
- [Experiments] セクションで、[New experiment] ボタンをクリックします。
- [実験の詳細] セクションで、[実験名] フィールドに「Optimize Button Clicks」と入力します。
- [ビュー イベント] セクションで、[ビュー イベント名] フィールドに「userViewedButton」と入力します。 この名前が、前のセクションで追加したコードで記録したビュー イベント文字列と一致することに注意してください。
- [Goals and conversion events] (目標とコンバージョン イベント) セクションで、次の値を入力します。
- [Goal name] (目標名) フィールドに「Increase Button Clicks」と入力します。
- [コンバージョン イベント名] フィールドに「userClickedButton」という名前を入力します。 この名前が、前のセクションで追加したコードで記録したコンバージョン イベント文字列と一致することに注意してください。
- [目標] フィールドで、[最大化] を選択します。
- [リモート変数とバリエーション] セクションで、バリエーションがアプリに均等に配分されるように [均等に配布する] チェック ボックスがオンになっていることを確認します。
- 実験に変数を追加します。
- ドロップダウン コントロールをクリックし、[buttonText] を選択して、[変数の追加] をクリックします。 文字列 Grey Button が [バリエーション A] 列に自動的に表示されます (この値はプロジェクトの設定から派生します)。 [バリエーション B] 列で、「Blue Button」と入力します。
- もう一度ドロップダウン コントロールをクリックし、[r] を選択して、[変数の追加] をクリックします。 文字列 128 が [バリエーション A] 列に自動的に表示されます。 [バリエーション B] 列で、「1」と入力します。
- もう一度ドロップダウン コントロールをクリックし、[g] を選択して、[変数の追加] をクリックします。 文字列 128 が [バリエーション A] 列に自動的に表示されます。 [バリエーション B] 列で、「1」と入力します。
- もう一度ドロップダウン コントロールをクリックし、[b] を選択して、[変数の追加] をクリックします。 文字列 128 が [バリエーション A] 列に自動的に表示されます。 [バリエーション B] 列で、「255」と入力します。
- [保存] をクリックし、[アクティブ化] をクリックします。
重要
実験の作成時に [編集可能な実験] チェック ボックスをオンにしていないと、実験をアクティブ化した後で実験のパラメーターを変更できなくなります。 通常は、アプリで実験のコードを記述してから実験をアクティブ化することをお勧めします。
アプリを実行して実験データを収集する
- 前の手順で作成した SampleExperiment アプリを実行します。
- 灰色または青色のボタンが表示されることを確認します。 ボタンをクリックしてアプリを閉じます。
- 同じコンピューターで上記の手順を複数回繰り返して、同じボタンの色がアプリに表示されることを確認します。
結果を確認して実験の実行を完了する
前のセクションの手順を完了して少なくとも数時間経ってから、次の手順に従って試験的機能の実行結果を確認し、試験的機能の実行を完了します。
注意
実験をアクティブ化するとすぐに、パートナー センターでは、実験のデータをログに記録するようにインストルメント化されたアプリからデータの収集が開始されます。 ただし、実験のデータがパートナー センターに表示されるまでに数時間かかることがあります。
パートナー センターで、アプリの [実験] ページに戻ります。
[アクティブな実験] セクションで、[Optimize Button Clicks] (ボタンのクリックを最適化) をクリックしてこの実験のページに移動します。
[Results summary] (結果の要約) セクションと [Results details] (結果の詳細) セクションに表示される結果が想定した結果と一致していることを確認します。 これらのセクションについて詳しくは、パートナーで実験を管理する方法に関するセクションをご覧ください。
注意
パートナー センターでレポートされるのは、24 時間以内に発生した、各ユーザーの最初のコンバージョン イベントのみです。 ユーザーが 24 時間以内にアプリで複数のコンバージョン イベントをトリガーした場合は、最初のコンバージョン イベントのみ報告されます。 これは、多数のコンバージョン イベントを使用する単一のユーザーによって、サンプルのユーザー グループの実験の実行結果が歪曲されないようにすることを目的としています。
これで、実験の実行を終了できるようになりました。 [Results summary] (結果の要約) セクションの [Variation B] (バリエーション B) 列で、[切り替え] をクリックします。 これで、アプリのすべてのユーザーが青色のボタンに切り替えられます。
[OK] をクリックして、試験的機能を終了することを確認します。
前のセクションで作成した SampleExperiment アプリを実行します。
青色のボタンが表示されることを確認します。 更新されたバリエーションの割り当てをアプリが受信するまでに、最大で 2 分かかる場合があります。