次の方法で共有


実験用にアプリをコーディングする

パートナー センターでプロジェクトを作成し、リモート変数を定義 したら、ユニバーサル Windows プラットフォーム (UWP) アプリのコードを次に更新する準備が整います。

  • パートナー センターからリモート変数の値を受け取ります。
  • リモート変数を使用して、ユーザーのアプリ エクスペリエンスを構成します。
  • ユーザーが実験を表示し、目的のアクション(変換とも呼ばれます)を実行したことを示すログイベントをパートナーセンターに記録します。

この動作をアプリに追加するには、Microsoft Store Services SDK によって提供される API を使用します。

次のセクションでは、実験のバリエーションを取得し、パートナー センターにイベントをログに記録する一般的なプロセスについて説明します。 アプリを実験用にコーディングした後、パートナーセンターで実験を定義することができます 。 実験を作成して実行するエンドツーエンドのプロセスを示すチュートリアルについては、「A/B テストを使用して最初の実験を作成して実行する」を参照してください。

Microsoft Store Services SDK の一部の実験 API では、非同期パターン を使用してパートナー センターからデータを取得します。 つまり、これらのメソッドの実行の一部はメソッドが呼び出された後に行われる可能性があるため、操作が完了してもアプリの UI の応答性を維持できます。 非同期パターンでは、この記事のコード例で示すように、アプリで async キーワードと await 演算子を使用し、API を呼び出す際にそれを待機する必要があります。 慣例により、非同期メソッドはAsyncで終了します。

プロジェクトを構成する

開始するには、開発用コンピューターに Microsoft Store Services SDK をインストールし、必要な参照をプロジェクトに追加します。

  1. Microsoft Store Services SDKをインストールします。
  2. Visual Studio でプロジェクトを開きます。
  3. ソリューション エクスプローラーで、プロジェクト ノードを展開し、[参照] を右クリックし、[参照の追加] をクリックします。
  4. 参照マネージャーで、[ユニバーサル Windows] を展開し、[拡張機能] をクリックします。
  5. SDK の一覧で、Microsoft Engagement Framework の横にあるチェック ボックス 選択し、[OK] クリック

この記事のコード例では、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");
}

次の手順では、このプロセスの重要な部分について詳しく説明します。

  1. 現在のバリエーションの割り当てを表す StoreServicesExperimentVariation オブジェクトと、ビュー イベントと変換イベントをパートナー センターに記録するために使用する StoreServicesCustomEventLogger オブジェクトを宣言します。

    private StoreServicesExperimentVariation variation;
    private StoreServicesCustomEventLogger logger;
    
  2. 取得する実験の プロジェクト ID に割り当てられている文字列変数を宣言します。

    プロジェクトをパートナー センターで作成すると 、プロジェクト ID を取得します。 次に示すプロジェクト ID は、例を目的としています。

    private string projectId = "F48AC670-4472-4387-AB7D-D65B095153FB";
    
  3. 静的 GetCachedVariationAsync メソッドを呼び出して実験の現在のキャッシュされたバリエーションの割り当てを取得し、実験のプロジェクト ID をメソッドに渡します。 このメソッドは、ExperimentVariation プロパティを介してバリエーションの割り当てへのアクセスを提供する StoreServicesExperimentVariationResult オブジェクトを返します。

    var result = await StoreServicesExperimentVariation.GetCachedVariationAsync(projectId);
    variation = result.ExperimentVariation;
    
  4. IsStale プロパティを調べて、キャッシュされたバリエーションの割り当てをサーバーからのリモート バリエーション割り当てで更新する必要があるかどうかを判断します。 更新する必要がある場合は、静的 GetRefreshedVariationAsync メソッドを呼び出して、サーバーから更新されたバリエーションの割り当てを確認し、ローカルにキャッシュされたバリエーションを更新します。

    if (result.ErrorCode != StoreServicesEngagementErrorCode.None || result.ExperimentVariation.IsStale)
    {
        result = await StoreServicesExperimentVariation.GetRefreshedVariationAsync(projectId);
    
        if (result.ErrorCode == StoreServicesEngagementErrorCode.None)
        {
            variation = result.ExperimentVariation;
        }
    }
    
  5. StoreServicesExperimentVariation オブジェクトの GetBooleanGetDoubleGetInt32、または GetString メソッドを使用して、バリエーション割り当ての値を取得します。 各メソッドでは、最初のパラメーターは取得するバリエーションの名前です (これは、パートナー センターで入力したバリエーションの名前と同じです)。 2 番目のパラメーターは、パートナー センターから指定した値を取得できず (ネットワーク接続がない場合など)、キャッシュされたバージョンのバリエーションを使用できない場合に、メソッドが返す既定値です。

    次の例では、GetString を使用して buttonText という名前の変数 取得し、既定の変数値 灰色のボタンを指定します。

    var buttonText = variation.GetString("buttonText", "Grey Button");
    
  6. コードで変数値を使用して、テストする機能の動作を変更します。 たとえば、次のコードは、buttonText 値をアプリ内のボタンの内容に割り当てます。 この例では、プロジェクト内の別の場所でこのボタンを既に定義していることを前提としています。

    await button.Dispatcher.RunAsync(
        Windows.UI.Core.CoreDispatcherPriority.Normal,
        () =>
        {
            button.Content = buttonText;
        });
    
  7. 最後に、実験の ビュー イベント をパートナー センターの A/B テスト サービスに記録します。 logger フィールドを StoreServicesCustomEventLogger オブジェクトに初期化し、LogForVariation メソッドを呼び出します。 現在のバリエーションの割り当てを表す StoreServicesExperimentVariation オブジェクト (このオブジェクトは、パートナー センターにイベントに関するコンテキストを提供します) と、実験のビュー イベントの名前を渡します。 これは、パートナー センターで実験に入力したビュー イベント名と一致する必要があります。 コードでは、ユーザーが実験の一部であるバリエーションの表示を開始したときに、ビュー イベントをログに記録する必要があります。

    次の例では、ビュー イベント「userViewedButton」をログに記録する方法を示します。 この例では、実験の目的は、ユーザーにアプリ内のボタンをクリックしてもらうため、アプリがバリエーション データ (この場合はボタン テキスト) を取得し、ボタンのコンテンツに割り当てた後にビュー イベントがログに記録されます。

    if (logger == null)
    {
        logger = StoreServicesCustomEventLogger.GetDefault();
    }
    
    logger.LogForVariation(variation, "userViewedButton");
    

変換イベントをパートナー センターに記録する

次に、パートナー センター A/B テスト サービスに 変換イベントをログに記録するコードを追加します。 コードでは、ユーザーが実験の目標に達したときに変換イベントをログに記録する必要があります。 必要な特定のコードはアプリによって異なりますが、一般的な手順は次のとおりです。 完全なコード例については、「A/B テストを使用して最初の実験を作成して実行する」を参照してください。

  1. ユーザーが実験のいずれかの目標に達したときに実行されるコードで、LogForVariation メソッドをもう一度呼び出し、StoreServicesExperimentVariation オブジェクトと実験の変換イベントの名前を渡します。 これは、パートナー センターで実験に入力する変換イベント名の 1 つと一致する必要があります。

    次の例では、ボタンの Click イベント ハンドラーから、userClickedButton という名前の変換イベントをログに記録します。 この例では、実験の目的は、ユーザーにボタンをクリックしてもらう方法です。

    private void button_Click(object sender, RoutedEventArgs e)
    {
        if (logger == null)
        {
            logger = StoreServicesCustomEventLogger.GetDefault();
        }
    
        logger.LogForVariation(variation, "userClickedButton");
    }
    

次のステップ

アプリで実験をコーディングしたら、次の手順を実行できます。

  1. パートナー センターで実験を定義します。 A/B テストのビュー イベント、変換イベント、および一意のバリエーションを定義する実験を作成します。
  2. パートナー センターで実験を実行して管理します。