Adobe Targetを使用した最適化とパーソナライズ
Platform Mobile SDKとAdobe Targetを使用して、モバイルアプリのエクスペリエンスを最適化およびパーソナライズする方法について説明します。
Target は、顧客体験をカスタマイズおよびパーソナライズするために必要なすべてを提供します。 Target は、Web サイト、モバイルサイト、アプリ、ソーシャルメディア、その他のデジタルチャネルの売上高を最大化するのに役立ちます。 Target は、A/B テスト、多変量分析テスト、製品とコンテンツのレコメンデーション、コンテンツのターゲット設定、AI を使用したコンテンツの自動パーソナライズなどを実行できます。 このレッスンでは、Target の A/B テスト機能に焦点を当てます。 詳しくは、A/B テストの概要 参照してください。
Target で A/B テストを実行する前に、設定と統合が適切に行われていることを確認する必要があります。
前提条件
- SDK がインストールおよび設定された状態で、アプリケーションが正常に構築および実行されました。
- 権限、適切に設定された役割、ワークスペース、プロパティ を使用して、Adobe Targetにアクセスします。
学習目標
このレッスンでは、次の操作を行います。
- Target 統合のデータストリームを更新します。
- Offer Decisioningと Target の拡張機能を使用してタグプロパティを更新します。
- 提案イベントを取り込むようにスキーマを更新します。
- Assuranceの設定を検証します。
- Target で簡単な A/B テストを作成します。
- アプリを更新して、Optimizer 拡張機能を登録します。
- アプリに A/B テストを実装します。
- Assuranceでの実装を検証します。
セットアップ
データストリーム設定を更新
Adobe Target
モバイルアプリからExperience Platform Edge NetworkAdobe Targetにデータが確実に転送されるようにするには、データストリーム設定を更新する必要があります。
-
データ収集 UI で「データストリーム」を選択し、データストリームを選択します(例:Luma Mobile App)。
-
サービスを追加 を選択してから、{ サービス リストから 2 Adobe Target} を選択してください。
-
Target Premium ユーザーがプロパティトークンを使用する場合は、この統合に使用する Target プロパティトークン 値を入力します。 Target Standard ユーザーは、この手順をスキップできます。
Target UI の 管理/プロパティ で、プロパティを確認できます。 「
"at_property": "xxxxxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxxxx"
のような形式があります。値xxxxxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxxxx
のみを入力する必要があります。オプションで、ターゲット環境 ID を指定できます。 Target では、環境を使用してサイトと実稼動前の環境を整理し、管理を容易にし、レポートを個別に作成できます。 プリセットされた環境には、実稼働、ステージング、開発が含まれます。 詳しくは、 環境 および ターゲット環境 ID を参照してください。
オプションで、Target サードパーティ ID 名前空間を指定して、ID 名前空間(例:CRM ID)でのプロファイル同期をサポートすることができます。 詳しくは、Target サードパーティ ID 名前空間 を参照してください。
-
「保存」を選択します。
Adobe Journey Optimizer
モバイルアプリからEdge Networkに送信されるデータがJourney Optimizer - Decision Management に転送されるようにするには、データストリーム設定を更新します。
-
データ収集 UI で「データストリーム」を選択し、データストリームを選択します(例:Luma Mobile App)。
-
-
データストリーム/
-
データストリーム設定を保存するには、「保存」を選択します。
Offer Decisioningと Target のタグ拡張機能のインストール
このレッスンでは、Target での A/B テストについて説明しますが、テスト結果はオファーと見なされ、Adobe Offer Decisioningと Target タグ拡張機能を使用してAdobe インフラストラクチャに実装されます。 この拡張機能では、Journey Optimizerと Target の両方が提供するオファーを処理します。
-
Tags に移動し、モバイルタグプロパティを見つけて、プロパティを開きます。
-
拡張機能 を選択します。
-
カタログ を選択します。
-
Offer Decisioningと Target 拡張機能を検索します。
-
拡張機能をインストールします。 拡張機能では、追加の設定は必要ありません。
スキーマを更新
- データ収集インターフェイスに移動し、左パネルから スキーマ を選択します。
- 上部のバーから 参照 を選択します。
- スキーマを選択して開きます。
- スキーマエディターで、「フィールドグループ
- フィールドグループの追加 ダイアログで、
proposition
を検索し、エクスペリエンスイベント – 提案インタラクション および フィールドグループの追加 を選択します。
- スキーマへの変更を保存するには、「保存」を選択します。
Assuranceでの設定の検証
Assuranceの設定を検証するには:
- Assurance UI に移動します。
- 左側のパネルで 設定 を選択し、{6
- 「保存」を選択します。
- 左パネルで 設定を検証 を選択します。 データストリームの設定と、アプリケーションでのSDKの設定の両方が検証されます。
A/B テストの作成
概要で説明したように、Adobe Targetで作成してモバイルアプリに実装できるアクティビティには、多くの種類があります。 このレッスンでは、A/B テストを実装します。
-
Target UI の上部バーで「アクティビティ」をクリックします。
-
アクティビティを作成 と A/B テスト をコンテキストメニューから選択します。
-
A/B テストアクティビティを作成 ダイアログで、タイプ として モバイル を選択し、Workspaceを選択 リストからワークスペースを選択します。 Target Premium ユーザーで、データストリームでプロパティトークンを指定した場合は、プロパティを選択 リストからプロパティを選択します。
-
「作成」を選択します。
-
名称未設定アクティビティ 画面の エクスペリエンス ステップで、次の操作を行います。
-
luma-mobileapp-abtest
場所 1 の下の 場所を選択 に を入力します。 この場所名(mbox と呼ばれることが多い)は、アプリの実装で後で使用されます。 -
-
JSON オファーを作成 ダイアログに、次の JSON を貼り付けます。
code language-json { "title": "Luma Anaolog Watch", "text": "Designed to stand up to your active lifestyle, this women's Luma Analog Watch features a tasteful brushed chrome finish and a stainless steel, water-resistant construction for lasting durability.", "image": "https://luma.enablementadobe.com/content/dam/luma/en/products/gear/watches/Luma_Analog_Watch.jpg" }
「作成」を選択します。
-
エクスペリエンス の横にある「+」を選択して、エクスペリエンス B を追加します。
-
エクスペリエンス B に対して手順 b と c を繰り返しますが、代わりに
Aim Analog Watch
をタイトルとして使用し、次の JSON を貼り付けます。code language-json { "title": "Aim Analog Watch", "text": "The flexible, rubberized strap is contoured to conform to the shape of your wrist for a comfortable all-day fit. The face features three illuminated hands, a digital read-out of the current time, and stopwatch functions.", "image": "https://luma.enablementadobe.com/content/dam/luma/en/products/gear/watches/Aim_Watch.jpg" }
-
-
Targeting のステップでは、A/B テストの設定をレビューします。 デフォルトでは、両方のオファーがすべての訪問者に均等に割り当てられます。 「次へ」をクリックして続行します。
-
目標と設定 手順で、次の操作を行います。
-
名称未設定アクティビティの名前を
Luma Mobile SDK Tutorial - A/B Test Example
などに変更します。 -
A/B テストの 目的 を入力します(例:
A/B Test for Luma mobile app tutorial
)。 -
目標指標/自分のプライマリ目標 タイルで コンバージョン、mbox を表示 を選択し、
luma-mobileapp-abtest
などの場所(mbox)名を入力します。 -
保存して閉じる を選択します。
-
-
すべてのアクティビティ 画面に戻ります。
- アクティビティで
-
- アクティビティで
アプリへの Target の実装
前のレッスンで説明したように、モバイルタグ拡張機能をインストールしても、設定のみが提供されます。 次に、Optimize SDKをインストールして登録する必要があります。 これらの手順が明確でない場合は、「SDK のインストール の節を参照し ください。
-
Xcode で、AEP Optimize がパッケージの依存関係のパッケージの一覧に追加されていることを確認します。 Swift パッケージマネージャー を参照してください。
-
Xcode プロジェクトナビゲーターで Luma/Luma/AppDelegate に移動します。
-
AEPOptimize
が読み込みのリストに含まれていることを確認します。import AEPOptimize
-
Optimize.self
が、登録している拡張機能の配列の一部であることを確認します。code language-swift let extensions = [ AEPIdentity.Identity.self, Lifecycle.self, Signal.self, Edge.self, AEPEdgeIdentity.Identity.self, Consent.self, UserProfile.self, Places.self, Messaging.self, Optimize.self, Assurance.self ]
-
Xcode プロジェクトナビゲーターで Luma/Luma/Utils/MobileSDK に移動します。
func updatePropositionAT(ecid: String, location: String) async
関数を検索します。 次のコードを追加します。code language-swift // set up the XDM dictionary, define decision scope and call update proposition API Task { let ecid = ["ECID" : ["id" : ecid, "primary" : true] as [String : Any]] let identityMap = ["identityMap" : ecid] let xdmData = ["xdm" : identityMap] let decisionScope = DecisionScope(name: location) Optimize.clearCachedPropositions() Optimize.updatePropositions(for: [decisionScope], withXdm: xdmData) { data, error in if let error = error { Logger.aepMobileSDK.error("MobileSDK - updatePropositionsAT: Error updating propositions: \(error.localizedDescription)") } } }
この関数:
- a/B テストを提示する必要があるプロファイルを識別する ECID を含む、XDM 辞書
xdmData
ードを設定します。 - a/B テストを提示する場所の
decisionScope
配列を定義します。
次に、関数は
Optimize.clearCachedPropositions
とOptimize.updatePropositions
の 2 つの API を呼び出します。 これらの関数は、キャッシュされた提案をすべてクリアし、このプロファイルの提案を更新します。 このコンテキストでの提案は、Target アクティビティ(A/B テスト)から選択され、A/B テストの作成 で定義したエクスペリエンス(オファー)です。 - a/B テストを提示する必要があるプロファイルを識別する ECID を含む、XDM 辞書
-
Xcode プロジェクトナビゲーターで Luma/Luma/Views/Personalization/TargetOffersView に移動します。
func onPropositionsUpdateAT(location: String) async {
関数を見つけて、この関数のコードを調べます。 この関数の最も重要な部分は、Optimize.onPropositionsUpdate
API 呼び出しです。この呼び出しは、次のような特徴があります。- 決定範囲(A/B テストで定義した場所)に基づいて、現在のプロファイルの提案を取得します。
- 提案からオファーを取得します。
- オファーのコンテンツを展開して、アプリで適切に表示できるようにします。
- オファーが表示されたことを通知するイベントを Platform Edge Networkに送り返す、オファーの
displayed()
アクションをトリガーに設定します。
-
TargetOffersView のまま、次のコードを
.onFirstAppear
修飾子に追加します。 このコードにより、オファーを更新するコールバックが 1 回だけ登録されるようになります。code language-swift // Invoke callback for offer updates Task { await self.onPropositionsUpdateAT(location: location) }
-
TargetOffersView のまま、次のコードを
.task
修飾子に追加します。 このコードは、ビューが更新されると、オファーを更新します。code language-swift // Clear and update offers await self.updatePropositionsAT(ecid: currentEcid, location: location)
-
Android Studio で、aepsdk-optimize-android が Android ChevronDown >
-
Android Studio ナビゲーターで app/kotlin+java/com.adobe.luma.tutorial.android/MainActivity に移動します。
-
Optimize
が読み込みのリストに含まれていることを確認します。code language-kotlin import com.adobe.marketing.mobile.optimize.Optimize
-
Optimize.EXTENSION
が、登録している拡張機能の配列の一部であることを確認します。code language-kotlin val extensions = listOf( Identity.EXTENSION, Lifecycle.EXTENSION, Signal.EXTENSION, Edge.EXTENSION, Consent.EXTENSION, UserProfile.EXTENSION, Places.EXTENSION, Messaging.EXTENSION, Optimize.EXTENSION, Assurance.EXTENSION )
-
Android Studio ナビゲーターで Android
suspend fun updatePropositionsAT(ecid: String, location: String)
関数を検索します。 次のコードを追加します。code language-kotlin // set up the XDM dictionary, define decision scope and call update proposition API withContext(Dispatchers.IO) { val ecidMap = mapOf("ECID" to mapOf("id" to ecid, "primary" to true)) val identityMap = mapOf("identityMap" to ecidMap) val xdmData = mapOf("xdm" to identityMap) val decisionScope = DecisionScope(location) Optimize.clearCachedPropositions() Optimize.updatePropositions(listOf(decisionScope), xdmData, null, object : AdobeCallbackWithOptimizeError<MutableMap<DecisionScope?, OptimizeProposition?>?> { override fun fail(optimizeError: AEPOptimizeError?) { val responseError = optimizeError Log.i("MobileSDK", "updatePropositionsAT error: ${responseError}") } override fun call(propositionsMap: MutableMap<DecisionScope?, OptimizeProposition?>?) { val responseMap = propositionsMap Log.i("MobileSDK", "updatePropositionsOD call: ${responseMap}") } }) }
この関数:
- a/B テストを提示する必要があるプロファイルを識別する ECID を含む、XDM 辞書
xdmData
ードを設定します。 - a/B テストを提示する場所の
decisionScope
配列を定義します。
次に、関数は 2 つの API (
Optimize.clearCachedPropositions
とOptimize.updatePropositions
)を呼び出します。 これらの関数は、キャッシュされた提案をすべてクリアし、このプロファイルの提案を更新します。 このコンテキストでの提案は、Target アクティビティ(A/B テスト)から選択され、A/B テストの作成 で定義したエクスペリエンス(オファー)です。 - a/B テストを提示する必要があるプロファイルを識別する ECID を含む、XDM 辞書
-
Android Studio ナビゲーターで app/kotlin+java/com.adobe.luma.tutorial.android/views/TargetOffers.kt に移動します。
fun onPropositionsUpdateAT(location: String): List<OfferItem>
関数を見つけて、この関数のコードを調べます。 この関数の最も重要な部分は、Optimize.onPropositionsUpdate
API 呼び出しです。この呼び出しは、次のような特徴があります。- 決定範囲(A/B テストで定義した場所)に基づいて、現在のプロファイルの提案を取得します。
- 提案からオファーを取得します。
- オファーのコンテンツを展開して、アプリで適切に表示できるようにします。
- オファーを返します。
-
引き続き TargetOffers.kt で、「Personalization」タブを起動したときにオファーが確実に更新されるように、
LaunchedEffect
関数を追加します。code language-kotlin // recompose the view when the number of received offers changes LaunchedEffect(offersAT.count()) { updatePropositionsAT(currentEcid, MobileSDK.shared.targetLocation.value) offersAT = onPropositionsUpdateAT(MobileSDK.shared.targetLocation.value) }
Optimize.updatePropositions
API の呼び出し時にデータディクショナリに追加することで、パーソナライゼーションクエリリクエストで追加の Target パラメーター(mbox、プロファイル、製品、注文パラメーターなど)を Experience Edge Network に送信できます。 詳細については、「ターゲット・パラメータ を参照 てください。
アプリを使用した検証
-
-
「Personalization」タブに移動します
-
一番下までスクロールすると、A/B テストで定義した 2 つのオファーのいずれかが TARGET タイルに表示されます。
-
-
「Personalization」タブに移動します。
-
A/B テストで定義した 2 つのオファーのいずれかが TARGET タイルの下部のボックスに表示されます。
Assuranceでの実装の検証
Assuranceで A/B テストを検証するには:
-
設定手順 の節を参照して、シミュレーターまたはデバイスをAssuranceに接続します。
-
左側のパネルで 設定 を選択し、
-
「保存」を選択します。
-
左パネルで レビューとシミュレート を選択します。 データストリームの設定と、アプリケーションでのSDKの設定の両方が検証されます。
-
上部のバーで「リクエスト」を選択します。 Target リクエストが表示されます。
-
「シミュレート」タブと「イベントリスト」タブを探索して、Target オファーの設定を検証するのに役立つ追加機能を確認できます。
次の手順
これで、関連する場合および該当する場合に、A/B テストまたはその他の Target アクティビティ(エクスペリエンスのターゲット設定、多変量分析テストなど)のアプリへの追加を開始するためのすべてのツールが用意できました。 Optimize 拡張機能の GitHub リポジトリーでは Adobe Target オファーのトラッキング方法に関する専用の チュートリアル へのリンクも確認できます。
次のトピック:結論と次のステップ