Firebase Predictions を使用してユーザー定着戦略をテストする

Firebase Predictions を使用して、アプリの利用を停止する可能性のあるユーザーを特定し、それらのユーザーにユーザー定着戦略を適用できます。たとえば、モバイルゲームを配信している場合、利用停止が予測されるユーザーにゲーム内通貨のギフトを付与するといったことができます。

このガイドでは、このような予測ベースのユーザー定着戦略を実装する方法に加え、戦略の有効性を検証するために Firebase A/B テストを作成して、ギフトを付与しない場合と比較する方法について示します。

始める前に

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

  • Firebase コンソールアナリティクスのデータ共有を有効にします。
  • 自動的にログに記録されない、アプリに関連するアナリティクス イベントを明示的に記録します。これらのイベントを記録することで、将来の分類の品質を向上させることができます。
  • 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 を初期化し、grant_retention_gift 変数のデフォルト値を false に設定します。この後で、Predictions と A/B テストを設定して、この変数をリモートで設定します。ただし、アプリでデフォルト値を設定しておくことにより、リモートで構成された変数を取得する前に、アプリが正しく機能するようになります。

    iOS - Swift

    self.remoteConfig = RemoteConfig.remoteConfig()
    self.remoteConfig.setDefaults(["grant_retention_gift": false])
    
    // ...
    
    self.remoteConfig.fetch() { (status, error) -> Void in
        if status == .success {
          self.remoteConfig.activateFetched()
        }
    
        // Act on the retrieved parameters. For example, grant the retention gift to
        // players who haven't yet received one.
        let shouldGrantGift = self.remoteConfig["grant_retention_gift"].booleanValue
        if shouldGrantGift && !playerAlreadyReceivedGift() {
            grantGiftToPlayer()
        }
    }
    

    Java
    Android

    final FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
    
    Map<String, Object> remoteConfigDefaults = new HashMap<>();
    remoteConfigDefaults.put("grant_retention_gift", false);
    config.setDefaults(remoteConfigDefaults);
    
    // ...
    
    config.fetch(CACHE_EXPIRATION)
            .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()) {
                        config.activateFetched();
                    }
    
                    // Act on the retrieved parameters. For example, grant the
                    // retention gift to players who haven't yet received one.
                    boolean shouldGrantGift = config.getBoolean("grant_retention_gift");
                    if (shouldGrantGift && !playerAlreadyReceivedGift()) {
                        grantGiftToPlayer();
                    }
                }
            });

    Kotlin
    Android

    val config = FirebaseRemoteConfig.getInstance()
    
    val remoteConfigDefaults = HashMap<String, Any>()
    remoteConfigDefaults["grant_retention_gift"] = false
    config.setDefaults(remoteConfigDefaults)
    
    // ...
    
    config.fetch(CACHE_EXPIRATION)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    config.activateFetched()
                }
    
                // Act on the retrieved parameters. For example, grant the
                // retention gift to players who haven't yet received one.
                val shouldGrantGift = config.getBoolean("grant_retention_gift")
                if (shouldGrantGift && !playerAlreadyReceivedGift()) {
                    grantGiftToPlayer()
                }
            }

この時点で、App Store や Play ストアにゲームをデプロイできます。プレーヤーにはデフォルト動作が適用され、リテンション ギフトは付与されません。しかし、ギフトポリシーはリモートで構成可能な変数で制御するため、Firebase コンソールを使うだけで、定着戦略を変更してテストできます。アプリのアップデートを配信する必要はありません。

ユーザー チャーンの予測を開始する

次に、Firebase プロジェクトを設定して、ユーザーがいつ利用を停止するかを予測します。

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

利用規約に同意すると、プロジェクトで Predictions が有効になります。Firebase コンソールの [Predictions] セクションでは、カスタム予測を定義できます。ただし、チャーンの予測には組み込みの予測を使用できます。これは、アナリティクス イベントの集計を使って、ユーザーがアプリの使用を停止しようとしているか予測するものです。これらの予測は、Predictions を有効にして、数週間分のアナリティクス イベントを記録した後で利用可能になります。

ユーザー定着戦略のテストを作成する

次に、ギフトのユーザー維持の効果をテストする A/B テストを作成します。

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

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

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

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

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

    3. 目標指標のリストから [定着(2~3 日)] を選択し、その他の追跡指標(ユーザー エンゲージメント、アプリの削除、広告のクリックなど)を選択します。

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

      • リテンション ギフトを付与しない(コントロール グループ)
      • チャーンするユーザーにギフトを付与する

      コントロール グループでは、grant_retention_gift パラメータを作成し、それに (no change) を設定します。コントロール グループに割り当てられたユーザーには、ギフトを付与しないというデフォルトの動作が適用されます。

      チャーンするユーザーにギフトを付与するバリアントでは、grant_retention_gift パラメータを true に設定し、このユーザーのサブセットを [予測: churn (リスク許容度: 中)] に設定します。このバリアントに割り当てられたユーザーの離脱が予想される場合には、ギフトが付与されます。

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

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

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

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

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

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

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