# モバイルIn-Appメッセージング

Beta
モバイルIn-Appメッセージングは現在Betaです。将来のリリースでネイティブSDKの提供を予定しています。
現在の実装方法については、カスタマーサクセス担当までご相談ください。

Treasure DataのEngage Studioに搭載されたモバイルIn-Appメッセージング機能を使用すると、マーケターはモバイルアプリ内にパーソナライズされた視覚的に豊かなメッセージを直接配信できます。プッシュ通知とは異なり、In-Appメッセージはユーザーがアプリを積極的に操作している間に表示されるため、オンボーディングフロー、プロモーションオファー、コンテキストに応じたお知らせなどに最適です。

## 前提条件

In-Appメッセージを作成する前に、以下のセットアップが完了していることを確認してください。

1. **RT 2.0が有効化**されていること（Treasure アカウント）
2. **RTイベント**がモバイルアプリに実装され、Treasure Dataにデータが流入していること
3. **IDスティッチング**が設定され、イベント間でユーザーIDが名寄せされていること
4. **Realtime Personalization**エントリーおよびセクションが、関連するペアレントセグメントを使用してAudience Studioで作成済みであること
5. お客様のモバイルアプリにRT 2.0 Personalization APIの呼び出しと、返されたHTMLをポップアップとして表示する実装が済んでいること


## In-Appメッセージ一覧

Engage Studioで **IN-PRODUCT EXPERIENCES > In-App Messages** に移動すると、ワークスペース内のすべてのIn-Appメッセージが一覧表示されます。各行には以下の情報が表示されます。

- **Status** — Draft、Live、または Paused
- **Message ID** — システムが自動生成する一意の識別子
- **Name** — キャンペーン名
- **Parent Segment** — ターゲティングに使用するRT 2.0のペアレントセグメント
- **Last Updated** — 最終更新日時


右上の **+ Create in-app message** をクリックして新しいキャンペーンを作成します。

## In-Appメッセージの作成

In-Appメッセージの作成は2つのステップで行います。

### ステップ 1 — Target Audience

以下を選択してターゲティングを設定します。

- **Target Parent Segment** — このメッセージを受け取る対象ユーザーを定義するRT 2.0のペアレントセグメント。
- **Personalization** — Personalizationセクションに定義されたエントリー基準に基づいてリアルタイム配信を制御する、既存のRT 2.0 Personalization。
- **Personalization section** — 選択したPersonalization内の、このメッセージのコンテンツを格納する特定のセクション。


これらはEngage StudioでIn-Appメッセージを作成する前に、Audience Studioで設定しておく必要があります。

### ステップ 2 — Message Content

メッセージの詳細とデザインを設定します。

- **Message ID** — このメッセージの自動生成された一意の識別子。
- **Name**（必須） — In-Appメッセージ一覧に表示されるメッセージの名前。
- **Description**（任意） — メッセージに関する社内向けメモ。
- **Message Content** — ユーザーのアプリ内に表示されるモーダルをデザインします。


新規メッセージ作成時（Draftステータス）は **+ Create in-app message** をクリックするとドラッグアンドドロップエディターが開きます。保存後は **Message Content** セクションにデザイン済みのモーダルプレビューが表示されます。

#### ドラッグアンドドロップエディター

エディターの右パネルには3つのタブがあります。

- **CONTENT** — 画像、テキスト、ボタンなどのコンテンツブロックを追加・設定します。ブロックを選択すると、そのプロパティ（画像URL、alt テキスト、配置、角の丸み、アクションリンクなど）が表示されます。
- **ROWS** — モーダルの行レイアウトを管理します。
- **SETTINGS** — 背景色やパディングなど、モーダル全体のグローバル設定を行います。


左上の **Preview mode** トグルを使用すると、ユーザーに表示されるモーダルの見た目を確認できます。**Done** をクリックするとデザインを保存してメッセージ設定画面に戻ります。

ページ下部のナビゲーションボタンでステップ間を移動できます。

- **Back** — Target Audienceステップに戻ります。
- **Next** — 次に進みます（必須フィールド入力済みの場合に有効）。
- **Pause** / **Launch** — この画面から直接キャンペーンのステータスを変更します。


### 起動と一時停止

メッセージコンテンツが完成したら、**Launch** をクリックしてメッセージを配信開始します。Engage Studioは連携しているRT 2.0 PersonalizationセクションのString Builder設定内のIn-Appメッセージ設定を自動的に更新します。なお、配信はRT 2.0の伝播に依存するため、起動直後にアプリへ即時反映されない場合があります。

配信を停止するには **Pause** をクリックします。これにより、連携しているPersonalizationセクションのString Builder設定からIn-Appメッセージ設定が削除されます。編集後はいつでも再起動できます。

## キャンペーンのライフサイクル

In-Appメッセージは以下のステータスを移行します。


```
DRAFT ──起動──> LIVE ──一時停止──> PAUSED ──起動──> LIVE
```

- **Draft（下書き）**: 作成済みだがまだ配信されていません。すべての設定を自由に編集できます。
- **Live（配信中）**: 現在ユーザーへの配信中です。設定は編集できません。変更するにはキャンペーンを一時停止してください。
- **Paused（一時停止中）**: 配信が停止されています。再起動前にすべての設定を編集できます。


## 仕組み

モバイルIn-Appメッセージングは、**Realtime Personalization 2.0（RT 2.0）** を基盤として構築されています。ユーザーがモバイルアプリ内でイベント（ページビューやセッション開始など）をトリガーすると、お客様のアプリがRT 2.0 Personalization APIを呼び出します。対象のIn-Appメッセージが設定されており、ユーザーがターゲットセグメントに属している場合、APIはメッセージのHTMLを返し、アプリがそれをモーダルオーバーレイとして表示します。繰り返し表示時のAPI呼び出しを削減するため、必要に応じてメッセージコンテンツをお客様のアプリ側でキャッシュすることもできます。

### Engage StudioがRT 2.0を更新する仕組み

Engage StudioでIn-Appメッセージを **Launch** すると、プラットフォームは連携しているRT 2.0 Personalizationセクションのペイロードを自動的に更新します。セクションには、お客様のアプリが実行時に読み取る3つのString Builderの出力値が格納されます。

- `td_in_app.versions` — メッセージのバージョンメタデータ。
- `td_in_app.messages` — メッセージオブジェクトのJSON配列。各オブジェクトには以下のフィールドが含まれます。
| フィールド | 型 | 説明 |
|  --- | --- | --- |
| `id` | string（UUID） | メッセージの一意な識別子。 |
| `type` | string | メッセージタイプ。現在は常に `modal`。 |
| `content_html` | string | アプリが表示するモーダルのHTML全文。 |
- `td_in_app.created_at_milliseconds` — キャッシュの無効化に使用される作成タイムスタンプ。


メッセージを一時停止すると、String Builder設定からIn-Appメッセージ設定が削除され、アプリはそれ以降メッセージを受け取らなくなります。

### アプリがメッセージを表示する仕組み

お客様のアプリは、該当するイベント（例：`app_open`）でP13N APIを呼び出し、レスポンスの `td_in_app.messages` フィールドを解析して、HTMLをポップアップとして表示します。現状では、具体的な表示方法はお客様のアプリ実装に依存します。この処理を自動的に行うTreasure Data SDKは、将来のリリースで提供予定です。

### エンドツーエンドのメッセージ配信フロー


```
1. ユーザーがアプリを開く、または画面を遷移する
        ↓
2. お客様のアプリがRT 2.0 Personalization APIを呼び出す
        ↓
3. Personalization APIがターゲティングを評価する（ペアレントセグメント＋セクション）
        ↓
4. 対象のIn-Appメッセージが存在する場合 → APIがメッセージHTMLを返す
        ↓
5. お客様のアプリがHTMLをモーダルオーバーレイとして表示する
        ↓
6. ユーザーがメッセージを閲覧、操作、または閉じる
```