Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

A / Bテストを使用したアプリ内メッセージング実験の作成

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

ユーザーに手を差し伸べたり、新しいマーケティング キャンペーンを開始したりするときは、それが正しく行われていることを確認する必要があります。 A/B テストは、ユーザーベースの選択した部分でメッセージのバリエーションをテストすることで、最適な表現と表現を見つけるのに役立ちます。目標がリテンションの向上であろうと、オファーのコンバージョンであろうと、A/B テストでは統計分析を実行して、選択した目的のベースラインをメッセージ バリアントが上回っているかどうかを判断できます。

ベースラインを使用して機能バリアントを A/B テストするには、次の手順を実行します。

  1. 実験を作成します。
  2. テスト デバイスで実験を検証します。
  3. 実験を管理します。

実験を作成する

Firebase アプリ内メッセージングを使用する実験では、1 つのアプリ内メッセージの複数のバリエーションを評価できます。

  1. Firebase コンソールにサインインし、プロジェクトで Google アナリティクスが有効になっていることを確認して、実験でアナリティクス データにアクセスできるようにします。

    プロジェクトの作成時に Google アナリティクスを有効にしなかった場合は、[統合] タブで有効にすることができます。このタブには、 Firebase コンソールの [ ] > [プロジェクト設定] を使用してアクセスできます。

  2. Firebase コンソールのナビゲーション バーのEngageセクションで、 A/B Testingをクリックします。

  3. [実験の作成]をクリックし、実験するサービスの選択を求めるメッセージが表示されたら、[アプリ内メッセージング]を選択します。

  4. または、 Firebase コンソールのナビゲーション バーで、 Engageを展開し、 In-App Messagingをクリックします。次に、[新しい実験] をクリックします。

  5. 実験の名前とオプションの説明を入力し、[次へ] をクリックします。

  6. ターゲティングフィールドに入力し、最初に実験を使用するアプリを選択します。次のようなオプションを選択することで、ユーザーのサブセットをターゲットにして実験に参加させることもできます。

    • バージョン:アプリの 1 つ以上のバージョン
    • ユーザー オーディエンス:実験に含まれる可能性のあるユーザーを対象とするために使用されるアナリティクス オーディエンス
    • ユーザー プロパティ:実験に含める可能性のあるユーザーを選択するための 1 つ以上の Analytics ユーザー プロパティ
    • 国/地域:実験に含まれる可能性のあるユーザーを選択するための 1 つ以上の国または地域
    • デバイスの言語:実験に含まれる可能性のあるユーザーを選択するために使用される 1 つ以上の言語とロケール
    • 初回起動:アプリを初めて開いた時間に基づいてユーザーをターゲティングします
    • 前回のアプリ エンゲージメント: アプリを最後に使用した時間に基づいてユーザーをターゲティングします
  7. ターゲット ユーザーの割合を設定する: [ターゲットユーザー] で設定された条件に一致するアプリのユーザー ベースの割合を選択し、ベースラインと実験の 1 つ以上のバリアントとの間で均等に分割します。これは、0.01% から 100% の間の任意のパーセンテージです。パーセンテージは、複製された実験を含め、実験ごとにランダムにユーザーに再割り当てされます。

  8. [バリアント]セクションで、通常のアプリ内メッセージング キャンペーンに使用するメッセージ デザイン インターフェイスを使用して、ベースライン グループに送信するベースライン アプリ内メッセージを構成します。

  9. 実験にバリアントを追加するには、[バリアントを追加] をクリックします。デフォルトでは、実験には 1 つのベースラインと 1 つのバリアントがあります。

  10. (オプション) 実験の各バリアントの名前を入力して、バリアント Aバリアント Bなどの名前を置き換えます。

  11. (オプション) [バリアント] セクションの上部にある [バリアントの比較] ボタンをクリックして、もう 1 つのメッセージ バリアントをベースライン メッセージと並べて比較します。

  12. 実験バリアントを評価するときに使用する実験の目標指標と、ドロップダウン リストからの必要な追加指標を定義します。これらの指標には、組み込みの目標 (エンゲージメント、購入、収益、保持など)、Analytics コンバージョン イベント、およびその他の Analytics イベントが含まれます。

  13. 実験のスケジュールを構成します。

    • 実験の開始日と終了日を設定します。
    • すべてのバリアントでアプリ内メッセージをトリガーする方法を設定します。
  14. [確認] をクリックして、実験を保存します

プロジェクトごとに最大 300 個の実験を行うことができます。これは、最大 24 個の実行中の実験で構成され、残りは下書きまたは完了済みです。

テスト デバイスで実験を検証する

Firebase インストールごとに、それに関連付けられているインストール認証トークンを取得できます。このトークンを使用して、アプリがインストールされたテスト デバイスで特定の実験バリアントをテストできます。テスト デバイスで実験を検証するには、次の手順を実行します。

  1. 次のようにインストール認証トークンを取得します。

    迅速

    Installations.installations().authTokenForcingRefresh(true, completion: { (result, error) in
      if let error = error {
        print("Error fetching token: \(error)")
        return
      }
      guard let result = result else { return }
      print("Installation auth token: \(result.authToken)")
    })
    

    Objective-C

    [[FIRInstallations installations] authTokenForcingRefresh:true
                                                   completion:^(FIRInstallationsAuthTokenResult *result, NSError *error) {
      if (error != nil) {
        NSLog(@"Error fetching Installation token %@", error);
        return;
      }
      NSLog(@"Installation auth token: %@", [result authToken]);
    }];
    

    Java

    FirebaseInstallations.getInstance().getToken(/* forceRefresh */true)
            .addOnCompleteListener(new OnCompleteListener<InstallationTokenResult>() {
        @Override
        public void onComplete(@NonNull Task<InstallationTokenResult> task) {
            if (task.isSuccessful() && task.getResult() != null) {
                Log.d("Installations", "Installation auth token: " + task.getResult().getToken());
            } else {
                Log.e("Installations", "Unable to get Installation auth token");
            }
        }
    });

    Kotlin+KTX

    FirebaseInstallations.getInstance().getToken(/* forceRefresh */ true)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d("Installations", "Installation auth token: " + task.result?.token)
            } else {
                Log.e("Installations", "Unable to get Installation auth token")
            }
        }
  2. Firebase コンソールのナビゲーション バーで、[ A/B Testing ] をクリックします。
  3. Draft (および/または Remote Config 実験の実行中) をクリックし、実験にカーソルを合わせ、コンテキスト メニュー ( ) をクリックしてから、 Manage test devicesをクリックします。
  4. テスト デバイスのインストール認証トークンを入力し、そのテスト デバイスに送信する実験バリアントを選択します。
  5. アプリを実行し、選択したバリアントがテスト デバイスで受信されていることを確認します。

Firebase インストールの詳細については、Firebase インストールの管理をご覧ください。

実験を管理する

Remote Config、Notifications Composer、または Firebase In-App Messaging を使用して実験を作成する場合でも、実験を検証して開始し、実行中に実験を監視し、実行中の実験に含まれるユーザーの数を増やすことができます。

実験が完了したら、勝者の亜種で使用された設定をメモし、それらの設定をすべてのユーザーにロールアウトできます。または、別の実験を実行できます。

実験を開始する

  1. Firebase コンソールのナビゲーション バーのEngageセクションで、 A/B Testingをクリックします。
  2. [下書き] をクリックし、実験のタイトルをクリックします。
  3. 実験に含まれるユーザーがアプリに含まれていることを確認するには、下書きの詳細を展開し、[ターゲティングと配布] セクションで0%より大きい数値を確認します (たとえば、条件に一致するユーザーの 1% )。
  4. テストを変更するには、[編集] をクリックします。
  5. テストを開始するには、[テストを開始] をクリックします。一度にプロジェクトごとに最大 24 の実験を実行できます。

実験を監視する

テストがしばらく実行されたら、進行状況を確認して、これまでにテストに参加したユーザーの結果を確認できます。

  1. Firebase コンソールのナビゲーション バーのEngageセクションで、 A/B Testingをクリックします。
  2. [実行中] をクリックし、実験のタイトルをクリックするか検索します。このページでは、次のような、実行中の実験に関するさまざまな観測統計とモデル統計を表示できます。

    • ベースラインとの差 (%) : ベースラインと比較した、特定のバリアントのメトリックの改善の尺度。バリアントの値の範囲をベースラインの値の範囲と比較して計算されます。
    • ベースラインを上回る確率: 特定のバリアントが選択したメトリックのベースラインを上回る推定確率。
    • ユーザーごとのobserved_metric : 実験結果に基づく、これはメトリック値が時間の経過とともに収まる予測範囲です。
    • Total observed_metric : ベースラインまたはバリアントの観測された累積値。この値は、各テスト パターンのパフォーマンスを測定するために使用され、改善値の範囲ベースラインを上回る確率、最良のパターンになる確率を計算するために使用されます。測定される指標に応じて、この列には「ユーザーあたりの期間」、「ユーザーあたりの収益」、「維持率」、または「コンバージョン率」というラベルが付けられます。
  3. 実験をしばらく実行した後 (FCM とアプリ内メッセージングの場合は少なくとも 7 日間、Remote Config の場合は 14 日間)、このページのデータは、バリアントが存在する場合、どのバリアントが「リーダー」であるかを示します。一部の測定値には、データを視覚的な形式で表示する棒グラフが付いています。

すべてのユーザーに実験を展開する

テストが十分に長く実行され、目標指標の「リーダー」または勝者のバリアントが得られたら、テストを 100% のユーザーにロールアウトできます。これにより、今後すべてのユーザーに公開するバリアントを選択できます。テストで明確な勝者が得られなかった場合でも、バリアントをすべてのユーザーに展開することを選択できます。

  1. Firebase コンソールのナビゲーション バーのEngageセクションで、 A/B Testingをクリックします。
  2. [完了] または [実行中] をクリックし、すべてのユーザーにロールアウトする実験をクリックして、コンテキスト メニュー ( ) をクリックし、[バリアントのロールアウト] をクリックします。
  3. 次のいずれかを実行して、すべてのユーザーに実験を展開します。

    • Notifications composerを使用する実験では、メッセージのロールアウトダイアログを使用して、実験に参加していない残りのターゲット ユーザーにメッセージを送信します。
    • Remote Config実験の場合、バリアントを選択して、更新する Remote Config パラメータ値を決定します。実験の作成時に定義されたターゲティング基準は、新しい条件としてテンプレートに追加され、ロールアウトが実験の対象ユーザーにのみ影響するようにします。 Remote Config で [Review ] をクリックして変更を確認したら、[ Publish changes ] をクリックしてロールアウトを完了します。
    • アプリ内メッセージングの実験では、ダイアログを使用して、スタンドアロンのアプリ内メッセージング キャンペーンとしてロールアウトする必要があるバリアントを決定します。選択すると、FIAM 作成画面にリダイレクトされ、公開する前に (必要に応じて) 変更を加えることができます。

実験を展開する

A/B テストがリーダーを宣言するのに十分なユーザーが実験で得られていないことがわかった場合は、実験の配布を増やして、アプリのユーザー ベースのより大きな割合にリーチすることができます。

  1. Firebase コンソールのナビゲーション バーのEngageセクションで、 A/B Testingをクリックします。
  2. 編集する実行中の実験を選択します。
  3. 実験の概要で、コンテキスト メニュー ( ) をクリックし、実行中の実験の編集 をクリックします。
  4. [ターゲティング] ダイアログには、現在実行中の実験に参加しているユーザーの割合を増やすオプションが表示されます。現在のパーセンテージより大きい数値を選択し、 [公開] をクリックします。実験は、指定した割合のユーザーにプッシュされます。

実験を複製または停止する

  1. Firebase コンソールのナビゲーション バーのEngageセクションで、 A/B Testingをクリックします。
  2. [完了] または [実行中] をクリックし、実験にカーソルを合わせて、コンテキスト メニュー ( ) をクリックし、[実験を複製] または [実験停止] をクリックします。

ユーザーターゲティング

次のユーザー ターゲティング基準を使用して、実験に含めるユーザーをターゲティングできます。

ターゲティング基準オペレーターノート
バージョン含む、
含まない、
正確に一致し、
正規表現を含む
実験に含める 1 つ以上のアプリ バージョンの値を入力します。

含む含まない、または正確に一致する演算子のいずれかを使用する場合、コンマ区切りの値のリストを指定できます。

contains regex演算子を使用すると、 RE2形式で正規表現を作成できます。正規表現は、ターゲット バージョン文字列のすべてまたは一部に一致できます。 ^および$アンカーを使用して、ターゲット文字列の先頭、末尾、または全体に一致させることもできます。

ユーザー層のすべてを含み、
の少なくとも 1 つを含む、
のすべてを含むわけではありませんが、
の少なくとも 1 つを含まない
アナリティクスのオーディエンスを 1 つ以上選択して、実験に含める可能性のあるユーザーをターゲットにします。 Google アナリティクスのオーディエンスを対象とする一部のテストでは、アナリティクスのデータ処理の待ち時間が発生するため、データの蓄積に数日かかる場合があります。この遅延が発生する可能性が最も高いのは、通常、作成後 24 ~ 48 時間で適格なオーディエンスに登録される新規ユーザー、または最近作成されたオーディエンスです。
ユーザー プロパティテキストの場合:
含む、
含まない、
完全に一致し、
正規表現を含む

数字の場合:
<, ≤, =, ≥, >
アナリティクスのユーザー プロパティは、ユーザー プロパティ値を選択するためのさまざまなオプションを使用して、実験に含める可能性のあるユーザーを選択するために使用されます。

クライアントでは、ユーザー プロパティに文字列値のみを設定できます。数値演算子を使用する条件の場合、Remote Config サービスは、対応するユーザー プロパティの値を整数/浮動小数点数に変換します。
contains regex演算子を使用すると、 RE2形式で正規表現を作成できます。正規表現は、ターゲット バージョン文字列のすべてまたは一部に一致できます。 ^および$アンカーを使用して、ターゲット文字列の先頭、末尾、または全体に一致させることもできます。
国/地域なし実験に含める可能性のあるユーザーを選択するために使用される 1 つ以上の国または地域。
言語なし実験に含まれる可能性のあるユーザーを選択するために使用される 1 つ以上の言語とロケール。
最初のオープンより多い
未満
日数で指定された、アプリを初めて開いた時間に基づいてユーザーをターゲティングします。このターゲティング基準は、Firebase アプリ内メッセージングでのみ使用できます。
前回のアプリ エンゲージメントより多い
未満
日数で指定された、アプリを最後に使用した時間に基づいてユーザーをターゲティングします。このターゲティング基準は、Firebase アプリ内メッセージングでのみ使用できます。

A/B テストの指標

実験を作成するときは、主要な、または目標の指標を選択します。これは、勝者のバリアントを決定するために使用されます。また、各テスト バリアントのパフォーマンスをよりよく理解し、ユーザー維持率、アプリの安定性、アプリ内購入の収益など、バリアントごとに異なる可能性がある重要な傾向を追跡するために、他の指標も追跡する必要があります。実験では、最大 5 つの目標以外の指標を追跡できます。

たとえば、新しいアプリ内購入をアプリに追加し、2 つの異なる「ナッジ」メッセージの効果を比較したいとします。この場合、最高のアプリ内購入収益をもたらした通知を勝者バリアントに表すようにするため、購入収益を目標指標として設定することを決定する場合があります。また、どのバリアントが将来のコンバージョン数を増やし、ユーザーを維持したかを追跡する必要があるため、追跡するその他の指標に次の情報を追加できます。

  • アプリ内購入と広告収入の合計が 2 つのバリアント間でどのように異なるかを確認するための推定総収入
  • 保持 (1 日)保持 (2 ~ 3 日)保持 (4 ~ 7 日)で、毎日/毎週のユーザー保持を追跡します

次の表は、目標指標とその他の指標の計算方法の詳細を示しています。

目標指標

メトリック説明
クラッシュのないユーザーテスト中に Firebase Crashlytics SDK によって検出された、アプリでエラーが発生していないユーザーの割合。
推定広告収入推定広告収入。
推定総収益購入額と推定広告収益の合計。
購入収益すべてのpurchaseイベントとin_app_purchaseイベントの合計値。
保持(1日)毎日あなたのアプリに戻ってくるユーザーの数。
保持(2~3日) 2 ~ 3 日以内にアプリに戻ったユーザーの数。
保持(4~7日) 4~7 日以内にアプリに戻ったユーザーの数。
保持(8~14日) 8~14 日以内にアプリに戻ったユーザーの数。
保持 (15 日以上)最後にアプリを使用してから 15 日以上経過してアプリに戻ったユーザーの数。
first_openアプリをインストールまたは再インストールした後、ユーザーが最初にアプリを開いたときにトリガーされる Analytics イベント。コンバージョン ファネルの一部として使用されます。

その他の指標

メトリック説明
通知_却下Notifications Composer によって送信された通知が閉じられたときにトリガーされる Analytics イベント (Android のみ)。
通知_受信アプリがバックグラウンドにあるときに、通知コンポーザーによって送信された通知が受信されたときにトリガーされる Analytics イベント (Android のみ)。
os_updateデバイスのオペレーティング システムがいつ新しいバージョンに更新されたかを追跡する Analytics イベント。詳細については、「自動的に収集されるイベント」を参照してください。
screen_viewアプリ内で表示された画面を追跡する Analytics イベント。詳しくは、スクリーンビューの追跡をご覧ください。
session_startアプリ内のユーザー セッションをカウントする Analytics イベント。詳細については、自動的に収集されるイベントを参照してください。