Skip to main content

はじめに

フィーチャーフラグを使用すると、アプリ内の機能をどのユーザーに表示するかを決定し、新しいアプリビルドをリリースすることなくその決定を変更できます。フラグはMoEngageダッシュボードから制御し、アプリは実行時にその値を読み取ります。 MoEngageは、独立したフィーチャーフラグ製品を提供していません。代わりに、セルフハンドルIn-Appキャンペーンを使用してフィーチャーフラグを構築します。キャンペーンがJSONペイロードをアプリに配信し、アプリはそのペイロード内の値を読み取って、どのエクスペリエンスをレンダリングするかを決定します。ペイロードはキャンペーンコンテンツであるため、セグメントによるターゲティング、コントロールグループによる一定割合のユーザーの除外、A/Bテストによるバリアントの比較が可能です。 この記事では、頻繁に購入するユーザーはカートに商品を追加した後に支払い画面に直接移動し、頻繁に購入しないユーザーには最初に商品のレコメンデーション画面が表示されるフィーチャーフラグを構築します。

期待される結果

2つのユーザーセグメントが同じフラグに対して異なる値を受け取るため、同じアプリビルドで2つの異なるチェックアウトパスが生成されます。キャンペーンを編集または一時停止することで、どちらかのパスを変更したり、セグメントを完全にオフにしたりできます。
頻繁に購入するユーザーが商品を閲覧し、ヘッドホンをカートに追加して、支払い画面に直接到達する様子を示す3つのアプリ画面。
フィーチャーフラグを有効にするには、アプリがMoEngage SDKと統合され、セルフハンドルIn-Appキャンペーンを処理できる必要があります。詳細については、Android向けSelf-Handled InAppsおよびiOS向けSelf handled In-Appsを参照してください。

MoEngageにおけるフィーチャーフラグの仕組み

フィーチャーフラグは3つの要素で構成されます。
  1. オーディエンス: フラグの特定の値を受け取るユーザーを定義するセグメントです。
  2. フラグの値: セルフハンドルIn-Appキャンペーンによって配信されるJSONペイロードです。
  3. アプリのロジック: ペイロードを読み取り、対応するエクスペリエンスをレンダリングするアプリ内のコードです。
フラグの値ごとに1つのセルフハンドルIn-Appキャンペーンを作成します。1つのキャンペーンは1つのオーディエンスを対象とし、1つのペイロードを保持するため、2つのセグメントに対して2つの値を持つフラグには2つのキャンペーンが必要です。どのキャンペーンにも一致しないユーザーはペイロードを受け取らず、アプリはデフォルトのエクスペリエンスにフォールバックします。
このデフォルトも設計の一部として扱ってください。ユーザーがオフラインの場合、コントロールグループによって除外された場合、またはどのセグメントにも一致しない場合でも、アプリはペイロードなしで適切な内容をレンダリングする必要があります。

例: チェックアウトフローをパーソナライズする

次の例では、「Payment flow for frequent buyers」という名前のフラグを設定し、頻繁に購入するユーザー向けと頻繁に購入しないユーザー向けにそれぞれ1つの値を設定します。

ステップ1: セグメントを作成する

キャンペーンを作成する前に、2つのオーディエンスを定義します。キャンペーン作成中の Target audience セクションで作成するか、事前に Segment > Create segment から作成できます。 Filter users by セクションで、Product Purchased イベントに対する User behavior フィルターを追加します。
  • 頻繁に購入するユーザー: 過去20日間に Product Purchased を at least(少なくとも)5回実行したユーザー。
  • 頻繁に購入しないユーザー: 過去20日間に Product Purchased を at most(多くとも)5回実行したユーザー。
User behaviorに設定され、Has Executed Product Purchased at least 5 times in the last 20 daysとなっているセグメンテーションフィルター。
公開する前に、2つのセグメントが重複していないことを確認してください。上記の例では、購入回数がちょうど5回のユーザーは両方の定義に一致し、両方のキャンペーンの対象となるため、アプリが受け取るペイロードはキャンペーンの優先度によって決まります。2つのオーディエンスを相互に排他的にするには、2つ目のセグメントを at most 4回に設定してください。
詳細については、ルールベースのフィルターセグメントを参照してください。
ロールアウト対象のユーザーの固定リストがすでにある場合は、ルールを定義する代わりにファイルセグメントとしてアップロードしてください。詳細については、ファイルセグメントを参照してください。

ステップ2: フラグのペイロードを定義する

アプリが読み取るキーと、各セグメントが受け取る値を決定します。この例では2つのキーを使用します。buy_now_action はボタンが表すイベントを、buy_now_url はボタンの遷移先を記録します。
アプリの実装に合ったキー名を選択してください。これらはサンプルのキーであり、MoEngageはペイロードを解釈せずにアプリに渡します。 複数のキャンペーンで同じペイロード構造を共有する場合は、コンテンツブロックとして保存し、各キャンペーンから参照することで、構造を1か所で更新できます。詳細については、コンテンツブロックを参照してください。

ステップ3: セルフハンドルIn-Appキャンペーンを作成する

ステップ2で作成した各セグメントのペイロードを使用して、セグメントごとに次の手順を繰り返します。

ステップ3.1: ターゲットユーザー

  1. 左側のサイドバーで Engage > Campaigns をクリックし、+ Create campaign をクリックします。
  2. Inbound で In-app をクリックします。
  3. 「Payment flow flag - frequent buyers」のように、フラグとセグメントを識別できる Campaign name を入力します。関連する Campaign tags を選択します。
  4. Target Platforms セクションで、アプリが動作するプラットフォームを選択します。
  5. Trigger Criteria セクションで、アプリがペイロードを受け取るタイミングを選択します。セッション中のどの時点でもユーザーがアクセスできる画面をフラグで制御する場合は、On app open を選択します。
  6. Target audience セクションで、ステップ1で作成したセグメントを選択します。
  7. Control Group セクションで、キャンペーンから除外するユーザーを指定します。詳細については、機能を段階的にロールアウトするを参照してください。
  8. Next をクリックします。

ステップ3.2: コンテンツ

  1. Custom template editor に移動し、Self-Handled をクリックします。
  2. ペイロードフィールドに、ステップ2で定義したこのセグメント用のJSONペイロードを入力します。
  3. Template Settings で、対象とする各デバイスタイプの設定を行います。
  4. キャンペーンをプレビューし、Next をクリックします。

ステップ3.3: スケジュールと目標

  1. Send campaign セクションで、キャンペーンの開始と終了のタイミングを、頻度と制限とともに定義します。フィーチャーフラグは通常、終了日なしで実行されるため、キャンペーンを一時停止するまでフラグは有効なままになります。
  2. Conversion Goals セクションで、フラグ付きのエクスペリエンスのパフォーマンスが向上したかどうかを判断するための目標を追加します。この例では、Product Purchased イベントをトラッキングします。
  3. Delivery Controls セクションで、ロールアウトに必要なコントロールを設定します。詳細については、In-Appキャンペーンの作成を参照してください。
  4. Publish をクリックします。

ステップ4: アプリでペイロードを利用する

ユーザーがいずれかのキャンペーンの対象になると、アプリはペイロードを受け取ります。buy_now_action を読み取り、対応する画面をレンダリングします。
  • 値が purchase の場合、ユーザーを支払い画面に移動させます。
  • 値が add_to_cart の場合、ユーザーをレコメンデーション画面に移動させ、そこから支払い画面へのパスを提供します。
  • ペイロードが届かない場合は、デフォルトのチェックアウトフローをレンダリングします。
また、キャンペーンのアナリティクスにフラグ付きのエクスペリエンスが反映されるよう、アプリはインプレッション、クリック、コンバージョンをMoEngageに報告します。詳細については、セルフハンドルIn-Appテンプレートを参照してください。

機能を段階的にロールアウトする

コントロールグループを使用してターゲットオーディエンスの一部を除外することで、フラグ付きのエクスペリエンスを受け取ったユーザーと、受け取らなかった同等のユーザーを比較できます。
  • キャンペーンコントロールグループ: ステップ1の Control Group セクションで、キャンペーンのターゲットオーディエンスから除外する割合を設定します。この割合を徐々に下げることで、フラグの対象となるオーディエンスを拡大します。
  • グローバルコントロールグループ: Settings > Control Groups で、ワークスペース全体のホールドアウトの割り当てを設定します。詳細については、グローバルコントロールグループを参照してください。
両方のタイプの詳細については、コントロールグループを参照してください。 機能をオフにするには、そのフラグの値を保持しているキャンペーンを一時停止します。ユーザーはペイロードを受け取らなくなり、アプリはデフォルトのエクスペリエンスにフォールバックします。

フラグ付き機能のバリアントをテストする

同じフラグ付きエクスペリエンスの複数のバージョンを比較したい場合は、キャンペーンにバリエーションを追加します。キャンペーン作成のステップ2で + A/B Test をクリックし、各バリエーションに独自のペイロードを設定します。 バリエーション間でユーザーを手動で配分することも、結果の蓄積に応じてMerlin AIにパフォーマンスの高いバリエーションへトラフィックを移行させることもできます。詳細については、以下を参照してください。

まとめ

このユースケースでは、セグメントごとに1つずつ、2つのセルフハンドルIn-Appキャンペーンからフィーチャーフラグを構築し、コントロールグループを使用して段階的にロールアウトし、A/Bテストでバリアントを比較しました。フラグの値はキャンペーンコンテンツ内にあるため、新しいアプリビルドをリリースすることなく、機能を利用できるユーザーや機能の動作を変更できます。 フラグ付きの各エクスペリエンスのパフォーマンスを測定するには、In-Appキャンペーンの分析を参照してください。