次の方法で共有


アプリの実験用のコードを記述する

パートナー センター ダッシュボードでプロジェクトを作成し、リモート変数を定義した後、ユニバーサル Windows プラットフォーム (UWP) アプリでコードを更新して、次の操作を行うことができます。

  • パートナー センターでリモート変数値を受け取る。
  • リモート変数を使用して、ユーザーのアプリ エクスペリエンスを構成する。
  • ユーザーが実験を表示し、必要なアクションを実行 ("コンバージョン" とも呼ばれます) したタイミングを示すイベントのログを、パートナー センターに記録する。

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

以降のセクションでは、試験的機能のバリエーションを取得し、パートナー センターでイベントをログに記録するための一般的なプロセスについて説明します。 アプリの実験用のコードを記述すると、パートナー センターで実験を定義できます。 実験の作成と実行のプロセスについて詳しく示すチュートリアルについては、「A/B テストを使用して最初の実験を作成および実行する」をご覧ください。

注意

Microsoft Store Services SDK に含まれる一部の実験 API は、非同期パターンを使用してパートナー センターからデータを取得します。 これは、これらのメソッドの一部が、メソッドが呼び出された後に実行されることを意味し、アプリの UI は、操作が完了するまでの間、高い応答性を維持できます。 この記事のコード例に示すように、非同期パターンでは、アプリで API を呼び出すときに、async キーワードと await 演算子を使用する必要があります。 慣例により、非同期メソッドの末尾には 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 名前空間の using ステートメントがあることを前提としています。

バリエーション データを取得し、実験のビュー イベントをログに記録する

プロジェクトで、試験的機能の実行において変更する機能のコードを探します。 バリエーションのデータを取得するコードを追加し、このデータを使用して、テストしている機能の動作を変更します。次に、実験のビュー イベントのログを、パートナー センターの 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 という名前の変数を取得し、Grey Button の既定の変数値を指定します。

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

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

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

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

コンバージョン イベントのログをパートナー センターに記録する

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

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

    次の例では、ボタンの Click イベント ハンドラーから userClickedButton という名前のコンバージョン イベントをログに記録します。 この例では、実験の目的は、ユーザーにボタンをクリックさせることです。

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

次の手順

アプリの実験用のコードを記述したら、次の手順に進むことができます。

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