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 名前空間 を参照してください。
-
「保存」を選択します。
{modal="regular"}
Adobe Journey Optimizer
モバイルアプリからEdge Networkに送信されるデータがJourney Optimizer - Decision Management に転送されるようにするには、データストリーム設定を更新します。
-
データ収集 UI で「データストリーム」を選択し、データストリームを選択します(例:Luma Mobile App)。
-
の「詳細 」を選択し、コンテキストメニューから 編集 編集 を選択します。 -
データストリーム/
/Adobe Experience Platform 画面で、「Offer Decisioning」、「Edge セグメント化」、「Personalizationの宛先」が選択されていることを確認します。 Journey Optimizerのレッスンにも従う場合は、「Adobe Journey Optimizer」を選択します。 詳しくは、Adobe Experience Platform 設定を参照してください。 -
データストリーム設定を保存するには、「保存」を選択します。
{modal="regular"}
Offer Decisioningと Target のタグ拡張機能のインストール
このレッスンでは、Target での A/B テストについて説明しますが、テスト結果はオファーと見なされ、Adobe Offer Decisioningと Target タグ拡張機能を使用してAdobe インフラストラクチャに実装されます。 この拡張機能では、Journey Optimizerと Target の両方が提供するオファーを処理します。
-
Tags に移動し、モバイルタグプロパティを見つけて、プロパティを開きます。
-
拡張機能 を選択します。
-
カタログ を選択します。
-
Offer Decisioningと Target 拡張機能を検索します。
-
拡張機能をインストールします。 拡張機能では、追加の設定は必要ありません。
{modal="regular"}
スキーマを更新
- データ収集インターフェイスに移動し、左パネルから スキーマ を選択します。
- 上部のバーから 参照 を選択します。
- スキーマを選択して開きます。
- スキーマエディターで、「フィールドグループ
追加 追加 を選択します。 - フィールドグループの追加 ダイアログで、
propositionを検索し、エクスペリエンスイベント – 提案インタラクション および フィールドグループの追加 を選択します。
{modal="regular"}
- スキーマへの変更を保存するには、「保存」を選択します。
Assuranceでの設定の検証
Assuranceの設定を検証するには:
- Assurance UI に移動します。
- 左側のパネルで 設定 を選択し、{6
の下にある 設定を検証 の横にある「追加 を選択します。 - 「保存」を選択します。
- 左パネルで 設定を検証 を選択します。 データストリームの設定と、アプリケーションでのSDKの設定の両方が検証されます。
{modal="regular"}
A/B テストの作成
概要で説明したように、Adobe Targetで作成してモバイルアプリに実装できるアクティビティには、多くの種類があります。 このレッスンでは、A/B テストを実装します。
-
Target UI の上部バーで「アクティビティ」をクリックします。
-
アクティビティを作成 と A/B テスト をコンテキストメニューから選択します。
-
A/B テストアクティビティを作成 ダイアログで、タイプ として モバイル を選択し、Workspaceを選択 リストからワークスペースを選択します。 Target Premium ユーザーで、データストリームでプロパティトークンを指定した場合は、プロパティを選択 リストからプロパティを選択します。
-
「作成」を選択します。
{modal="regular"}
-
名称未設定アクティビティ 画面の エクスペリエンス ステップで、次の操作を行います。
-
luma-mobileapp-abtest場所 1 の下の 場所を選択 に を入力します。 この場所名(mbox と呼ばれることが多い)は、アプリの実装で後で使用されます。 -
の横にある 詳細 を選択し、コンテキストメニューから JSON オファーを作成 を選択します。 -
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" } {modal="regular"}
「作成」を選択します。
-
エクスペリエンス の横にある「+」を選択して、エクスペリエンス 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 テストの設定をレビューします。 デフォルトでは、両方のオファーがすべての訪問者に均等に割り当てられます。 「次へ」をクリックして続行します。
{modal="regular"}
-
目標と設定 手順で、次の操作を行います。
-
名称未設定アクティビティの名前を
Luma Mobile SDK Tutorial - A/B Test Exampleなどに変更します。 -
A/B テストの 目的 を入力します(例:
A/B Test for Luma mobile app tutorial)。 -
目標指標/自分のプライマリ目標 タイルで コンバージョン、mbox を表示 を選択し、
luma-mobileapp-abtestなどの場所(mbox)名を入力します。 -
保存して閉じる を選択します。
{modal="regular"}
-
-
すべてのアクティビティ 画面に戻ります。
- アクティビティで
を選択します。 -
アクティベート を選択して、A/B テストをアクティベートします。
{modal="regular"}
- アクティビティで
アプリへの 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.onPropositionsUpdateAPI 呼び出しです。この呼び出しは、次のような特徴があります。- 決定範囲(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 >
の build.gradle.kts の依存関係に含まれていることを確認します。 Gradle を参照。 -
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
/app/kotlin+java/com.adobe.luma.tutorial.android/models/MobileSDK に移動します。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.onPropositionsUpdateAPI 呼び出しです。この呼び出しは、次のような特徴があります。- 決定範囲(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 に送信できます。 詳細については、「ターゲット・パラメータ を参照 てください。
アプリを使用した検証
-
を使用して、シミュレータまたは Xcode の物理デバイスでアプリを再構築して実行します。 -
「Personalization」タブに移動します
-
一番下までスクロールすると、A/B テストで定義した 2 つのオファーのいずれかが TARGET タイルに表示されます。
{width="300"}
-
を使用して、シミュレーターまたはAndroid Studio の物理デバイスでアプリを再構築して実行します。 -
「Personalization」タブに移動します。
-
A/B テストで定義した 2 つのオファーのいずれかが TARGET タイルの下部のボックスに表示されます。
{width="300"}
Assuranceでの実装の検証
Assuranceで A/B テストを検証するには:
-
設定手順 の節を参照して、シミュレーターまたはデバイスをAssuranceに接続します。
-
左側のパネルで 設定 を選択し、
OFFER DECSIONING AND TARGET の下の レビューとシミュレート の横にある「追加 を選択します。 -
「保存」を選択します。
-
左パネルで レビューとシミュレート を選択します。 データストリームの設定と、アプリケーションでのSDKの設定の両方が検証されます。
-
上部のバーで「リクエスト」を選択します。 Target リクエストが表示されます。
{modal="regular"}
-
「シミュレート」タブと「イベントリスト」タブを探索して、Target オファーの設定を検証するのに役立つ追加機能を確認できます。
次の手順
これで、関連する場合および該当する場合に、A/B テストまたはその他の Target アクティビティ(エクスペリエンスのターゲット設定、多変量分析テストなど)のアプリへの追加を開始するためのすべてのツールが用意できました。 Optimize 拡張機能の GitHub リポジトリーでは Adobe Target オファーのトラッキング方法に関する専用の チュートリアル へのリンクも確認できます。
次のトピック:結論と次のステップ