Firebase Predictions を使用してプロモーション戦略をテストする

Firebase Predictions を使用すると、ユーザーがアプリ内購入を行う可能性に基づいて、各ユーザーのアプリ内プロモーションを最適化できます。たとえば、支出する可能性の高いユーザーには高価な「プレミアム」バンドルを宣伝し、他のユーザーには安価な基本バンドルを宣伝できます。

次に、Firebase A/B テストを実施することにより、単純に基本バンドルやプレミアム バンドルを常に提示することに比べ、この予測ベースの戦略がアプリ内購入の収益にどのように影響するかを確認できます。

始める前に

Predictions を活用してアプリのプロモーション戦略を策定するには、あらかじめアプリで Firebase 向け Google アナリティクスを有効にする必要があります。具体的な要件は以下のとおりです。

  • Firebase コンソールアナリティクスのデータ共有を有効にします。
  • ecommerce_purchase など、自動的に収集されない支出関連のイベントを明示的に記録します(Firebase では、App Store および Play ストアで処理されるアプリ内購入の in_app_purchase イベントは自動的に記録されます)。また、分類に使用できるデータを最大化するために、アプリに関連する他のイベントも広く記録する必要があります。
  • Firebase で意味のある予測をするのに十分なイベントデータ量を保持します。Firebase Predictions に必要なデータ量の目安は、月間アクティブ ユーザー 10,000 人、正例データと負例データそれぞれ 500 件です。

プロモーションをリモートで構成可能にする

まず、Remote Config パラメータの値に応じて基本バンドルまたはプレミアム バンドルのいずれかを宣伝するようにアプリを設定します。以下の手順では、Predictions と A/B テストを構成し、さまざまな基準に基づいてパラメータをリモートで設定しますが、この時点では、アプリは常に基本バンドルを宣伝します。

次に例を示します。

  1. アナリティクスおよび Remote Config SDK をインポートします。

    iOS - Swift

    Podfile に SDK を追加します。

    pod 'Firebase/Core'
    pod 'Firebase/RemoteConfig'
    

    次に、それらをインポートします。

    import Firebase
    

    Android

    implementation 'com.google.firebase:firebase-core:16.0.5'
    implementation 'com.google.firebase:firebase-config:16.1.0'
    
  2. Remote Config を初期化し、promoted_bundle 変数のデフォルト値を basic に設定します。この後で、Predictions と A/B テストを設定して、この変数をリモートで設定しますが、アプリでデフォルト値を設定しておくことにより、リモートで構成された変数を取得する前にアプリが正しく機能するようになります。

    iOS - Swift

    self.remoteConfig = RemoteConfig.remoteConfig()
    self.remoteConfig.setDefaults(["promoted_bundle": "basic"])
    

    Java
    Android

    mConfig = FirebaseRemoteConfig.getInstance();
    
    Map<String, Object> remoteConfigDefaults = new HashMap<>();
    remoteConfigDefaults.put("promoted_bundle", "basic");
    mConfig.setDefaults(remoteConfigDefaults);

    Kotlin
    Android

    config = FirebaseRemoteConfig.getInstance()
    
    val remoteConfigDefaults = HashMap<String, Any>()
    remoteConfigDefaults["promoted_bundle"] = "basic"
    config.setDefaults(remoteConfigDefaults)
  3. promoted_bundle の値で指定されたバンドルを宣伝します。Predictions を設定するまで、この値は常に basic になります。

    iOS - Swift

    self.remoteConfig.fetch() { (status, error) -> Void in
        if status == .success {
          self.remoteConfig.activateFetched()
        }
    
        // Act on the retrieved parameters
    
        // Set the bundle to promote based on parameters retrieved with Remote
        // Config. This depends entirely on your app, but, for example, you might
        // retrieve and use image assets based on the specified bundle name.
        self.promotedBundle = self.remoteConfig.getString("promoted_bundle")
    
        // ...
    }
    

    Java
    Android

    mConfig.fetch(CACHE_EXPIRATION)
            .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()) {
                        mConfig.activateFetched();
                    }
    
                    // Act on the retrieved parameters
    
                    // Set the bundle to promote based on parameters retrieved with
                    // Remote Config. This depends entirely on your app, but for
                    // example, you might retrieve and use image assets based on the
                    // specified bundle name.
                    mPromotedBundle = mConfig.getString("promoted_bundle");
                    // ...
                }
            });

    Kotlin
    Android

    config.fetch(CACHE_EXPIRATION)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    config.activateFetched()
                }
    
                // Act on the retrieved parameters
    
                // Set the bundle to promote based on parameters retrieved with
                // Remote Config. This depends entirely on your app, but for
                // example, you might retrieve and use image assets based on the
                // specified bundle name.
                promotedBundle = config.getString("promoted_bundle")
                // ...
            }

この時点で、App Store や Play ストアにアプリをデプロイできます。ユーザーにはデフォルトの宣伝動作(常に基本バンドルを宣伝)が適用されます。しかし、表示はリモートで構成可能な変数で制御するため、Firebase コンソールを使うだけで、プロモーション戦略を変更してテストできます。アプリのアップデートを配信する必要はありません。

ユーザー支出の予測を開始する

次に、Firebase プロジェクトを設定して、ユーザーの支出行動の予測を始めます。

Firebase コンソールで、[Predictions] セクションを開きます。Predictions の利用規約に同意していない場合は、同意してください。

利用規約に同意すると、プロジェクトで Predictions が有効になります。Firebase コンソールの [Predictions] セクションでは、カスタム予測を定義できます。ただし、支出予測の場合、組み込まれている spend および not_spend 予測を使用できます。これらは、アナリティクス イベントの集計に基づき、ユーザーがアプリ内での購入や e コマースでの購入をするかを予測します。今のところ、定期購入は考慮されていません。これらの予測は、Predictions を有効にして、数週間分の支出イベントを記録した後で利用可能になります。

プロモーション戦略のテストを作成する

ここでは、収益に関する予測ベースのプロモーション戦略が、常に基本バンドルやプレミアム バンドルを宣伝する場合と比べて、有効かを調べるテストを作成します。

これは、3 つのバリアント(コントロール グループ、無条件にパラメータを設定するグループ、予測ベースのグループ)がある場合に有効です。テストすることで、予測ベースのアプローチが、単純にすべてのユーザーを同じように扱う場合に比べて有効かを判断できます。ただし、3 つのバリアントを使ったテストでは、十分なデータを収集するためにより多くの参加者が必要です。アプリのユーザー数が 3 つのバリアントをテストするのに十分でない場合は、すべてのユーザーに同じ扱いが適用されるテストを省略し、2 つのバリアントでテストすることもできます。

以下の手順でテストを作成します。

  1. Firebase コンソールで、[A/B テスト] セクションを開きます。

  2. 新しいテストを作成します。

    1. [テストを作成] > [Remote Config] をクリックします。

    2. リストからアプリを選択し、テストに含めるユーザーの数を指定します。高額購入者などの特定のユーザー カテゴリをテストから除外することもできます。

    3. 目標指標のリストから [購入による収益] を選択し、ユーザー エンゲージメント、維持率、アプリの削除、広告のクリックなど、追加する追跡指標を選択します。

    4. 以下の 3 つのバリアントを定義します。

      • 常に基本バンドルを宣伝する(コントロール グループ)
      • 常にプレミアム バンドルを宣伝する
      • 支出予測に応じて基本バンドルまたはプレミアム バンドルを宣伝する

      コントロール グループでは、promoted_bundle パラメータを作成し、それに (no change) を設定します。コントロール グループに割り当てられたユーザーには、常に基本バンドルが宣伝されるデフォルトの動作が適用されます。

      常にプレミアム バンドルを宣伝するバリアントでは、promoted_bundle パラメータに premium を設定します。このバリアントに割り当てられたユーザーには、常にプレミアム プロモーションが表示されます。

      購入の可能性があるユーザーにはプレミアム バンドルを宣伝するバリアントでは、promoted_bundle パラメータに premium を設定し、このユーザーのサブセットを予測: spend(リスク許容度: 中)に設定します。このバリアントに割り当てられたユーザーの購入が予想される場合には、プレミアム プロモーションが表示されます。

テストを開始し、A/B テストで最も効果的なパターンが判別されるまで、数日以上続けます。最も効果的なパターンが判別されない場合は、より多くのユーザーにテストを拡大する必要があります。

最も効果的なバリアントをすべてのユーザーに適用する

A/B テストが最も効果的なパターン(この場合、購入収益を最大化したバリアント)を判別するのに十分な情報が収集されたら、そのバリアント(あるいは別のバリアント)をユーザーに適用するか決定できます。

Firebase コンソールの [A/B テスト] セクションで、完了したテストの詳細を開きます。ここには、選択した目標指標とその他の二次的指標について、各バリアントのパフォーマンスが表示されます。この情報を使って、最も効果的なパターンのバリアントを適用するか、他のバリアントを適用するか決めることができます。

バリアントをすべてのユーザーに適用するには、テスト詳細のページで、[more_vert] > [最も効果的なパターンを適用] をクリックします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。