Skip to main content
Kameleoon Java SDK を使用すると、Java EE / Jakarta EE アプリケーションサーバー上で実験を実行し、フィーチャーフラグを有効化できます。 はじめに: 開始方法については、開発者ガイド を参照してください。 変更履歴: Java SDK の最新バージョン: 4.22.0 Changelog SDK メソッド: Java SDK の完全なリファレンスドキュメントについては、リファレンス セクションを参照してください。

開発者ガイド

このガイドは、SDK を数分で統合し、Java アプリケーションで実験の実行を開始できるようにすることを目的としています。

はじめに

スターターキット

Kameleoon は、SDK をテストするためのスターターキットとデモアプリケーションを提供しています。スターターキットには、アプリ内で SDK メソッドをどのように使用するかを示す例を含む、完全に構成されたアプリが含まれています。スターターキット、デモアプリケーション、および詳細な手順は Java 用スターターキット で入手できます。

Java クライアントのインストール

インストールパッケージは Maven Central リポジトリで入手できます。Java SDK は、右側の例に示すように、プロジェクトの pom.xml ファイルに依存関係を追加することでインストールできます。別のプロジェクト管理システムを使用している場合は、追加の例について 統合 ページを参照してください。
pom.xml

追加の構成

認証情報を提供し、SDK の動作をカスタマイズするために、.properties 構成ファイルを作成します。サンプル構成ファイル をダウンロードすることもできます。 このファイルはデフォルトのパス /etc/kameleoon/client-java.conf に保存することを推奨しますが、kameleoon-client-java.properties としてクラスパス内のどこにでも保存できます。 次の表は、設定可能なプロパティを示しています:

Kameleoon クライアントの初期化

アプリケーションに SDK をインストールし、認証情報と SDK の動作 (/etc/kameleoon/client-java.conf 内) を構成したら、次のステップはアプリケーションコードで Kameleoon クライアントを作成することです。例:
KameleoonClient は、アプリケーションと Kameleoon プラットフォームを橋渡しするシングルトンオブジェクトです。実験を実行するために必要なすべてのメソッドとプロパティが含まれています。Java SDK では HTTP プロキシの使用もサポートしていることに注意してください (詳細については 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 状態のシンプルなフィーチャーフラグと、複数のバリエーションを持つより複雑なフラグの両方を処理します。このメソッドは、フィーチャールールをチェックし、バリエーションを割り当てて、featureKeyvisitorCode に基づいてそれを返すことで、ユーザーに適切なバリエーションを取得します。 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) を指します。
カスタムバケットキーが正しく機能するには、フラグの作成または編集プロセス中にフィーチャーフラグに対しても定義および構成されている必要があります。対応する構成がない場合、SDK のバケットはカスタムキーを適用しません。Kameleoon でこれを設定する方法の詳細な手順については、この記事 を参照してください。
  • バケットロジック: 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) データを追加 - 別の訪問者に関連付けられた特定の訪問者の一部のデータをトラッキングします。
識別子として使用するカスタムデータは Visitor スコープ に設定する必要があるため、各デバイス上で getRemoteVisitorData() メソッドを使用して識別子を取得するには、クロスデバイスカスタムデータ同期 を使用する必要があります。
セッション統合のためのカスタムデータの使用方法の例を以下に示します。
この例では、アプリケーションにログインページがあります。ログイン時にユーザー ID が不明なため、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 で削除されました。
指定されたユーザーに対してフィーチャーフラグがアクティブであるべきかどうかをチェックするには、このメソッドを呼び出します。このメソッドは、フィーチャーがユーザーに対してアクティブかどうかをチェックするために、visitorCodefeatureKey を必須引数として受け取ります。 ユーザーがこのフィーチャーフラグに関連付けられていない場合、SDK はランダムなブール値 (このフィーチャーにユーザーを追加するには true、ユーザーをフィーチャーから除外するには false) を返します。指定された visitorCode を持つユーザーがすでにこのフィーチャーフラグに登録されている場合、SDK は以前の featureFlag 値を検出します。 潜在的な例外をキャッチして処理するようにしてください。 visitorCode を指定すると、isFeatureActive() メソッドはこれを一意の訪問者識別子として使用します。これは クロスデバイス実験 に役立ちます。visitorCode を指定して isUniqueIdentifier パラメータを true に設定すると、SDK はフラッシュされたデータを指定された識別子に関連付けられた訪問者にリンクします。
パラメータ isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は特殊な状況で役立ちます。たとえば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッション統合を通じてその訪問者にリンクされている内部 ID を使用できる場合などです。
引数
戻り値
スローされる例外

getVariation()

  • 📨 Kameleoon にトラッキングデータを送信します (track パラメータに依存)
特定のフィーチャーフラグに対して、特定の訪問者に割り当てられた Variation を取得します。 このメソッドは、visitorCodefeatureKey を必須引数として受け取ります。track 引数はオプションで、デフォルトは true です。 訪問者に割り当てられた Variation を返します。訪問者がフィーチャーフラグのルールに関連付けられていない場合、メソッドは指定されたフィーチャーフラグのデフォルトの Variation を返します。 潜在的な例外を管理するために、コードに適切なエラー処理が実装されていることを確認してください。
デフォルトのバリエーションとは、訪問者がフィーチャーフラグの事前定義された配信ルールのいずれにも一致しないときに、訪問者に割り当てられるバリエーションを指します。言い換えれば、特定のルールでターゲットにされていないすべてのユーザーに適用されるフォールバックのバリエーションです。これは、管理インターフェイスの「それ以外のすべての人については…」セクションのバリエーションとして表されます。
引数
戻り値
スローされる例外

getVariations()

  • 📨 Kameleoon にトラッキングデータを送信します (track パラメータに依存)
すべてのフィーチャーフラグにわたって、特定の訪問者に割り当てられた Variation オブジェクトのマップを取得します。 このメソッドは、利用可能なすべてのフィーチャーフラグを反復処理し、指定された訪問者に関連付けられた各フラグの割り当てられた Variation を返します。visitorCode を必須引数として受け取り、onlyActivetrack はオプションです。
  • onlyActivetrue に設定されている場合、メソッド getVariations() は、ユーザーが off バリエーションでバケットされていないことを条件として、フィーチャーフラグのバリエーションを返します。
  • track パラメータは、メソッドがバリエーションの割り当てをトラッキングするかどうかを制御します。デフォルトでは true に設定されています。false に設定されている場合、トラッキングは無効になります。
返されるマップは、フィーチャーフラグキーをキー、対応する Variation を値として構成されます。フィーチャーフラグに割り当てられたバリエーションがない場合、そのフラグのデフォルトの Variation を返します。 潜在的な例外を管理するために、適切なエラー処理を実装する必要があります。
デフォルトのバリエーションとは、訪問者がフィーチャーフラグの事前定義された配信ルールのいずれにも一致しないときに、訪問者に割り当てられるバリエーションを指します。言い換えれば、特定のルールでターゲットにされていないすべてのユーザーに適用されるフォールバックのバリエーションです。これは、管理インターフェイスの「それ以外のすべての人については…」セクションのバリエーションとして表されます。
引数
戻り値
スローされる例外

setForcedVariation()

このメソッドを使用すると、標準的な評価プロセスをバイパスして、特定の Variation をユーザーにプログラム的に割り当てることができます。これは、通常の評価ロジックが不要、またはスキップする必要がある制御された実験で特に有用です。デバッグやカスタムテストなどのシナリオでも役立ちます。 強制 バリエーションが設定されると、Kameleoon のリアルタイム評価ロジックが上書きされます。セグメンテーション、ターゲティング条件、アルゴリズム的計算などのプロセスはスキップされます。実験中にセグメンテーションとターゲティング条件を保持するには、代わりに forceTargeting=false を設定します。
シミュレートされた バリエーションは、常に実行順序で優先されます。シミュレートされた バリエーション計算がトリガーされると、それが最初に完全に処理され完了します。
強制バリエーションは、評価されたバリエーションと同じように扱われます。これは分析でトラッキングされ、標準的な評価されたバリエーションと同様にユーザーコンテキストに保存されるため、レポート作成における一貫性が保証されます。 特定の条件 (たとえば、無効なパラメータ、ユーザーコンテキスト、または内部の問題) の下で、メソッドは例外をスローする可能性があります。アプリケーションが安定し、回復力を保つために、適切な例外処理が不可欠です。
強制 バリエーションと シミュレートされた バリエーションを区別することが重要です:
  • 強制バリエーション: 個別の実験に固有です。
  • シミュレートされたバリエーション: 全体的な フィーチャーフラグ の結果に影響します。
引数
スローされる例外
ほとんどの場合、例で示されているように、基本的なエラー KameleoonException のみを処理する必要があります。ただし、異なるタイプのエラーに対する応答が必要な場合は、特定の要件に基づいて個別に処理してください。さらに、信頼性を向上させるために、Exception を含めることで一般的な言語エラーを処理できます。

evaluateAudiences()

  • 📨 Kameleoon にトラッキングデータを送信します
このメソッドは、利用可能なすべての Audiences Explorer セグメントに対して訪問者を評価し、一致する訪問者をトラッキングします。 evaluateAudiences() は、関連するすべての訪問者データが設定または更新された後、フィーチャーバリエーションを取得したりフィーチャーフラグをチェックする 直前 に呼び出す必要があります。このアプローチにより、訪問者は利用可能な最新のデータに対して評価され、すべての基準に基づいた正確なオーディエンス割り当てが可能になります。 このメソッドを呼び出した後、Audiences Explorer でセグメントのパフォーマンスの詳細な分析を実行できます。
引数
スローされる例外
ほとんどの場合、例で示されているように、基本的なエラー KameleoonException のみを処理する必要があります。ただし、異なるタイプのエラーに対する応答が必要な場合は、特定の要件に基づいて個別に処理してください。さらに、信頼性を向上させるために、Exception を含めることで一般的な言語エラーを処理できます。

getFeatureList()

このメソッドは以前 obtainFeatureList と呼ばれており、SDK バージョン 4.0.0 で削除されました。
現在 SDK で利用可能なフィーチャーフラグキーのリストを返します。
戻り値

getDataFile()

すべてのフィーチャーフラグを評価するには、getVariations() を使用してください。このメソッドは、DataFile を呼び出してフラグを getVariation() で反復処理するよりも効率的です。
現在の SDK 構成を DataFile オブジェクトとして返します。
戻り値

訪問者データ

getVisitorCode()

このメソッドは以前 obtainVisitorCode と呼ばれており、SDK バージョン 4.0.0 で削除されました。
現在の訪問者の Kameleoon visitorCode を取得するために、getVisitorCode() メソッドを呼び出す必要があります。このメソッドは、ユーザー識別の一貫性を保証する必要があるフロントエンドとバックエンドの混合環境で Kameleoon を使用する場合に特に重要です。実装ロジックは以下のとおりです:
  1. 現在の HTTP リクエストに関連付けられた kameleoonVisitorCode クッキーまたはクエリパラメータが見つかるかどうかを確認します。見つかった場合、この kameleoonVisitorCode を訪問者識別子として使用します。
  2. 現在のリクエストでクッキー/パラメータが見つからない場合、新しい識別子をランダムに生成するか、defaultVisitorCode 引数が渡されている場合はそれを識別子として使用します。このプロセスにより、お客様が自分の識別子を訪問者コードとして使用したい場合に、それを使用できます。この柔軟性は、マッチングテーブルでの追加検索なしに、Kameleoon の訪問者を自社のユーザーとマッチングできるという追加のメリットがあります。
  3. いずれにせよ、サーバーサイド (HTTP ヘッダー経由) で kameleoonVisitorCode クッキーが該当する値で設定されます。その後、メソッドはこの識別子の値を返します。
詳細については、この記事 を参照してください。
visitorCode を提供する場合、その一意性はあなたの側で保証する必要があります。SDK ではチェックできません。また、visitorCode の長さは 255 文字に制限されています。それを超える文字があると例外がスローされます。
getVisitorCode() メソッドを使用すると、訪問者に シミュレートされた バリエーションを設定できます。クッキー (リクエスト または ドキュメント から) に kameleoonSimulationFFData キーが含まれていると、標準的な評価プロセスがバイパスされます。代わりに、メソッドは提供されたデータに基づいて Variation を直接返します。シミュレーションは 2 つの方法で適用できます:
  • 自動 (推奨): Kameleoon Web Experimentation を使用しているか、SDK を ハイブリッドモード で使用している場合、Simulation Panel を使用してバリアントの表示をシミュレートするときに、クッキーが自動的に作成されます。
  • 手動: kameleoonSimulationFFData クッキーを手動で設定します。
シミュレートされた バリエーションと 強制 バリエーションを区別することが重要です:
  • シミュレートされたバリエーション: 全体的な フィーチャーフラグ の結果に影響します。
  • 強制バリエーション: 個別の実験に固有です。
⚙️ 手動セットアップkameleoonSimulationFFData クッキーが次の形式に従っていることを確認してください:
  • kameleoonSimulationFFData={"featureKey":{"expId":10,"varId":20}}: 指定された featureKey に対して、実験 expIdvarId のバリエーションをシミュレートします。
  • kameleoonSimulationFFData={"featureKey":{"expId":0}}: 指定された featureKey に対するデフォルトのバリエーション (本番の Then, for everyone else in Production, serve セクションで定義) をシミュレートします。
⚠️ 正しく機能させるために、クッキー値は encodeURIComponent などの方法を使用して URI コンポーネントとしてエンコードする必要があります。
引数
戻り値

addData()

addData() メソッドは、現在の訪問者をターゲットにするかどうかを他のメソッドが決定する際に使用できるように、ターゲティングデータ をストレージに追加します。 addData() メソッドは値を返さず、それ自体では Kameleoon バックエンドサーバーとやり取りしません。代わりに、宣言されたすべてのデータは、flush() メソッドを使用した将来の送信のために保存されます。このアプローチにより、データは通常、flush() によってトリガーされる単一のサーバー呼び出しにグループ化されるため、サーバー呼び出しの数が減少します。 trackConversion() メソッドも、flush() と同様に、以前に関連付けられたデータを送信します。実験ルールがトリガーされた場合の getVariation()getVariations() メソッドにも同じことが言えます。
ほとんどのデータタイプでは、各訪問者は関連付けられたデータのインスタンスを 1 つしか持つことができません。ただし、CustomData は例外です。訪問者は、インデックスごとに 1 つの関連付けられた CustomData インスタンスを持つことができます。
引数
例外

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 訪問データを取得するための非同期メソッドです。このメソッドは、ターゲティングの決定を行う際に他のメソッドが使用できるように、データをストレージに追加します。 このメソッドを使用して取得したデータは、次のような場合に重要な役割を果たします:
  • 他のデバイスから収集されたデータを使用する。
  • 過去の訪問中に訪問されたページなど、ユーザーの履歴にアクセスする。
  • データレイヤー変数やフロントエンドでコンバージョンするゴールなど、クライアントサイドでのみアクセス可能なデータを使用する。
ユースケースをより良く理解するには、この記事 を読んでください。
デフォルトでは、getRemoteVisitorData()scope=Visitor を持つ最新の保存されたカスタムデータを自動的に取得し、addData() メソッドを呼び出すことなく訪問者にアタッチします。これは、複数のデバイス間でカスタムデータを同期する ために特に役立ちます。
パラメータ isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は特殊な状況で役立ちます。たとえば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッション統合を通じてその訪問者にリンクされている内部 ID を使用できる場合などです。
引数
戻り値
getRemoteVisitorData() でのパラメータの使用
getRemoteVisitorData() メソッドは、訪問者に関するデータを取得するときにさまざまなパラメータを定義できる柔軟性を提供します。ゴール、実験、バリエーションに基づいてターゲティングする場合でも、同じアプローチがすべてのデータタイプに適用されます。 たとえば、ゴール「Order transaction」を完了した訪問者に関するデータを取得したいとします。getVisitorData() メソッド内でパラメータを指定して、ターゲティングを絞り込めます。たとえば、最後の 5 回の訪問でゴールでコンバージョンしたユーザーのみをターゲットにしたい場合は、previousVisitAmount パラメータを 5 に、conversions を true に設定できます。 この例で示される柔軟性は、ゴールデータに限定されません。getRemoteVisitorData() メソッド内でパラメータを使用して、さまざまな訪問者行動に関するデータを取得できます。
利用可能な kameleoon.types.RemoteVisitorDataFilter オプションのリストは以下のとおりです:

getVisitorWarehouseAudience()

このメソッドは、指定された visitorCodewarehouseKey を使用して、データウェアハウス内で訪問者に関連付けられたすべてのオーディエンスデータを取得します。warehouseKey は通常、内部ユーザー ID です。customDataIndex パラメータは、Kameleoon が訪問者をターゲットにするために使用する Kameleoon カスタムデータに対応します。詳細については、ウェアハウスターゲティングドキュメント を参照してください。メソッドは結果を CustomData オブジェクトとして返される future に渡し、データが訪問者に追加され、ターゲティングの目的で利用可能であることを確認します。
引数
戻り値
スローされる例外

setLegalConsent()

このメソッドを使用して、訪問者が個人データの使用に対して法的同意を与えたかどうかを指定する必要があります。legalConsent パラメータを false に設定すると、トラッキングリクエストに含めることができるデータタイプが制限されます。このメソッドは、訪問者データを責任を持って管理しながら、法律および規制要件を遵守するのに役立ちます。個人データに関する詳細は、同意管理ポリシー をご覧ください。
引数
スローされる例外
同意取り消しの動作
legalConsent=false を指定して setLegalConsent() を呼び出した場合、SDK は kameleoonVisitorCode クッキーを削除しません。代わりに、クッキーの有効期限を延長しなくなるため、クッキーは自然に期限が切れるまで持続します。 コンプライアンス要件としてオプトアウト時にクッキーファイルを直ちに削除することが必要な場合は、フレームワークのネイティブクッキー管理メソッドを使用して手動で削除する必要があります。SDK は自動的にファイルを削除しません。

ゴールとサードパーティ分析

trackConversion()

  • 📨 Kameleoon にトラッキングデータを送信します
このメソッドを使用して、特定の ゴール とユーザーのコンバージョンをトラッキングします。このメソッドには visitorCodegoalId が必要です。さらに、このメソッドはオプションの revenuenegativemetadata 引数も受け取ります。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> タグに直接挿入できます。
この例では、123456234567 は実験 ID、78908901 はバリエーション ID です。あなたの実装では、SDK が返されたトラッキングコードでこれらの値を生成します。
引数
戻り値

イベント

setEventHandler()

このメソッドを使用して、SDK イベントのハンドラーを登録します。選択したイベントが発生すると、SDK はハンドラーを呼び出します。同じイベントタイプに対して新しいハンドラーを登録すると、以前のハンドラーが置き換えられます。handler として null を渡すと、選択したイベントタイプの現在のハンドラーが削除されます。
DataFileUpdateEvent には、SDK データファイル更新に関する情報が含まれます。
引数

データタイプ

このセクションでは、Kameleoon が com.kameleoon.Data でサポートするデータタイプをリストします。いくつかの標準データタイプと、カスタムデータタイプを定義できる CustomData タイプを提供します。

Browser

ここに保存された Browser データセットは、関連付けられた任意の値で実験とパーソナライゼーションのレポートをフィルタリングするために使用できます。

Conversion

ここに保存された Conversion データセットは、関連付けられた任意のゴールで実験とパーソナライゼーションのレポートをフィルタリングするために使用できます。
  • 各訪問者は複数の Conversion オブジェクトを持つことができます。
  • goalId は Kameleoon アプリで見つけることができます。
Cookie には、訪問者のデバイスに保存されたクッキーに関する情報が含まれます。
各訪問者は 1 つの Cookie しか持てません。2 番目の Cookie を追加すると、最初のものが上書きされます。

Geolocation

Geolocation には、訪問者の位置情報の詳細が含まれます。
  • 各訪問者は 1 つの Geolocation しか持てません。2 番目の 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 には、訪問者のデバイスのオペレーティングシステムに関する情報が含まれます。
各訪問者は 1 つの OperatingSystem しか持てません。2 番目の OperatingSystem を追加すると、最初のものが上書きされます。

ApplicationVersion

ApplicationVersion は、アプリケーションのセマンティックバージョン番号を表します。
訪問者 は 1 つの ApplicationVersion しか持てません。2 番目のインスタンスを追加すると、最初のものが上書きされます。

戻り値の型

DataFile

DataFile には SDK 構成の詳細が含まれます。 クライアントが必要とする場合、追加情報で拡張できます。詳細が必要な場合は、カスタマーサクセスマネージャーにお問い合わせください。

FeatureFlag

FeatureFlag は、フィーチャーフラグ自体を定義するプロパティのセット (たとえば、VariationsRules、環境ステータスなど) を表します。 クライアントが必要とする場合、追加情報で拡張できます。詳細が必要な場合は、カスタマーサクセスマネージャーにお問い合わせください。

Rule

Rule は、ルール自体を定義するプロパティのセット (たとえば、Variations) を表します。 クライアントが必要とする場合、追加情報で拡張できます。詳細が必要な場合は、カスタマーサクセスマネージャーにお問い合わせください。

Variation

Variation には、訪問者に割り当てられたバリエーション (または、特定の割り当てが存在しない場合はデフォルトのバリエーション) に関する情報が含まれます。
  • Variation オブジェクトは、割り当てられたバリエーションとその関連実験に関する詳細を提供し、Variable オブジェクトは、バリエーション内の各変数に関する具体的な詳細を含みます。
  • id または experimentIdnull の場合 (デフォルトバリエーションを示します) を処理することをコードで確認してください。
  • バリエーションに関連付けられた変数がない場合、variables マップは空になる可能性があります。

Variable

Variable には、割り当てられたバリエーションに関連付けられた変数に関する情報が含まれます。

非推奨メソッド

これらのメソッドは非推奨であり、SDK バージョン 5.0.0 で削除されます。

getFeatureVariationKey()

  • 📨 Kameleoon にトラッキングデータを送信します
代わりに getVariation() を使用してください。
指定したユーザーとフィーチャーのフィーチャーバリエーションキーを取得するには、このメソッドを呼び出します。このメソッドは、ユーザーとフィーチャーのバリエーションキーを取得するために、visitorCodefeatureKey を必須引数として受け取ります。 ユーザーがこのフィーチャーフラグに関連付けられていない場合、SDK は (フィーチャーフラグルールに従って) ランダムに割り当てられたバリエーションキーを返します。指定された visitorCode を持つユーザーがすでにこのフィーチャーフラグに登録されている場合、SDK は以前のバリエーションキー値を検出します。ユーザーがどのルールにも一致しない場合、Kameleoon アプリでカスタマイズできるデフォルト値が返されます。 潜在的な例外をキャッチして処理するようにしてください。 visitorCode を指定すると、flush() メソッドはこれを一意の訪問者識別子として使用します。これは クロスデバイス実験 に役立ちます。visitorCode を指定して isUniqueIdentifier パラメータを true に設定すると、SDK はフラッシュされたデータを指定された識別子に関連付けられた訪問者にリンクします。
パラメータ isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は特殊な状況で役立ちます。たとえば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッション統合を通じてその訪問者にリンクされている内部 ID を使用できる場合などです。
引数
戻り値
スローされる例外

getActiveFeatures()

代わりに getVariations() を使用してください。
このメソッドは、単一の visitorCode パラメータを受け取ります。結果には、指定された訪問者のアクティブなフィーチャーのみが含まれます。
引数
戻り値
スローされる例外

getActiveFeatureListForVisitorCode()

  • 代わりに getVariations() を使用してください。
  • このメソッドは以前 obtainFeatureListForVisitorCode と呼ばれており、SDK バージョン 4.0.0 で削除されました。
このメソッドは、単一の visitorCode パラメータを受け取ります。指定された訪問者のアクティブなフィーチャーフラグのみを返します。
引数
戻り値

getFeatureVariable()

  • 📨 Kameleoon にトラッキングデータを送信します
代わりに getVariation() を使用してください。
ユーザーに関連付けられたフィーチャーバリエーション値を取得するには、このメソッドを呼び出します。このメソッドは、指定したユーザーのバリエーションキーの変数を取得するために、visitorCodefeatureKeyvariableKey を必須引数として受け取ります。 ユーザーがこのフィーチャーフラグに関連付けられていない場合、SDK は、フィーチャーフラグルールに従ってバリエーションキーのランダムに割り当てられた変数値を返します。指定された visitorCode を持つユーザーがすでにこのフィーチャーフラグに登録されている場合、SDK は以前に関連付けられたバリエーションの変数値を返します。ユーザーがどのルールにも一致しない場合、デフォルト変数が返されます。 潜在的な例外をキャッチして処理するようにしてください。 visitorCode を指定すると、getFeatureVariable() メソッドはコードを一意の訪問者識別子として使用します。これは クロスデバイス実験 に役立ちます。visitorCode を指定して isUniqueIdentifier パラメータを true に設定すると、SDK はフラッシュされたデータを指定された識別子に関連付けられた訪問者にリンクします。
パラメータ isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は特殊な状況で役立ちます。たとえば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッション統合を通じてその訪問者にリンクされている内部 ID を使用できる場合などです。
引数
戻り値
スローされる例外

getFeatureVariables()

  • 📨 Kameleoon にトラッキングデータを送信します
代わりに getVariation() を使用してください。
このメソッドは、訪問者が指定されたフィーチャーフラグで割り当てられたバリエーションに従って割り当てられた変数キーとその値を含むマップを取得します。フィーチャー変数は Kameleoon アプリで変更できます。 ユーザーがこのフィーチャーフラグに関連付けられていない場合、SDK はフィーチャーフラグルールに従ってバリエーション内のランダムに割り当てられた変数値のセットを返します。指定された visitorCode を持つユーザーがすでにこのフィーチャーフラグに登録されている場合、SDK は以前に使用されたバリエーションの変数値を返します。ユーザーがどのルールにも一致しない場合、デフォルト変数が返されます。 潜在的な例外をキャッチして処理するようにしてください。
引数
戻り値
スローされる例外

getFeatureVariationVariables()

  • 代わりに getVariation() を使用してください。
  • このメソッドは以前 getFeatureAllVariables と呼ばれており、SDK バージョン 4.0.0 で削除されました。
フィーチャーのすべてのフィーチャー変数を取得するには、このメソッドを呼び出します。フィーチャー変数は Kameleoon アプリで変更できます。 このメソッドは 2 つの入力パラメータを受け取ります: featureKeyvariationKey。Kameleoon アプリで定義された Map<String, Object> タイプのデータを返します。要求したフィーチャーが SDK の内部構成で見つからない場合、例外 (KameleoonException.FeatureNotFound) をスローします。
引数
戻り値
スローされる例外