Adobe Targetによる最適化とパーソナライゼーション
Platform Mobile SDKとAdobe Targetを使用して、モバイルアプリのエクスペリエンスを最適化およびパーソナライズする方法について説明します。
Adobe Targetには、顧客体験をカスタマイズおよびパーソナライズするために必要なあらゆる機能が揃っています。 Adobe Targetは、webやモバイルのサイト、アプリ、ソーシャルメディアなどのデジタルチャネルでの売上を最大化するのに役立ちます。 Adobe Targetでは、A/B テスト、多変量分析テスト、製品とコンテンツのレコメンデーション、コンテンツのターゲティング、AIを活用したコンテンツの自動パーソナライゼーションなど、さまざまな機能を実行できます。 このレッスンでは、TargetのA/B テスト機能に焦点を当てます。 詳しくは、A/B テストの概要を参照してください。
Adobe TargetでA/B テストを実行する前に、適切な設定と統合が整っていることを確認する必要があります。
前提条件
- SDKがインストールされ、設定されたアプリが正常に構築され、実行されました。
- 権限、適切に設定された役割、ワークスペース、およびプロパティ を持つAdobe Targetへのアクセス。
学習目標
このレッスンでは、次の操作を行います。
- Target統合用にデータストリームを更新します。
- Offer DecisioningおよびTarget拡張機能でタグプロパティを更新します。
- スキーマを更新して、提案イベントを取得します。
- Assuranceで設定を検証します。
- Adobe TargetでシンプルなA/B テストを作成。
- アプリを更新して、Optimizer拡張機能を登録します。
- アプリにA/B テストを実装します。
- Assuranceでの実装を検証する。
セットアップ
データストリーム設定の更新
Adobe Target
モバイルアプリからExperience Platform Edge Networkへのデータ送信がAdobe Targetに確実に転送されるようにするには、データストリーム設定を更新する必要があります。
-
データ収集UIで、データストリームを選択し、データストリーム(例:Luma Mobile App)を選択します。
-
「サービスを追加」を選択し、サービス リストから「Adobe Target」を選択します。
-
Target Premiumのお客様で、プロパティトークンを使用する場合は、この統合に使用するTarget プロパティトークンの値を入力します。 Target Standard ユーザーは、この手順をスキップできます。
プロパティは、管理/プロパティのTarget UIで確認できます。
を選択して、使用するプロパティのプロパティトークンを表示します。 プロパティトークンの形式は
"at_property": "xxxxxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxxxx"です。値xxxxxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxxxxのみを入力してください。オプションで、ターゲット環境IDを指定できます。 Adobe Targetでは、環境を使用してサイトとプリプロダクション環境を整理し、管理とレポートの分離を容易にします。 あらかじめ用意されている環境には、実稼動、ステージングと開発があります。 詳しくは、環境および ターゲット環境IDを参照してください。
オプションで、ID名前空間(CRM IDなど)でのプロファイル同期をサポートするように、Target サードパーティ ID名前空間を指定できます。 詳しくは、Target サードパーティ ID名前空間を参照してください。
-
「保存」を選択します。
{modal="regular"}
Adobe Journey Optimizer
モバイルアプリからEdge Networkへのデータ送信がJourney Optimizer - Decision Managementに確実に転送されるようにするには、データストリーム設定を更新します。
-
データ収集UIで、データストリームを選択し、データストリーム(例:Luma Mobile App)を選択します。
-
Experience Platformの
を選択し、コンテキストメニューから
編集を選択します。
-
データストリーム >
> Adobe Experience Platform画面で、Offer Decisioning、Edge セグメンテーションおよび Personalization宛先 が選択されていることを確認します。 Journey Optimizer レッスンにも従う場合は、Adobe Journey Optimizerを選択します。 詳しくは、Adobe Experience Platform settingsを参照してください。
-
データストリーム設定を保存するには、「保存」を選択します。
{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に移動します。
- 左側のパネルで「Configure」を選択し、OFFER DECISIONINGとTARGETの下の「セットアップを検証」の横にある「
」を選択します。
- 「保存」を選択します。
- 左側のパネルで「設定を検証」を選択します。 データストリーム設定とSDK設定の両方がアプリケーションで検証されます。
{modal="regular"}
A/B テストの作成
概要に記載されているように、Adobe Targetで作成し、モバイルアプリで実装できるアクティビティには多くの種類があります。 このレッスンでは、A/B テストを実装します。
-
Target UIで、上部バーから アクティビティ を選択します。
-
コンテキストメニューから「アクティビティを作成」と「A/B テスト」を選択します。
-
A/B テスト アクティビティを作成 ダイアログで、Typeとして Mobile を選択し、Workspaceを選択 リストからワークスペースを選択します。 Target Premiumのお客様で、データストリームでプロパティトークンを指定した場合は、プロパティを選択 リストからプロパティを選択します。
-
「作成」を選択します。
{modal="regular"}
-
名称未設定のアクティビティ画面で、エクスペリエンス手順で次の操作を行います。
-
場所1の下の 場所 に
luma-mobileapp-abtestと入力します。 この場所の名前(mboxと呼ばれることが多い)は、後でアプリの実装で使用されます。 -
コンテンツの横にある
を選択し、コンテキストメニューから「JSON オファーを作成」を選択します。 -
JSON オファーを作成 ダイアログで、次のJSONを貼り付けます。
code language-json { "title": "Luma Analog 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://newluma.enablementadobe.com/images/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://newluma.enablementadobe.com/images/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」を選択し、場所(mbox)名(例:
luma-mobileapp-abtest)を入力します。 -
保存して閉じるを選択します。
{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を設定し、次の操作を実行します。 decisionScopeを定義します。A/B テストを表示する場所の配列です。
次に、関数は2つのAPIを呼び出します:
Optimize.clearCachedPropositionsとOptimize.updatePropositions。 これらの関数は、キャッシュされた提案をクリアし、このプロファイルの提案を更新します。 このコンテキストでの提案は、Target アクティビティ(A/B テスト)から選択され、A/B テストの作成で定義したエクスペリエンス(オファー)です。 - a/B テストを提示する必要があるプロファイルを識別するためのECIDを含むXDM ディクショナリ
-
Xcode プロジェクトナビゲーターでLuma > Luma > Views > Personalization > TargetOffersViewに移動します。
func onPropositionsUpdateAT(location: String) async {関数を検索し、この関数のコードを調べます。 この関数の最も重要な部分はOptimize.onPropositionsUpdateAPI呼び出しです。この呼び出しは次のとおりです。- 決定範囲(A/B テストで定義した場所)に基づいて、現在のプロファイルの提案を取得します。
- 提案からオファーを取得します。
- アプリ内で適切に表示できるように、オファーのコンテンツをラップ解除します。
- オファーに関する
displayed()アクションをトリガーします。これにより、オファーが表示されることを知らせるイベントがPlatform Edge Networkに送られます。
-
まだ 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
> Gradle Scriptsの 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を設定し、次の操作を実行します。 decisionScopeを定義します。A/B テストを表示する場所の配列です。
次に、関数は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 にある場合は、「
LaunchedEffect」関数を追加して、「Personalization」タブの起動時にオファーが更新されるようにします。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 ネットワークに送信できます。 詳しくは、 ターゲットパラメーターを参照してください。
アプリを使用して検証
-
を使用して、シミュレーターまたはXcodeの物理デバイスでアプリを再構築して実行します。
-
「Personalization」タブに移動します。
-
一番下までスクロールすると、A/B テストで定義した2つのオファーのうち1つがTARGET タイルに表示されます。
{width="300"}
-
を使用して、シミュレーターまたはAndroid Studioの物理デバイスでアプリを再構築して実行します。
-
「Personalization」タブに移動します。
-
A/B テストで定義した2つのオファーのうち1つが、TARGET タイルの下部ボックスに表示されます。
{width="300"}
Assuranceでの実装の検証
AssuranceでA/B テストを検証するには:
-
シミュレーターまたはデバイスをAssuranceに接続するには、設定の手順 セクションを確認してください。
-
左側のパネルで「設定」を選択し、OFFER DECSIONING AND TARGETの下のレビューとシミュレート」の横にある「
」を選択します。
-
「保存」を選択します。
-
左側のパネルで「レビューとシミュレート」を選択します。 データストリーム設定とSDK設定の両方がアプリケーションで検証されます。
-
上部のバーで「リクエスト」を選択します。 Target件のリクエストが表示されました。
{modal="regular"}
-
Target オファー設定の検証に役立つ追加機能については、Simulateおよび イベントリスト のタブを参照できます。
次の手順
A/B テストやその他のTarget アクティビティ(エクスペリエンスのターゲット設定、多変量分析テストなど)をアプリに追加するためのツールが、適切かつ適用可能な場合は、すべてアプリに用意されている必要があります。 詳細については、Optimize拡張機能🔗のGitHub リポジトリを参照してください。Adobe Targetのオファーをトラッキングする方法については、専用の チュートリアル へのリンクも参照できます。
次:結論と次の手順