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

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

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

準備

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

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

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

最初に、Firebase プロジェクトを設定して、ユーザーの支出の予測を開始します。

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

    利用規約に同意すると、プロジェクトで Predictions が有効になります。Firebase コンソールの [Predictions] セクションでは、カスタム予測を定義できます。ただし、支出予測の場合、組み込まれている spend および not_spend 予測を使用できます。これらは、アナリティクス イベントの集計に基づいています。これらの予測は、Predictions を有効にして基準となる支出イベントの記録を開始してから約 24 時間で利用可能になります。

  2. spend 予測に対応する Remote Config パラメータを追加します。

    1. Firebase コンソールで、[Remote Config] をクリックします。
    2. たとえば、predicted_will_spend という名前の新しいパラメータを追加します。spend が予測されたときに適用される、このパラメータの新しい条件を作成します。次に、新しい条件の値を true に設定し、デフォルト値を false に設定します。

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

次に、3 つのプロモーション戦略をテストする A/B テストを作成します。

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

テストを作成するには:

  1. Firebase コンソールで、[Remote Config] セクションを開きます。
  2. [A/B テスト] ボタンをクリックします。
  3. 新しいテストを作成します。

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

    2. プロモーション戦略ごとに 1 つずつ、計 3 つのバリアントを定義します。

      次に、promoted_bundle パラメータを作成し、値 basic をコントロール グループ パターンに、premium を 2 番目のパターンに、predict を予測ベースのパターンにそれぞれ割り当てます。アプリではこのパラメータを使用して、特定のユーザーにどのバンドルを宣伝するかを決定します。

    3. 目標指標のリストから [購入による収益] を選択し、追跡する追加指標(定着、1 日のエンゲージメントなど)を選択します。

      最後に、[詳細オプション] セクションで、アプリで明示的に記録する promotion_set アナリティクス イベントを選択します。このイベントは、一度ログに記録されるまでリストに表示されません。

プロモーション戦略をアプリに実装する

Firebase コンソールで予測とテストを設定したので、それぞれのテストパターンからプロモーション戦略を実装します。

次に例を示します。

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

    iOS - Swift

    Podfile に SDK を追加します。

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

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

    import Firebase
    

    Android

    compile 'com.google.firebase:firebase-core:15.0.0'
    compile 'com.google.firebase:firebase-config:15.0.0'
    
  2. Remote Config を使用して現在のユーザーのプロモーション戦略を取得します。

    iOS - Swift

    self.remoteConfig = RemoteConfig.remoteConfig()
    self.remoteConfig.setDefaults(["promoted_bundle": "basic"])
    
    // ...
    
    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
        self.promotedBundle = self.getPromotedBundle()
    
        // ...
    }
    

    Android

    mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
    
    Map remoteConfigDefaults = new HashMap<String, Object>();
    remoteConfigDefaults.put("promoted_bundle", "basic");
    mFirebaseRemoteConfig.setDefaults(remoteConfigDefaults);
    
    // ...
    
    mFirebaseRemoteConfig.fetch(cacheExpiration)
        .addOnCompleteListener(this, new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    mFirebaseRemoteConfig.activateFetched();
                }
    
                // Act on the retrieved parameters
    
                // Set the bundle to promote based on parameters retrieved with
                // Remote Config
                mPromotedBundle = getPromotedBundle();
    
                // ...
            }
        });
    
  3. 最後に、取得したパラメータに基づいて、ユーザーに宣伝するバンドルを設定します。また、この時点で、ユーザーがテストに参加しているとみなせることを示すために promotion_set イベントを記録します。

    iOS - Swift

    func getPromotedBundle() -> String {
        Analytics.logEvent("gift_policy_set", parameters: nil)
    
        let promotedBundle = self.remoteConfig["promoted_bundle"].stringValue
        let willSpend = self.remoteConfig["predicted_will_spend"].booleanValue
    
        if (promotedBundle == "predicted") && will_spend {
            return "premium"
        } else {
            return promotedBundle
        }
    }
    

    Android

    private String getPromotedBundle() {
        FirebaseAnalytics.getInstance(this).logEvent("promotion_set", true);
    
        String promotedBundle = mFirebaseRemoteConfig.getString("promoted_bundle");
        boolean will_spend = mFirebaseRemoteConfig.getBoolean("predicted_will_spend");
    
        if (promotedBundle.equals("predicted") && will_spend) {
            return "premium";
        } else {
            return promotedBundle;
        }
    }
    

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

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