開発者ガイド
このガイドは、SDK を数分で統合し、Java アプリケーションで実験の実行を開始できるようにすることを目的としています。はじめに
スターターキット
Kameleoon は、SDK をテストするためのスターターキットとデモアプリケーションを提供しています。スターターキットには、アプリ内で SDK メソッドをどのように使用するかを示す例を含む、完全に構成されたアプリが含まれています。スターターキット、デモアプリケーション、および詳細な手順は Java 用スターターキット で入手できます。Java クライアントのインストール
インストールパッケージは Maven Central リポジトリで入手できます。Java SDK は、右側の例に示すように、プロジェクトのpom.xml ファイルに依存関係を追加することでインストールできます。別のプロジェクト管理システムを使用している場合は、追加の例について 統合 ページを参照してください。
- Java EE
- Jakarta EE
pom.xml
追加の構成
認証情報を提供し、SDK の動作をカスタマイズするために、.properties 構成ファイルを作成します。サンプル構成ファイル をダウンロードすることもできます。
このファイルはデフォルトのパス /etc/kameleoon/client-java.conf に保存することを推奨しますが、kameleoon-client-java.properties としてクラスパス内のどこにでも保存できます。
次の表は、設定可能なプロパティを示しています:
Kameleoon クライアントの初期化
アプリケーションに SDK をインストールし、認証情報と SDK の動作 (/etc/kameleoon/client-java.conf 内) を構成したら、次のステップはアプリケーションコードで Kameleoon クライアントを作成することです。例:
create() メソッドリファレンス を参照)。
Kameleoon を通じた A/B テストのコンテキストにおいて、アプリケーションコードの適切なロジックを保証するのは、あなたの責任です。良い慣行として、実験をまだ開始していない場合に、現在の訪問者を実験から除外できることを常に想定するべきです。この除外は、デフォルトおよびリファレンスバリエーションロジックの実装に対応しているため、簡単です。
フィーチャーフラグの有効化
ユーザーへの一意の ID の割り当て
ユーザーに一意の ID を割り当てるには、getVisitorCode() メソッドを使用できます。visitor code が存在しない場合 (リクエストヘッダーのクッキーから)、メソッドはランダムな一意の ID を生成するか、生成済みの defaultVisitorCode を使用します。その後、その ID はレスポンスヘッダーのクッキーに設定されます。
Kameleoon を ハイブリッドモード で使用している場合、getVisitorCode() メソッドを呼び出すことで、一意の ID (visitor code) がアプリケーションファイル engine.js (以前は kameleoon.js という名前) と SDK の間で共有されることが保証されます。
フラグ構成の取得
コード内でフィーチャーフラグを実装するには、まず Kameleoon アカウントでフィーチャーフラグを作成する必要があります。 特定のユーザーに対するフィーチャーフラグのステータスまたはバリエーションを判別するには、getVariation() または isFeatureActive() メソッドを使用して、featureKey に基づいて構成を取得します。
getVariation() メソッドは、ON/OFF 状態のシンプルなフィーチャーフラグと、複数のバリエーションを持つより複雑なフラグの両方を処理します。このメソッドは、フィーチャールールをチェックし、バリエーションを割り当てて、featureKey と visitorCode に基づいてそれを返すことで、ユーザーに適切なバリエーションを取得します。
isFeatureActive() メソッドは、複数のバリエーションやターゲティングオプションを持つより複雑なフィーチャーフラグとは対照的に、ON または OFF 状態のみを持つシンプルなフィーチャーフラグの構成を取得したい場合に使用できます。
フィーチャーフラグに関連する変数がある場合 (各バリエーションに紐付けられた特定の動作など)、getVariation() は Variation オブジェクトへのアクセスも可能にし、割り当てられたバリエーションとその関連実験の詳細を提供します。このメソッドは、ユーザーがターゲットになっているかどうかを確認し、訪問者の割り当てられたバリエーションを見つけて、ストレージに保存します。track=true の場合、SDK は次のトラッキングリクエストで指定された実験に対する露出イベントを送信します。これは SDK の tracking_interval_millisecond に基づいて自動的にトリガーされます。デフォルトでは、この間隔は 1000 ミリ秒 (1 秒) に設定されています。
getVariation() メソッドでは、トラッキングを行うかどうかを制御できます。track=false の場合、SDK は露出イベントを送信しません。これは、SDK 経由でデータをトラッキングするのではなく、Kameleoon エンジンによって管理されるクライアントサイドのトラッキングに依存することを希望する場合に便利です。さらに、track=false を設定することは、すべてのフラグのバリエーションを取得するだけでトラッキングイベントをトリガーしたくない場合に getVariations() メソッドを使用するときに役立ちます。トラッキングの仕組みについて詳しく知りたい場合は、この記事 を参照してください。
ユーザーをターゲティングしたり、レポートで訪問をフィルタリング/分解するためにデータポイントを追加する
ユーザーをターゲットにするには、フィーチャーのバリエーションを取得したりフラグがアクティブかどうかをチェックする前に、関連するデータポイントをそのプロファイルに追加するようにしてください。addData() メソッドを使用して、これらのデータポイントをユーザーのプロファイルに追加します。
他のデバイスで収集されたデータポイントを取得したり、過去のユーザーデータ (Kameleoon をハイブリッドモードで使用している場合にクライアントサイドで収集) にアクセスしたりするには、getRemoteVisitorData() メソッドを使用します。このメソッドは非同期的にサーバーからデータを取得します。バリエーションを取得したりフィーチャーフラグがアクティブかどうかをチェックしたりする 前に getRemoteVisitorData() を呼び出すことが重要です。このデータは、ユーザーを特定のバリエーションに割り当てるために必要になる可能性があるためです。
利用可能なターゲティング条件についての詳細は、このトピックに関する詳細な記事 を参照してください。
さらに、訪問者プロファイルに追加するデータポイントは、実験を分析する際に利用できるため、デバイスやブラウザーなどの要素で結果をフィルタリングしたり分解したりできます。Kameleoon ハイブリッドモードは、クライアントサイドで多くのデータポイントを自動的に収集するため、これらの事前収集されたデータポイントに基づいて結果を簡単に分解できます。完全なリストは こちら を参照してください。
自動的に収集されるもの以外の追加データポイントを追跡する必要がある場合は、Kameleoon の カスタムデータ機能 を使用できます。カスタムデータを使用すると、実験に関連する特定の情報を取得して分析できます。収集したデータを分析のために Kameleoon サーバーに送信するために、flush() メソッドを呼び出すことを忘れないでください。
結果を正確にするためには、
UserAgent データタイプを使用してボットをフィルタリングすることを推奨します。ゴールコンバージョンのトラッキング
ユーザーが目的のアクション (購入など) を完了すると、それはコンバージョンとして記録されます。コンバージョンをトラッキングするには、trackConversion() メソッドを使用し、必須の visitorCode および goalId パラメータを指定します。
コンバージョントラッキングリクエストは、次にスケジュールされたトラッキングリクエストとともに送信されます。これは SDK が (tracking_interval_millisecond で定義された) 定期的な間隔で送信します。リクエストを即座に送信したい場合は、パラメータ instant=true を指定して flush() メソッドを使用します。
分析ソリューションへのイベント送信
コンバージョンをトラッキングし、顧客の分析ソリューションに露出イベントを送信するには、まず Kameleoon を ハイブリッドモード で実装する必要があります。その後、getEngineTrackingCode() メソッドを使用します。
getEngineTrackingCode() メソッドは、分析ソリューションに露出イベントを送信するために必要な一意のトラッキングコードを取得します。このメソッドを使用すると、イベントを記録し、希望する分析プラットフォームに送信できます。
カスタムバケットキーの使用
デフォルトでは、Kameleoon は一意の匿名訪問者 ID (visitorCode) を使用して、フィーチャーフラグバリエーションにユーザーを割り当てます。この ID は通常、ユーザーのデバイス上で生成および保存されます (クライアントサイドおよびサーバーサイドの SDK ではブラウザクッキー内、モバイル SDK では永続ストレージ内)。ただし、特定のシナリオでは、同じ組織のすべてのユーザーがフィーチャーフラグの同じバリアントを見ることを保証する必要があるかもしれません。
カスタムバケットキー オプションを使用すると、独自のカスタムバケット識別子を提供することで、このデフォルトの動作を上書きできます。この上書きにより、Kameleoon の割り当てロジックがデフォルトの visitorCode の代わりに指定したキーを使用することが保証されます。
ユースケース
カスタムバケットキーを使用することは、特に次のような状況において、フィーチャーフラグの割り当ての一貫性と正確性を維持するために不可欠です:- アカウントレベルまたは組織の実験: B2B 製品や、同じ組織のすべてのユーザーを同じバリエーションに割り当てたいシナリオでは、
accountIdのような識別子を使用できます。カスタムバケットキーは、チーム全体または会社全体に影響を与える機能の A/B テストにとって重要です。
技術的な詳細
フィーチャーフラグのカスタムバケットキーを構成する際、アプリケーションのデータから特定の識別子を Kameleoon に提供します:- カスタムキーの提供:
addData()メソッドを使用して、Kameleoon SDK にカスタム識別子を提供します。このメソッドでは、選択したカスタムバケットキーをCustomDataオブジェクトとして渡します。ここで、newVisitorCodeはバケットに使用したい識別子 (たとえば、新しいuserIdまたはaccountId) を指します。
- バケットロジック:
addData()メソッドを介してカスタムバケットキーが提供されると、ユーザーをバリエーションに割り当てるためのすべてのハッシュ計算で、デフォルトのvisitorCodeの代わりにnewVisitorCode(カスタムキー) が使用されます。newVisitorCodeを使用することは、バケット決定がカスタム識別子に紐付けられることを意味し、その識別子が存在するさまざまなコンテキストにわたって一貫した割り当てが保証されます。 - データトラッキングと分析:
newVisitorCode(カスタムキー) はバケット決定に使用されますが、後続のすべてのデータ (たとえば、トラッキングイベントやコンバージョン) は 元のvisitorCodeと関連付けて送信される ことに注意することが重要です。この分離により、バケットがより高いレベル (アカウントなど) で、または複数のデバイス/セッションにわたって実行された場合でも、分析が実験のより広いコンテキスト内で個々のユーザージャーニーやインタラクションを正確に反映することが保証されます。元の訪問者データは、包括的なレポートのために完全に保持されます。
技術要件
カスタムバケットキーを効果的に使用するには:- キーは
Stringである必要があります。 - バケットしたいエンティティに対して一意である必要があります (たとえば、
userIdを使用する場合、各ユーザーの ID は一意である必要があります)。 - キーは、そのユーザーまたはリクエストに対してフィーチャーフラグの決定が評価される正確な瞬間に SDK で利用可能である必要があります。
ターゲティング条件
Kameleoon SDK は、キャンペーンでユーザーをターゲットにするために使用できるさまざまな事前定義されたターゲティング条件をサポートしています。この SDK がサポートする条件のリストについては、訪問履歴を使ってユーザーをターゲットにする を参照してください。 また、独自の 外部データを使ってユーザーをターゲットにする こともできます。クロスデバイス実験
複数のデバイスからアプリにアクセスする訪問者をサポートするために、Kameleoon は以前に収集された訪問者データを各訪問者のデバイス間で同期させ、クロスデバイス実験を通じてデバイス間で訪問履歴を統合できるようにします。Kameleoon がデバイス間でデータを処理する方法に関するケーススタディと詳細情報は、クロスデバイス実験に関する記事 で入手できます。デバイス間でのカスタムデータの同期
カスタムマッピング同期は、デバイス間で訪問者データを揃えるために使用されますが、常に必要というわけではありません。カスタムマッピング同期が不要な 2 つのシナリオを以下に示します: デバイス間で同じユーザー ID すべてのデバイスで同じユーザー ID が一貫して使用されている場合、カスタムマッピング同期なしで自動的に同期が処理されます。複数のデバイス間で収集されたデータを同期したい場合は、getRemoteVisitorData() メソッドを呼び出すだけで十分です。
一貫した ID を持つマルチサーバーインスタンス
複数のサーバーが関与する複雑なセットアップ (たとえば、分散サーバーインスタンス) で、サーバー間で同じユーザー ID が利用可能な場合、追加のカスタムマッピング同期なしに、サーバー間の同期 (getRemoteVisitorData() による) で十分です。
追加データが必要なお客様は、getRemoteVisitorData() メソッドの説明を参照してください。以下のコードでは、データを正確に取得するために、2 つのデバイス間で同じ一意の識別子 (この場合は visitorCode で、userId とも呼ばれます) が一貫して使用されていることを前提としています。
収集したデータをリアルタイムで同期したい場合、カスタムデータのスコープに Visitor を選択する必要があります。
Device A
Device B
セッション統合のためのカスタムデータの使用
クロスデバイス実験 では、訪問者の履歴を各デバイス間で統合できます (履歴の照合)。履歴の照合により、異なる訪問者セッションを 1 つに統合できます。訪問履歴を統合するには、CustomData を使用して訪問者の一意の識別子を提供します。詳細については、専用ドキュメント を参照してください。
クロスデバイス照合が有効になった後、パラメータ userId を指定して getRemoteVisitorData() を呼び出すと、特定のユーザーに関する既知のすべてのデータが取得されます。
同じ識別子を持つセッションには、実験において常に同じバリエーションが表示されます。実験の結果ページの訪問者ビューでは、これらのセッションは単一の訪問者として表示されます。
SDK の構成により、関連付けられたセッションは常に実験の同じバリエーションを見ることが保証されます。ただし、クロスデバイスバリエーション割り当てにはいくつかの制限があります。これらの制限は こちら に概説されています。
Kameleoon プラットフォームでカスタムデータをセットアップするには、クロスデバイス履歴照合の有効化 ガイドに従ってください。
その後、通常どおりに SDK を使用できます。セッション統合のコンテキストで役立つ可能性のあるメソッドは以下のとおりです:
getRemoteVisitorData()にUniqueIdentifier(true)を追加 - すべての関連付けられた訪問者のデータを取得します。trackConversion()またはflush()にUniqueIdentifier(true)データを追加 - 別の訪問者に関連付けられた特定の訪問者の一部のデータをトラッキングします。
getVisitorCode() メソッドによって生成された匿名訪問者識別子が使用されます。ユーザーがログインした後、匿名訪問者がユーザー ID と関連付けられ、訪問者の一意の識別子として使用されます。
ロギング
SDK は、内部のさまざまなプロセスや問題を反映するログを生成します。ログレベル
SDK は、ログレベルによるログの制限の構成をサポートしています。ログのカスタムハンドリング
SDK は、デフォルトでログをコンソール出力に書き込みます。この動作は上書きできます。ログレベルによるロギング制限は、ログハンドリングロジックとは別に実行されます。
リファレンス
これは Java SDK の完全なリファレンスドキュメントです。初期化
create()
SDK を使用するには、初期化を完了する必要があります。アプリケーションは、KameleoonClient クラスのオブジェクトを通じて SDK とのすべてのやり取りを行います。KameleoonClientFactory の静的メソッド create() を使用してこのオブジェクトを作成します。
引数
戻り値
スローされる例外
waitInit()
waitInit() は、KameleoonClient の初期化を待機します。このメソッドを使用すると、他の操作に進む前に SDK がクライアントを正常に初期化したかどうかを確認できます。
waitInit() メソッドが失敗した場合、初期化プロセスは中断されることなく続行されます。waitInit() メソッドへの後続の呼び出しは、KameleoonClient の現在の状態を反映した結果を返します。したがって、SDK のステータスをチェックするために waitInit() メソッドを複数回呼び出すことができます。戻り値
スローされる例外
フィーチャーフラグとバリエーション
isFeatureActive()
- 📨 Kameleoon にトラッキングデータを送信します (
trackパラメータに依存)
このメソッドは以前
activeFeature と呼ばれており、SDK バージョン 4.0.0 で削除されました。visitorCode と featureKey を必須引数として受け取ります。
ユーザーがこのフィーチャーフラグに関連付けられていない場合、SDK はランダムなブール値 (このフィーチャーにユーザーを追加するには true、ユーザーをフィーチャーから除外するには false) を返します。指定された visitorCode を持つユーザーがすでにこのフィーチャーフラグに登録されている場合、SDK は以前の featureFlag 値を検出します。
潜在的な例外をキャッチして処理するようにしてください。
visitorCode を指定すると、isFeatureActive() メソッドはこれを一意の訪問者識別子として使用します。これは クロスデバイス実験 に役立ちます。visitorCode を指定して isUniqueIdentifier パラメータを true に設定すると、SDK はフラッシュされたデータを指定された識別子に関連付けられた訪問者にリンクします。
パラメータ
isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は特殊な状況で役立ちます。たとえば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッション統合を通じてその訪問者にリンクされている内部 ID を使用できる場合などです。引数
戻り値
スローされる例外
getVariation()
- 📨 Kameleoon にトラッキングデータを送信します (
trackパラメータに依存)
Variation を取得します。
このメソッドは、visitorCode と featureKey を必須引数として受け取ります。track 引数はオプションで、デフォルトは true です。
訪問者に割り当てられた Variation を返します。訪問者がフィーチャーフラグのルールに関連付けられていない場合、メソッドは指定されたフィーチャーフラグのデフォルトの Variation を返します。
潜在的な例外を管理するために、コードに適切なエラー処理が実装されていることを確認してください。
デフォルトのバリエーションとは、訪問者がフィーチャーフラグの事前定義された配信ルールのいずれにも一致しないときに、訪問者に割り当てられるバリエーションを指します。言い換えれば、特定のルールでターゲットにされていないすべてのユーザーに適用されるフォールバックのバリエーションです。これは、管理インターフェイスの「それ以外のすべての人については…」セクションのバリエーションとして表されます。
引数
戻り値
スローされる例外
getVariations()
- 📨 Kameleoon にトラッキングデータを送信します (
trackパラメータに依存)
Variation オブジェクトのマップを取得します。
このメソッドは、利用可能なすべてのフィーチャーフラグを反復処理し、指定された訪問者に関連付けられた各フラグの割り当てられた Variation を返します。visitorCode を必須引数として受け取り、onlyActive と track はオプションです。
onlyActiveがtrueに設定されている場合、メソッドgetVariations()は、ユーザーがoffバリエーションでバケットされていないことを条件として、フィーチャーフラグのバリエーションを返します。trackパラメータは、メソッドがバリエーションの割り当てをトラッキングするかどうかを制御します。デフォルトではtrueに設定されています。falseに設定されている場合、トラッキングは無効になります。
Variation を値として構成されます。フィーチャーフラグに割り当てられたバリエーションがない場合、そのフラグのデフォルトの Variation を返します。
潜在的な例外を管理するために、適切なエラー処理を実装する必要があります。
デフォルトのバリエーションとは、訪問者がフィーチャーフラグの事前定義された配信ルールのいずれにも一致しないときに、訪問者に割り当てられるバリエーションを指します。言い換えれば、特定のルールでターゲットにされていないすべてのユーザーに適用されるフォールバックのバリエーションです。これは、管理インターフェイスの「それ以外のすべての人については…」セクションのバリエーションとして表されます。
引数
戻り値
スローされる例外
setForcedVariation()
このメソッドを使用すると、標準的な評価プロセスをバイパスして、特定のVariation をユーザーにプログラム的に割り当てることができます。これは、通常の評価ロジックが不要、またはスキップする必要がある制御された実験で特に有用です。デバッグやカスタムテストなどのシナリオでも役立ちます。
強制 バリエーションが設定されると、Kameleoon のリアルタイム評価ロジックが上書きされます。セグメンテーション、ターゲティング条件、アルゴリズム的計算などのプロセスはスキップされます。実験中にセグメンテーションとターゲティング条件を保持するには、代わりに forceTargeting=false を設定します。
シミュレートされた バリエーションは、常に実行順序で優先されます。シミュレートされた バリエーション計算がトリガーされると、それが最初に完全に処理され完了します。
引数
スローされる例外
ほとんどの場合、例で示されているように、基本的なエラー
KameleoonException のみを処理する必要があります。ただし、異なるタイプのエラーに対する応答が必要な場合は、特定の要件に基づいて個別に処理してください。さらに、信頼性を向上させるために、Exception を含めることで一般的な言語エラーを処理できます。evaluateAudiences()
- 📨 Kameleoon にトラッキングデータを送信します
evaluateAudiences() は、関連するすべての訪問者データが設定または更新された後、フィーチャーバリエーションを取得したりフィーチャーフラグをチェックする 直前 に呼び出す必要があります。このアプローチにより、訪問者は利用可能な最新のデータに対して評価され、すべての基準に基づいた正確なオーディエンス割り当てが可能になります。
このメソッドを呼び出した後、Audiences Explorer でセグメントのパフォーマンスの詳細な分析を実行できます。
引数
スローされる例外
ほとんどの場合、例で示されているように、基本的なエラー
KameleoonException のみを処理する必要があります。ただし、異なるタイプのエラーに対する応答が必要な場合は、特定の要件に基づいて個別に処理してください。さらに、信頼性を向上させるために、Exception を含めることで一般的な言語エラーを処理できます。getFeatureList()
このメソッドは以前
obtainFeatureList と呼ばれており、SDK バージョン 4.0.0 で削除されました。戻り値
getDataFile()
現在の SDK 構成をDataFile オブジェクトとして返します。
戻り値
訪問者データ
getVisitorCode()
このメソッドは以前
obtainVisitorCode と呼ばれており、SDK バージョン 4.0.0 で削除されました。visitorCode を取得するために、getVisitorCode() メソッドを呼び出す必要があります。このメソッドは、ユーザー識別の一貫性を保証する必要があるフロントエンドとバックエンドの混合環境で Kameleoon を使用する場合に特に重要です。実装ロジックは以下のとおりです:
-
現在の HTTP リクエストに関連付けられた
kameleoonVisitorCodeクッキーまたはクエリパラメータが見つかるかどうかを確認します。見つかった場合、このkameleoonVisitorCodeを訪問者識別子として使用します。 -
現在のリクエストでクッキー/パラメータが見つからない場合、新しい識別子をランダムに生成するか、
defaultVisitorCode引数が渡されている場合はそれを識別子として使用します。このプロセスにより、お客様が自分の識別子を訪問者コードとして使用したい場合に、それを使用できます。この柔軟性は、マッチングテーブルでの追加検索なしに、Kameleoon の訪問者を自社のユーザーとマッチングできるという追加のメリットがあります。 -
いずれにせよ、サーバーサイド (HTTP ヘッダー経由) で
kameleoonVisitorCodeクッキーが該当する値で設定されます。その後、メソッドはこの識別子の値を返します。
getVisitorCode() メソッドを使用すると、訪問者に シミュレートされた バリエーションを設定できます。クッキー (リクエスト または ドキュメント から) に kameleoonSimulationFFData キーが含まれていると、標準的な評価プロセスがバイパスされます。代わりに、メソッドは提供されたデータに基づいて Variation を直接返します。シミュレーションは 2 つの方法で適用できます:- 自動 (推奨): Kameleoon Web Experimentation を使用しているか、SDK を ハイブリッドモード で使用している場合、Simulation Panel を使用してバリアントの表示をシミュレートするときに、クッキーが自動的に作成されます。
- 手動:
kameleoonSimulationFFDataクッキーを手動で設定します。
- シミュレートされたバリエーション: 全体的な フィーチャーフラグ の結果に影響します。
- 強制バリエーション: 個別の実験に固有です。
kameleoonSimulationFFData クッキーが次の形式に従っていることを確認してください:kameleoonSimulationFFData={"featureKey":{"expId":10,"varId":20}}: 指定されたfeatureKeyに対して、実験expIdのvarIdのバリエーションをシミュレートします。kameleoonSimulationFFData={"featureKey":{"expId":0}}: 指定されたfeatureKeyに対するデフォルトのバリエーション (本番の Then, for everyone else in Production, serve セクションで定義) をシミュレートします。
encodeURIComponent などの方法を使用して URI コンポーネントとしてエンコードする必要があります。引数
戻り値
addData()
addData() メソッドは、現在の訪問者をターゲットにするかどうかを他のメソッドが決定する際に使用できるように、ターゲティングデータ をストレージに追加します。
addData() メソッドは値を返さず、それ自体では Kameleoon バックエンドサーバーとやり取りしません。代わりに、宣言されたすべてのデータは、flush() メソッドを使用した将来の送信のために保存されます。このアプローチにより、データは通常、flush() によってトリガーされる単一のサーバー呼び出しにグループ化されるため、サーバー呼び出しの数が減少します。
trackConversion() メソッドも、flush() と同様に、以前に関連付けられたデータを送信します。実験ルールがトリガーされた場合の getVariation() と getVariations() メソッドにも同じことが言えます。
引数
例外
flush()
- 📨 Kameleoon にトラッキングデータを送信します
flush() メソッドは、訪問者にリンクされた Kameleoon データを収集します。次に、addData メソッドを使用して追加されたが、これらのメソッド のいずれかを使用してまだ送信されていないすべてのデータと共に、トラッキングリクエストを送信します。flush() はサーバー呼び出しが非同期で行われるため、非ブロッキングです。
flush を使用すると、特定の visitorCode に関連付けられたデータがサーバーに送信されるタイミングを制御できます。たとえば、addData() を 12 回呼び出した場合、addData() が呼び出されるたびにサーバーにデータを送信するのは非効率的です。そのため、flush() を 1 回呼び出すだけで済みます。
visitorCode を指定すると、flush() メソッドはこのコードを一意の訪問者識別子として使用します。これは クロスデバイス実験 に役立ちます。visitorCode を指定して isUniqueIdentifier パラメータを true に設定すると、SDK はフラッシュされたデータを指定された識別子に関連付けられた訪問者にリンクします。
パラメータ
isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は特殊な状況で役立ちます。たとえば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッション統合を通じてその訪問者にリンクされている内部 ID を使用できる場合などです。引数
getRemoteData()
このメソッドは以前
retrieveDataFromRemoteSource と呼ばれており、SDK バージョン 4.0.0 で削除されました。getRemoteData() メソッドを使用すると、Kameleoon サーバーに保存された指定された siteCode に対して、引数として渡された key に従ってデータを取得できます。サイトコードは KameleoonClientFactory.create() で指定します。通常、データは Data API を使用してリモートサーバーに保存されます。このメソッドは、スケーラブルなサーバーが利用可能であることと併せて、後でアプリで取得できる追加データを保存するための便利な方法を提供します。
引数
戻り値
getRemoteVisitorData()
getRemoteVisitorData() は、Kameleoon Data API から visitorCode の Kameleoon 訪問データを取得するための非同期メソッドです。このメソッドは、ターゲティングの決定を行う際に他のメソッドが使用できるように、データをストレージに追加します。
このメソッドを使用して取得したデータは、次のような場合に重要な役割を果たします:
- 他のデバイスから収集されたデータを使用する。
- 過去の訪問中に訪問されたページなど、ユーザーの履歴にアクセスする。
- データレイヤー変数やフロントエンドでコンバージョンするゴールなど、クライアントサイドでのみアクセス可能なデータを使用する。
パラメータ
isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は特殊な状況で役立ちます。たとえば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッション統合を通じてその訪問者にリンクされている内部 ID を使用できる場合などです。引数
戻り値
getRemoteVisitorData() でのパラメータの使用
getRemoteVisitorData() メソッドは、訪問者に関するデータを取得するときにさまざまなパラメータを定義できる柔軟性を提供します。ゴール、実験、バリエーションに基づいてターゲティングする場合でも、同じアプローチがすべてのデータタイプに適用されます。
たとえば、ゴール「Order transaction」を完了した訪問者に関するデータを取得したいとします。getVisitorData() メソッド内でパラメータを指定して、ターゲティングを絞り込めます。たとえば、最後の 5 回の訪問でゴールでコンバージョンしたユーザーのみをターゲットにしたい場合は、previousVisitAmount パラメータを 5 に、conversions を true に設定できます。
この例で示される柔軟性は、ゴールデータに限定されません。getRemoteVisitorData() メソッド内でパラメータを使用して、さまざまな訪問者行動に関するデータを取得できます。
利用可能な
kameleoon.types.RemoteVisitorDataFilter オプションのリストは以下のとおりです:getVisitorWarehouseAudience()
このメソッドは、指定されたvisitorCode と warehouseKey を使用して、データウェアハウス内で訪問者に関連付けられたすべてのオーディエンスデータを取得します。warehouseKey は通常、内部ユーザー ID です。customDataIndex パラメータは、Kameleoon が訪問者をターゲットにするために使用する Kameleoon カスタムデータに対応します。詳細については、ウェアハウスターゲティングドキュメント を参照してください。メソッドは結果を CustomData オブジェクトとして返される future に渡し、データが訪問者に追加され、ターゲティングの目的で利用可能であることを確認します。
引数
戻り値
スローされる例外
setLegalConsent()
このメソッドを使用して、訪問者が個人データの使用に対して法的同意を与えたかどうかを指定する必要があります。legalConsent パラメータを false に設定すると、トラッキングリクエストに含めることができるデータタイプが制限されます。このメソッドは、訪問者データを責任を持って管理しながら、法律および規制要件を遵守するのに役立ちます。個人データに関する詳細は、同意管理ポリシー をご覧ください。
引数
スローされる例外
同意取り消しの動作
legalConsent=false を指定して setLegalConsent() を呼び出した場合、SDK は kameleoonVisitorCode クッキーを削除しません。代わりに、クッキーの有効期限を延長しなくなるため、クッキーは自然に期限が切れるまで持続します。
コンプライアンス要件としてオプトアウト時にクッキーファイルを直ちに削除することが必要な場合は、フレームワークのネイティブクッキー管理メソッドを使用して手動で削除する必要があります。SDK は自動的にファイルを削除しません。
ゴールとサードパーティ分析
trackConversion()
- 📨 Kameleoon にトラッキングデータを送信します
visitorCode と goalId が必要です。さらに、このメソッドはオプションの revenue、negative、metadata 引数も受け取ります。visitorCode は通常、実験をトリガーする際に使用したものと同一です。
trackConversion() メソッドは値を返しません。このメソッドは、サーバー呼び出しが非同期で行われるため、非ブロッキングです。
パラメータ
isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は他のエッジケースのシナリオでも有用です。たとえば、もともと訪問者に割り当てられた匿名の visitorCode にアクセスできないが、セッション統合機能を使用して匿名訪問者に接続された内部 ID にアクセスできる場合などです。引数
メタデータ値は、生データエクスポート および 結果ページ を介してアクセスできます。
metadata パラメータが提供されている場合、Kameleoon はこれらの指定された値を現在のコンバージョンに使用し、addData() メソッドを使用して以前に収集されたものに代わります。パラメータが省略されている場合、Kameleoon はコンバージョン前および同じ訪問内で、それらの CustomData のために最後にトラッキングされた値を使用します。Kameleoon は、trackConversion() メソッドのパラメータとして明示的に渡されたメタデータ値のみを考慮します。以下の例では、Kameleoon は、パラメータとして明示的に提供されたカスタムデータ値 (ここでは: 値が ‘Amex Credit Card’ のインデックス 5) のみとコンバージョンを関連付けます。例外
getEngineTrackingCode()
Kameleoon は、Mixpanel、Google Analytics 4、Segment などのいくつかの分析ソリューションと統合されています。サーバーサイド実験を正しくトラッキングするには、訪問者が実験をトリガーした後にgetEngineTrackingCode() メソッドを呼び出します。SDK は、訪問者が前の 5 秒間にトリガーした実験の JavaScript キューコマンドを返します。このコードをページに挿入すると、Engine.js はコマンドを処理し、アクティブな分析統合を介して露出イベントを送信します。
このメソッドの実装に関する詳細については、ハイブリッド実験 を参照してください。
- この機能を使用するには、Java SDK と Kameleoon Engine.js の両方を実装します。このフローでは Engine.js はトラッキングにのみ使用されるため、終了
</body>タグの前に非同期タグをインストールできます。 - Kameleoon でのみ実験をトラッキングしたく、サードパーティ分析ツールに露出イベントを送信する必要がない場合は、JavaScript / TypeScript SDK を使用してください。このオプションは サーバーレスエッジコンピュートプラットフォーム に適しています。JavaScript / TypeScript SDK は、対応する実験割り当てを
window.kameleoonQueueに追加していれば、getVisitorCodeを呼び出すときにバリエーションを自動的にトラッキングします。 - 返されたトラッキングコードを HTML
<script>タグに直接挿入できます。
123456 と 234567 は実験 ID、7890 と 8901 はバリエーション ID です。あなたの実装では、SDK が返されたトラッキングコードでこれらの値を生成します。引数
戻り値
イベント
setEventHandler()
このメソッドを使用して、SDK イベントのハンドラーを登録します。選択したイベントが発生すると、SDK はハンドラーを呼び出します。同じイベントタイプに対して新しいハンドラーを登録すると、以前のハンドラーが置き換えられます。handler として null を渡すと、選択したイベントタイプの現在のハンドラーが削除されます。
- DATAFILE_UPDATE
- HTTP_REQUEST
引数
データタイプ
このセクションでは、Kameleoon がcom.kameleoon.Data でサポートするデータタイプをリストします。いくつかの標準データタイプと、カスタムデータタイプを定義できる CustomData タイプを提供します。
Browser
ここに保存されたBrowser データセットは、関連付けられた任意の値で実験とパーソナライゼーションのレポートをフィルタリングするために使用できます。
Conversion
ここに保存されたConversion データセットは、関連付けられた任意のゴールで実験とパーソナライゼーションのレポートをフィルタリングするために使用できます。
Cookie
Cookie には、訪問者のデバイスに保存されたクッキーに関する情報が含まれます。
Geolocation
Geolocation には、訪問者の位置情報の詳細が含まれます。
CustomData
CustomData は、各訪問者にあらゆるタイプのデータを関連付けることができ、セグメント でのターゲティング条件のための効果的なツールになります。さらに、実験レポートでフィルターや分解として使用できます。カスタムデータの詳細については、この記事 を参照してください。
Kameleoon アプリまたは Data API でカスタムデータタイプを定義し、SDK から使用します。
-
各訪問者は、固有の
index(name) ごとに 1 つのCustomDataのみが許可されます。同じindex(name) を持つ別のCustomDataを追加すると、既存のものが置き換えられます。 - カスタムデータの「index」は、カスタムデータダッシュボード の「INDEX」列に表示されます。
- プライバシー上の理由から SDK が選択されたインデックスのデータを Kameleoon サーバーに送信しないようにするには、カスタムデータの作成時にオプション Use this data only locally for targeting purposes を有効にします。
-
SDK インスタンスが初期化されていないとき、または名前が登録されていないときに、名前で作成された
CustomDataインスタンスを追加すると、データは無視されます。
Device
PageView
ページビューイベントを保存します。リファラーのインデックス (ID) は、Kameleoon アプリの 集客チャネル構成 ページで利用できます。注意: このインデックスは 0 から始まるため、指定したサイトに対して作成した最初の集客チャネルの ID は 1 ではなく 0 になります。
UserAgent
サーバーサイド実験は、クライアントサイド実験よりもボットトラフィックの影響を受けやすくなります。Kameleoon は、この問題に対処し、既知のボットとスパイダーを認識するために、IAB/ABC International Spiders and Bots List を使用しています。Kameleoon は、コンバージョンメトリクスを歪める可能性のあるボットや他の不要なトラフィックをフィルタリングするためにUserAgent フィールドも使用します。詳細については、ボットフィルタリング に関するヘルプ記事を参照してください。
内部ボットを使用している場合は、それらを分析から除外するために userAgent の値 curl/8.0 を渡すことをお勧めします。
UniqueIdentifier
訪問者にUniqueIdentifier を追加しない場合、visitorCode が一意の訪問者識別子として使用され、クロスデバイス実験 に役立ちます。訪問者に UniqueIdentifier を追加すると、SDK はフラッシュされたデータを指定された識別子に関連付けられた訪問者にリンクします。
isUniqueIdentifier は特殊な状況で役立ちます。たとえば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッション統合を通じてその訪問者にリンクされている内部 ID を使用できる場合などです。
OperatingSystem
OperatingSystem には、訪問者のデバイスのオペレーティングシステムに関する情報が含まれます。
ApplicationVersion
ApplicationVersion は、アプリケーションのセマンティックバージョン番号を表します。
戻り値の型
DataFile
DataFile には SDK 構成の詳細が含まれます。
クライアントが必要とする場合、追加情報で拡張できます。詳細が必要な場合は、カスタマーサクセスマネージャーにお問い合わせください。
FeatureFlag
FeatureFlag は、フィーチャーフラグ自体を定義するプロパティのセット (たとえば、Variations、Rules、環境ステータスなど) を表します。
クライアントが必要とする場合、追加情報で拡張できます。詳細が必要な場合は、カスタマーサクセスマネージャーにお問い合わせください。
Rule
Rule は、ルール自体を定義するプロパティのセット (たとえば、Variations) を表します。
クライアントが必要とする場合、追加情報で拡張できます。詳細が必要な場合は、カスタマーサクセスマネージャーにお問い合わせください。
Variation
Variation には、訪問者に割り当てられたバリエーション (または、特定の割り当てが存在しない場合はデフォルトのバリエーション) に関する情報が含まれます。
Variationオブジェクトは、割り当てられたバリエーションとその関連実験に関する詳細を提供し、Variableオブジェクトは、バリエーション内の各変数に関する具体的な詳細を含みます。idまたはexperimentIdがnullの場合 (デフォルトバリエーションを示します) を処理することをコードで確認してください。- バリエーションに関連付けられた変数がない場合、
variablesマップは空になる可能性があります。
Variable
Variable には、割り当てられたバリエーションに関連付けられた変数に関する情報が含まれます。
非推奨メソッド
getFeatureVariationKey()
- 📨 Kameleoon にトラッキングデータを送信します
代わりに
getVariation() を使用してください。visitorCode と featureKey を必須引数として受け取ります。
ユーザーがこのフィーチャーフラグに関連付けられていない場合、SDK は (フィーチャーフラグルールに従って) ランダムに割り当てられたバリエーションキーを返します。指定された visitorCode を持つユーザーがすでにこのフィーチャーフラグに登録されている場合、SDK は以前のバリエーションキー値を検出します。ユーザーがどのルールにも一致しない場合、Kameleoon アプリでカスタマイズできるデフォルト値が返されます。
潜在的な例外をキャッチして処理するようにしてください。
visitorCode を指定すると、flush() メソッドはこれを一意の訪問者識別子として使用します。これは クロスデバイス実験 に役立ちます。visitorCode を指定して isUniqueIdentifier パラメータを true に設定すると、SDK はフラッシュされたデータを指定された識別子に関連付けられた訪問者にリンクします。
パラメータ
isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は特殊な状況で役立ちます。たとえば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッション統合を通じてその訪問者にリンクされている内部 ID を使用できる場合などです。引数
戻り値
スローされる例外
getActiveFeatures()
代わりに
getVariations() を使用してください。引数
戻り値
スローされる例外
getActiveFeatureListForVisitorCode()
- 代わりに
getVariations()を使用してください。 - このメソッドは以前
obtainFeatureListForVisitorCodeと呼ばれており、SDK バージョン4.0.0で削除されました。
visitorCode パラメータを受け取ります。指定された訪問者のアクティブなフィーチャーフラグのみを返します。
引数
戻り値
getFeatureVariable()
- 📨 Kameleoon にトラッキングデータを送信します
代わりに
getVariation() を使用してください。visitorCode、featureKey、variableKey を必須引数として受け取ります。
ユーザーがこのフィーチャーフラグに関連付けられていない場合、SDK は、フィーチャーフラグルールに従ってバリエーションキーのランダムに割り当てられた変数値を返します。指定された visitorCode を持つユーザーがすでにこのフィーチャーフラグに登録されている場合、SDK は以前に関連付けられたバリエーションの変数値を返します。ユーザーがどのルールにも一致しない場合、デフォルト変数が返されます。
潜在的な例外をキャッチして処理するようにしてください。
visitorCode を指定すると、getFeatureVariable() メソッドはコードを一意の訪問者識別子として使用します。これは クロスデバイス実験 に役立ちます。visitorCode を指定して isUniqueIdentifier パラメータを true に設定すると、SDK はフラッシュされたデータを指定された識別子に関連付けられた訪問者にリンクします。
パラメータ
isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は特殊な状況で役立ちます。たとえば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッション統合を通じてその訪問者にリンクされている内部 ID を使用できる場合などです。引数
戻り値
スローされる例外
getFeatureVariables()
- 📨 Kameleoon にトラッキングデータを送信します
代わりに
getVariation() を使用してください。visitorCode を持つユーザーがすでにこのフィーチャーフラグに登録されている場合、SDK は以前に使用されたバリエーションの変数値を返します。ユーザーがどのルールにも一致しない場合、デフォルト変数が返されます。
潜在的な例外をキャッチして処理するようにしてください。
引数
戻り値
スローされる例外
getFeatureVariationVariables()
- 代わりに
getVariation()を使用してください。 - このメソッドは以前
getFeatureAllVariablesと呼ばれており、SDK バージョン4.0.0で削除されました。
featureKey と variationKey。Kameleoon アプリで定義された Map<String, Object> タイプのデータを返します。要求したフィーチャーが SDK の内部構成で見つからない場合、例外 (KameleoonException.FeatureNotFound) をスローします。