アプリの実験用のコードを記述する
パートナー センター ダッシュボードでプロジェクトを作成し、リモート変数を定義した後、ユニバーサル Windows プラットフォーム (UWP) アプリでコードを更新して、次の操作を行うことができます。
- パートナー センターでリモート変数値を受け取る。
- リモート変数を使用して、ユーザーのアプリ エクスペリエンスを構成します。
- ユーザーが実験を表示し、必要なアクションを実行 ("コンバージョン" とも呼ばれます) したタイミングを示すイベントのログを、パートナー センターに記録する。
この動作をアプリに追加するには、Microsoft Store Services SDK によって提供される API を使用します。
以降のセクションでは、試験的機能のバリエーションを取得し、パートナー センターでイベントをログに記録するための一般的なプロセスについて説明します。 アプリの実験用のコードを記述すると、パートナー センターで実験を定義できます。 実験の作成と実行のプロセスについて詳しく示すチュートリアルについては、「A/B テストを使用して最初の実験を作成および実行する」をご覧ください。
Note
Microsoft Store Services SDK に含まれる一部の実験 API は、非同期パターンを使用してパートナー センターからデータを取得します。 つまり、これらのメソッドの実行の一部はメソッドが呼び出された後に行われる可能性があるため、操作が完了してもアプリの UI の応答性を維持できます。 非同期パターンでは、この記事のコード例に示すように、API を呼び出すときに、アプリで async キーワードと await 演算子を使用する必要があります。 慣例により、非同期メソッドは Async で終わっています。
プロジェクトを構成する
開始するには、開発用コンピューターに Microsoft Store Services SDK をインストールし、必要な参照をプロジェクトに追加します。
- Microsoft Store Services SDK をインストールします。
- Visual Studio でプロジェクトを開きます。
- ソリューション エクスプローラーで、プロジェクト ノードを展開し、[参照設定] を右クリックして [参照の追加] をクリックします。
- [参照マネージャー] で、[ユニバーサル Windows] を展開し、[拡張機能] をクリックします。
- SDK の一覧で、[Microsoft Engagement Framework] の横にあるチェック ボックスをオンにして、[OK] をクリックします。
Note
この記事のコード例では、コード ファイルに System.Threading.Tasks および Microsoft.Services.Store.Engagement 名前空間の使用 ステートメントがあることを前提としています。
バリエーション データを取得し、実験のビュー イベントをログに記録する
プロジェクトで、実験で変更する機能のコードを見つけます。 バリエーションのデータを取得するコードを追加し、このデータを使用して、テストしている機能の動作を変更します。次に、実験のビュー イベントのログを、パートナー センターの A/B テスト サービスに記録します。
必要な特定のコードはアプリによって異なりますが、次の例は基本的なプロセスを示しています。 完全なコード例については、「 A/B テストを使用して最初の実験を作成して実行するを参照してください。
private StoreServicesExperimentVariation variation;
private StoreServicesCustomEventLogger logger;
// Assign this variable to the project ID for your experiment from Dev Center.
// The project ID shown below is for example purposes only.
private string projectId = "F48AC670-4472-4387-AB7D-D65B095153FB";
private async Task InitializeExperiment()
{
// Get the current cached variation assignment for the experiment.
var result = await StoreServicesExperimentVariation.GetCachedVariationAsync(projectId);
variation = result.ExperimentVariation;
// Refresh the cached variation assignment if necessary.
if (result.ErrorCode != StoreServicesEngagementErrorCode.None || result.ExperimentVariation.IsStale)
{
result = await StoreServicesExperimentVariation.GetRefreshedVariationAsync(projectId);
if (result.ErrorCode == StoreServicesEngagementErrorCode.None)
{
variation = result.ExperimentVariation;
}
}
// Get the remote variable named "buttonText" and assign the value
// to the button.
var buttonText = variation.GetString("buttonText", "Grey Button");
await button.Dispatcher.RunAsync(
Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
button.Content = buttonText;
});
// Log the view event named "userViewedButton" to Dev Center.
if (logger == null)
{
logger = StoreServicesCustomEventLogger.GetDefault();
}
logger.LogForVariation(variation, "userViewedButton");
}
次の手順では、このプロセスの重要な部分について詳しく説明します。
現在のバリエーションの割り当てを表す StoreServicesExperimentVariation オブジェクトと、ビュー イベントとコンバージョン イベントのログをパートナー センターに記録するときに使用する StoreServicesCustomEventLogger オブジェクトを宣言します。
private StoreServicesExperimentVariation variation; private StoreServicesCustomEventLogger logger;
取得する実験の project ID に割り当てられた文字列変数を宣言します。
Note
パートナー センターでプロジェクトを作成するときに、プロジェクト ID を取得します。 次に示すプロジェクト ID は、例を目的としています。
private string projectId = "F48AC670-4472-4387-AB7D-D65B095153FB";
静的 GetCachedVariationAsync メソッドを呼び出して、実験の現在のキャッシュされたバリエーションの割り当てを取得し、実験のプロジェクト ID をメソッドに渡します。 このメソッドは、 StoreServicesExperimentVariationResult オブジェクトを返します。これにより、 ExperimentVariation プロパティを介してバリエーションの割り当てにアクセスできます。
var result = await StoreServicesExperimentVariation.GetCachedVariationAsync(projectId); variation = result.ExperimentVariation;
IsStale プロパティを調べて、キャッシュされたバリエーションの割り当てをサーバーからのリモート バリエーション割り当てで更新する必要があるかどうかを判断します。 更新する必要がある場合は、静的 GetRefreshedVariationAsync メソッドを呼び出して、サーバーからの更新されたバリエーションの割り当てを確認し、ローカルにキャッシュされたバリエーションを更新します。
if (result.ErrorCode != StoreServicesEngagementErrorCode.None || result.ExperimentVariation.IsStale) { result = await StoreServicesExperimentVariation.GetRefreshedVariationAsync(projectId); if (result.ErrorCode == StoreServicesEngagementErrorCode.None) { variation = result.ExperimentVariation; } }
バリエーションの割り当ての値を取得するには、StoreServicesExperimentVariation オブジェクトの GetBoolean、GetDouble、GetInt32、または GetString メソッドを使用します。 各メソッドの最初のパラメーターは、取得する設定のバリエーションの名前 (パートナー センターで入力するバリエーションと同じ名前) です。 2 番目のパラメーターは、パートナー センターから指定された値を取得できない場合 (たとえば、ネットワークから切断されている場合) やキャッシュされたバージョンのバリエーションを利用できない場合にメソッドが返す必要のある既定値です。
次の例では、 GetString を使用して buttonText という名前の変数を取得し Grey Button の既定の変数値を指定します。
var buttonText = variation.GetString("buttonText", "Grey Button");
コードで変数値を使用して、テストする機能の動作を変更します。 たとえば、次のコードは、 buttonText 値をアプリ内のボタンの内容に割り当てます。 この例では、プロジェクト内の別の場所でこのボタンを既に定義していることを前提としています。
await button.Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, () => { button.Content = buttonText; });
最後に、実験のビュー イベントのログをパートナー センターの A/B テスト サービスに記録します。
logger
フィールドを StoreServicesCustomEventLogger オブジェクトに初期化し、LogForVariation メソッドを呼び出します。 現在のバリエーションの割り当てを表す StoreServicesExperimentVariation オブジェクト (このオブジェクトはイベントに関するコンテキストをパートナー センターに提供します) と、実験のビュー イベントの名前を渡します。 これは、パートナー センターで実験について入力したビュー イベント名と一致している必要があります。 コードでは、ユーザーが実験の一部であるバリエーションの表示を開始したときに、ビュー イベントをログに記録する必要があります。次の例では、 userViewedButton という名前のビュー イベントをログに記録する方法を示します。 この例では、実験の目的は、ユーザーにアプリ内のボタンをクリックしてもらうため、アプリがバリエーション データ (この場合はボタン テキスト) を取得し、ボタンのコンテンツに割り当てた後にビュー イベントがログに記録されます。
if (logger == null) { logger = StoreServicesCustomEventLogger.GetDefault(); } logger.LogForVariation(variation, "userViewedButton");
コンバージョン イベントのログをパートナー センターに記録する
次に、コンバージョン イベントのログをパートナー センターの A/B テスト サービスに記録するコードを追加します。 コードでは、ユーザーが実験の目標に達したときに変換イベントをログに記録する必要があります。 必要な特定のコードはアプリによって異なりますが、一般的な手順は次のとおりです。 完全なコード例については、「 A/B テストを使用して最初の実験を作成して実行するを参照してください。
ユーザーが実験のいずれかの目標に達したときに実行されるコードで、 LogForVariation メソッドをもう一度呼び出し、 StoreServicesExperimentVariation オブジェクトと実験の変換イベントの名前を渡します。 これは、パートナー センターで実験について入力したコンバージョン イベント名のいずれかと一致している必要があります。
次の例では、ボタンの Click イベント ハンドラーから userClickedButton という名前の変換イベントをログに記録します。 この例では、実験の目的は、ユーザーにボタンをクリックしてもらう方法です。
private void button_Click(object sender, RoutedEventArgs e) { if (logger == null) { logger = StoreServicesCustomEventLogger.GetDefault(); } logger.LogForVariation(variation, "userClickedButton"); }
次のステップ
アプリで実験をコーディングしたら、次の手順を実行できます。
- パートナー センターで実験を定義する。 A/B テストのビュー イベント、変換イベント、および一意のバリエーションを定義する実験を作成します。
- パートナー センターで実験を実行および管理する。