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

開発者ガイド

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

はじめに

スターターキット

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

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

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

追加の構成

認証情報を提供し、SDK の動作をカスタマイズするために、.properties 構成ファイルを作成します。サンプル構成ファイル をダウンロードすることもできます。 このファイルはデフォルトのパス /etc/kameleoon/client-java.conf に保存することを推奨しますが、kameleoon-client-java.properties としてクラスパス内のどこにでも保存できます。 次の表は、設定可能なプロパティを示しています:
キー説明デフォルト値
clientId / client_id (必須)Kameleoon サービスへの認証に必要です。client_id を確認するには、API 認証情報 のドキュメントを参照してください。
clientSecret / client_secret (必須)Kameleoon サービスへの認証に必要です。client_secret を確認するには、API 認証情報 のドキュメントを参照してください。
sessionDuration / session_duration_minute (オプション)Kameleoon が訪問者とその関連データをメモリ (RAM) に保存する所定の時間間隔を指定します。セッション時間を長くすると、訪問者データを保存するために割り当てる必要のある RAM の量が増加することに注意してください。30
refreshInterval / refresh_interval_minute (オプション)SDK がアクティブな実験とフィーチャーフラグの構成を取得するリフレッシュ間隔を分単位で指定します。この値は、フィーチャーフラグの有効化/無効化や実験の開始などの変更を本番サーバーに反映するためにかかる最大時間を決定します。さらに、ストリーミングモード も提供しています。これは server-sent events (SSE) を使用して、新しい構成を自動的に SDK にプッシュし、遅延なしでリアルタイムに新しい構成を適用します。60
defaultTimeout / default_timeout_millisecond (オプション)SDK からのネットワークリクエストのタイムアウトをミリ秒単位で指定します。安定した接続がない場合は、値を 30 秒以上に設定してください。一部のメソッドには、その特定のメソッドのデフォルトタイムアウトを上書きするために使用できる追加のパラメータがあります。メソッドのタイムアウトを明示的に指定しない場合、SDK はこのデフォルト値を使用します。10000 ミリ秒
trackingInterval / tracking_interval_millisecond (オプション)トラッキングリクエストの間隔をミリ秒単位で指定します。Kameleoon がフィーチャーフラグについて評価した、またはデータがフラッシュされたすべての訪問者がこのトラッキングリクエストに含まれ、SDK は間隔ごとに 1 回実行されます。最小値は 1000 ms (デフォルトでもあります)、最大値は 5000 ms です。1000 ミリ秒
environment / environment (オプション)フィーチャーフラグの構成を使用する環境です。値は productionstagingdevelopment のいずれかです。詳細については 環境の管理 の記事を参照してください。production
topLevelDomain / top_level_domain (ハイブリッドモードで必須)あなたの Web サイトの現在のトップレベルドメイン。形式: example.com を使用します。https://www、その他のサブドメインは含めないでください。Kameleoon はこの情報を使用して、トップレベルドメインに対応するクッキーを設定します。null
proxyHost / proxy_host (オプション)SDK によるすべての送信サーバー呼び出しのプロキシホストを設定します。null
networkDomain / network_domain (オプション)SDK が送信リクエストに使用するカスタムドメインで、主にプロキシ用途で使用されます。有効なドメイン (例: example.com または sub.example.com) である必要があります。無効な形式の場合、Kameleoon のデフォルト値が使用されます。null

Kameleoon クライアントの初期化

アプリケーションに SDK をインストールし、認証情報と SDK の動作 (/etc/kameleoon/client-java.conf 内) を構成したら、次のステップはアプリケーションコードで Kameleoon クライアントを作成することです。例:
import com.kameleoon.KameleoonClientFactory;

String siteCode = "a8st4f59bj";

try {
    KameleoonClient kameleoonClient = KameleoonClientFactory.create(siteCode, "custom/file/path/client-java.properties");
} catch (KameleoonException.SiteCodeIsEmpty e) {
    // indicates that provided site code is empty
} catch (KameleoonException.ConfigCredentialsInvalid exception) {
    // indicates that provided clientId / clientSecret are not valid
}

try {
    KameleoonClientConfig config = new KameleoonClientConfig.Builder()
    .clientId("<clientId>") // mandatory
    .clientSecret("<clientSecret>") // mandatory
    .refreshInterval(60) // in minutes, optional (60 minutes by default)
    .sessionDuration(30) // in minutes, optional (30 minutes by default)
    .defaultTimeout(10_000) // in milliseconds, optional (10000 ms by default)
    .trackingInterval(1000) // in milliseconds, optional (1000 ms by default)
    .topLevelDomain("example.com") // mandatory if you use hybrid mode (engine or web experiments)
    .environment("development") // optional
    .proxyHost(new HttpHost("192.168.0.25", 8080, "http")) // optional
    .networkDomain("example.com") // optional
    .build();
    KameleoonClientFactory.create(siteCode, config);
} catch (KameleoonException.SiteCodeIsEmpty e) {
    // indicates that provided site code is empty
} catch (KameleoonException.ConfigCredentialsInvalid exception) {
    // indicates that provided clientId / clientSecret are not valid
}
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 に提供します:
kameleoonClient.addData(visitorCode, new CustomData(index, "newVisitorCode"));
  • カスタムキーの提供: 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
// In this example, a Custom data with index `90` was set to "Visitor" scope in Kameleoon.
final int VISITOR_SCOPE_CUSTOM_DATA_INDEX = 90;

kameleoonClient.addData(visitorCode, new CustomData(VISITOR_SCOPE_CUSTOM_DATA_INDEX, "your data"));
kameleoonClient.flush(visitorCode);
Device B
// Before working with the data, call the `getRemoteVisitorData` method.
kameleoonClient.getRemoteVisitorData(visitorCode).get();

// After calling the method, the SDK on Device B will have access to CustomData of Visitor scope defined on Device A.
// So, "your data" will be available for targeting and tracking the visitor.

セッション統合のためのカスタムデータの使用

クロスデバイス実験 では、訪問者の履歴を各デバイス間で統合できます (履歴の照合)。履歴の照合により、異なる訪問者セッションを 1 つに統合できます。訪問履歴を統合するには、CustomData を使用して訪問者の一意の識別子を提供します。詳細については、専用ドキュメント を参照してください。 クロスデバイス照合が有効になった後、パラメータ userId を指定して getRemoteVisitorData() を呼び出すと、特定のユーザーに関する既知のすべてのデータが取得されます。 同じ識別子を持つセッションには、実験において常に同じバリエーションが表示されます。実験の結果ページの訪問者ビューでは、これらのセッションは単一の訪問者として表示されます。 SDK の構成により、関連付けられたセッションは常に実験の同じバリエーションを見ることが保証されます。ただし、クロスデバイスバリエーション割り当てにはいくつかの制限があります。これらの制限は こちら に概説されています。 Kameleoon プラットフォームでカスタムデータをセットアップするには、クロスデバイス履歴照合の有効化 ガイドに従ってください。 その後、通常どおりに SDK を使用できます。セッション統合のコンテキストで役立つ可能性のあるメソッドは以下のとおりです:
  • getRemoteVisitorData()UniqueIdentifier(true) を追加 - すべての関連付けられた訪問者のデータを取得します。
  • trackConversion() または flush()UniqueIdentifier(true) データを追加 - 別の訪問者に関連付けられた特定の訪問者の一部のデータをトラッキングします。
識別子として使用するカスタムデータは Visitor スコープ に設定する必要があるため、各デバイス上で getRemoteVisitorData() メソッドを使用して識別子を取得するには、クロスデバイスカスタムデータ同期 を使用する必要があります。
セッション統合のためのカスタムデータの使用方法の例を以下に示します。
// In this example, 91 represents the Custom Data's index configured as a unique identifier in Kameleoon.
final int MAPPING_INDEX = 91;
final String FEATURE_KEY = "ff123";

// 1. Before the visitor is authenticated

// Retrieve the variation for an unauthenticated visitor.
// Assume anonymousVisitorCode is the randomly generated ID for that visitor.
Variation anonymousVariation = kameleoonClient.getVariation(anonymousVisitorCode, FEATURE_KEY);

// 2. After the visitor is authenticated

// Assume `userId` is the visitor code of the authenticated visitor.
kameleoonClient.addData(anonymousVisitorCode, new CustomData(MAPPING_INDEX, userId));
kameleoonClient.flush(true, anonymousVisitorCode);

// Indicate that `userId` is a unique identifier.
kameleoonClient.addData(userId, new UniqueIdentifier(true));

// 3. After the visitor was authorized

// Retrieve the variation for the `userId`, which will match the anonymous visitor code's variation.
Variation userVariation = kameleoonClient.getVariation(userId, FEATURE_KEY);
boolean isSameVariation = userVariation.getKey().equals(anonymousVariation.getKey()); // true

// `userId` and `anonymousVisitorCode` are now linked and can be tracked as a single visitor.
kameleoonClient.trackConversion(userId, 123, 10.0);

// Additionally, the linked visitors share all fetched previously tracked remote data.
kameleoonClient.getRemoteVisitorData(userId).get();
この例では、アプリケーションにログインページがあります。ログイン時にユーザー ID が不明なため、getVisitorCode() メソッドによって生成された匿名訪問者識別子が使用されます。ユーザーがログインした後、匿名訪問者がユーザー ID と関連付けられ、訪問者の一意の識別子として使用されます。

ロギング

SDK は、内部のさまざまなプロセスや問題を反映するログを生成します。

ログレベル

SDK は、ログレベルによるログの制限の構成をサポートしています。
// The `NONE` log level does not allow logging.
com.kameleoon.logging.KameleoonLogger.setLogLevel(com.kameleoon.logging.LogLevel.NONE);

// The `ERROR` log level only allows logging issues that may affect the SDK's primary behaviour.
com.kameleoon.logging.KameleoonLogger.setLogLevel(com.kameleoon.logging.LogLevel.ERROR);

// The `WARNING` log level allows logging issues which may require an attention.
// It extends the `ERROR` log level.
// The `WARNING` log level is a default log level.
com.kameleoon.logging.KameleoonLogger.setLogLevel(com.kameleoon.logging.LogLevel.WARNING);

// The `INFO` log level allows logging general information on the SDK's internal processes.
// It extends the `WARNING` log level.
com.kameleoon.logging.KameleoonLogger.setLogLevel(com.kameleoon.logging.LogLevel.INFO);

// The `DEBUG` level logs additional details about the SDK’s internal processes and extends the `INFO` level
// with more granular. diagnostic output.
// This information is not intended for end-user interpretation but can be sent to our support team
// to assist with internal troubleshooting.
com.kameleoon.logging.KameleoonLogger.setLogLevel(com.kameleoon.logging.LogLevel.DEBUG);

ログのカスタムハンドリング

SDK は、デフォルトでログをコンソール出力に書き込みます。この動作は上書きできます。
ログレベルによるロギング制限は、ログハンドリングロジックとは別に実行されます。
public class CustomLogger implements com.kameleoon.logging.Logger {
    private final java.util.logging.Logger inner;

    public CustomLogger(java.util.logging.Logger inner) {
        this.inner = inner;
    }

    // `log` method accepts logs from the SDK
    @Override
    public void log(com.kameleoon.logging.LogLevel level, String message) {
        // Custom log handling logic here. For example:
        switch (level) {
            case ERROR:
                inner.log(java.util.logging.Level.SEVERE, message);
                break;
            case WARNING:
                inner.log(java.util.logging.Level.WARNING, message);
                break;
            case INFO:
                inner.log(java.util.logging.Level.INFO, message);
                break;
            case DEBUG:
                inner.log(java.util.logging.Level.FINE, message);
                break;
        }
    }
}

// Log level filtering is applied separately from log handling logic.
// The custom logger will only accept logs that meet or exceed the specified log level.
// Ensure the log level is set correctly.
com.kameleoon.logging.KameleoonLogger.setLogLevel(com.kameleoon.logging.LogLevel.DEBUG); // Optional; defaults to `LogLevel.WARNING`.
com.kameleoon.logging.KameleoonLogger.setLogger(new CustomLogger());

リファレンス

これは Java SDK の完全なリファレンスドキュメントです。

初期化

create()

SDK を使用するには、初期化を完了する必要があります。アプリケーションは、KameleoonClient クラスのオブジェクトを通じて SDK とのすべてのやり取りを行います。KameleoonClientFactory の静的メソッド create() を使用してこのオブジェクトを作成します。
import com.kameleoon.KameleoonClientFactory;

String siteCode = "a8st4f59bj";

try {
    KameleoonClient kameleoonClient = KameleoonClientFactory.create(siteCode, "custom/file/path/client-java.properties");
} catch (KameleoonException.SiteCodeIsEmpty e) {
    // indicates that provided site code is empty
} catch (KameleoonException.ConfigCredentialsInvalid exception) {
    // indicates that provided clientId / clientSecret are not valid
}

try {
    KameleoonClientConfig config = new KameleoonClientConfig.Builder()
        .clientId("<clientId>") // mandatory
        .clientSecret("<clientSecret>") // mandatory
        .refreshInterval(60) // in minutes, optional (60 minutes by default)
        .sessionDuration(30) // in minutes, optional (30 minutes by default)
        .defaultTimeout(10_000) // in milliseconds, optional (10000 ms by default)
        .trackingInterval(1000) // in milliseconds, optional (1000 ms by default)
        .topLevelDomain("example.com") // mandatory if you use hybrid mode (engine or web experiments)
        .environment("development") // optional
        .proxyHost(new HttpHost("192.168.0.25", 8080, "http")) // optional
        .networkDomain("example.com") // optional
        .build();
    KameleoonClientFactory.create(siteCode, config);
} catch (KameleoonException.SiteCodeIsEmpty e) {
    // indicates that provided site code is empty
} catch (KameleoonException.ConfigCredentialsInvalid exception) {
    // indicates that provided clientId / clientSecret are not valid
}
引数
名前説明デフォルト値
siteCode (必須)StringSDK で使用している Kameleoon プロジェクトの 一意のキー です。
configurationPath (オプション)StringSDK 構成ファイルへのパス。/etc/kameleoon/client-java.conf
kameleoonConfig (オプション)KameleoonClientConfig構成ファイルを使用する代わりに渡すことができる構成 SDK オブジェクト。null
戻り値
説明
KameleoonClientアプリケーションが実験とフィーチャーフラグを管理するために使用できる KameleoonClient クラスのインスタンス。
スローされる例外
説明
KameleoonException.ConfigCredentialsInvalid要求された認証情報が提供されなかった (構成ファイル内またはメソッドへの引数として) ことを示す例外。
KameleoonException.SiteCodeIsEmpty指定されたサイトコードが無効な値である空の文字列であることを示す例外。

waitInit()

waitInit() は、KameleoonClient の初期化を待機します。このメソッドを使用すると、他の操作に進む前に SDK がクライアントを正常に初期化したかどうかを確認できます。
waitInit() メソッドが失敗した場合、初期化プロセスは中断されることなく続行されます。waitInit() メソッドへの後続の呼び出しは、KameleoonClient の現在の状態を反映した結果を返します。したがって、SDK のステータスをチェックするために waitInit() メソッドを複数回呼び出すことができます。
// Synchronized approach
try {
    kameleoonClient.waitInit().get();
} catch (InterruptedException | ExecutionException exception) {
    // Indicates that the client could not be initialized due to the thrown exception.
}

// Asynchronous approach
kameleeoonClient.waitInit().handle((res, ex) -> {
    if (ex != null) {
        // Indicates that the client could not be initialized due to the thrown exception.
    }
    return res;
});
戻り値
説明
CompletableFuture<Void>クライアントが正常に初期化されたときにタスクが完了します。
スローされる例外
説明
SDKNotReadyクライアントが正しく初期化されておらず、まだ使用できないことを示す例外。

フィーチャーフラグとバリエーション

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 を使用できる場合などです。
String visitorCode = kameleoonClient.getVisitorCode(httpServletRequest, httpServletResponse);
String featureKey = "new_checkout";
Boolean hasNewCheckout = false;

try {
  hasNewCheckout = kameleoonClient.isFeatureActive(visitorCode, featureKey);
  // disabling tracking
  hasNewCheckout = kameleoonClient.isFeatureActive(false, visitorCode, featureKey);
} catch (KameleoonException.FeatureNotFound e) {
  // Feature toggle not yet activated on Kameleoon's side - we consider the feature inactive.
  hasNewCheckout = false;
} catch (Exception e) {
  // This is a generic exception handler that handles all exceptions.
  System.out.println("Exception occurred");
}
if (hasNewCheckout)
{
  // Implement new checkout code here
}
引数
名前説明
trackbooleanフィーチャー評価のトラッキングを有効または無効にするためのオプションのパラメータ (デフォルトは true)。
visitorCodeStringユーザーの一意の識別子。このフィールドは必須です。
featureKeyStringユーザーのステータスをチェックしたいフィーチャーのキー。このフィールドは必須です。
isUniqueIdentifier (非推奨)booleanvisitorCode が一意の識別子であるかどうかを指定するためのオプションのパラメータ。指定されていない場合、デフォルト値は false です。このフィールドはオプションです。
戻り値
説明
boolean指定された visitorCode に対して登録されているフィーチャーの値。
スローされる例外
説明
KameleoonException.FeatureNotFound要求されたフィーチャー ID が SDK の内部構成で見つからなかったことを示す例外。この例外は通常、フィーチャーフラグが Kameleoon 側でまだ有効化されていない (ただし、フィーチャーを実装するコードはアプリケーションにすでにデプロイされている) ことを意味します。
KameleoonException.VisitorCodeInvalid提供された訪問者コードが有効ではないことを示す例外。空であるか、255 文字を超えています。

getVariation()

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

try {
  variation = kameleoonClient.getVariation(visitorCode, featureKey);
  // disabling tracking
  variation = kameleoonClient.getVariation(visitorCode, featureKey, false);
} catch (KameleoonException.FeatureNotFound e) {
  // The error has occurred; the feature flag isn't found in the current configuration.
} catch (KameleoonException.FeatureEnvironmentDisabled e) {
  // The feature flag is disabled for the environment.
} catch (KameleoonException.VisitorCodeInvalid e) {
  // The visitor code you passed to the method is invalid and can't be accepted by SDK.
} catch (KameleoonException ex) {
  // Handle the common Kameleoon Exception
}

// Fetch a variable value for the assigned variation
String title = (String) variation.getVariables().get("title").getValue();

switch (variation.getKey()) {
  case 'on':
    // Main variation key is selected for visitorCode
    break;
  case 'alternative_variation':
    // Alternative variation key
    break;
  default:
    // Default variation key
    break;
}
引数
名前説明デフォルト
visitorCode (必須)String訪問者の一意の識別子。
featureKey (必須)String訪問者に公開したいフィーチャーのキー。
track (オプション)booleanフィーチャー評価のトラッキングを有効または無効にするためのオプションのパラメータ。true
戻り値
説明
Variation特定のフィーチャーフラグに対して、特定の訪問者に割り当てられた Variation
スローされる例外
説明
VisitorCodeInvalid提供された訪問者コードが有効ではないことを示す例外。空であるか、255 文字を超えています。
FeatureNotFound要求されたフィーチャーキーが SDK の内部構成で見つからなかったことを示す例外。通常、これはフィーチャーフラグが Kameleoon アプリで有効化されていない (ただし、フィーチャーを実装するコードはアプリケーションにすでにデプロイされている) ことを意味します。
FeatureEnvironmentDisabledフィーチャーフラグが訪問者の現在の環境 (本番、ステージング、開発など) で無効になっていることを示す例外。

getVariations()

  • 📨 Kameleoon にトラッキングデータを送信します (track パラメータに依存)
すべてのフィーチャーフラグにわたって、特定の訪問者に割り当てられた Variation オブジェクトのマップを取得します。 このメソッドは、利用可能なすべてのフィーチャーフラグを反復処理し、指定された訪問者に関連付けられた各フラグの割り当てられた Variation を返します。visitorCode を必須引数として受け取り、onlyActivetrack はオプションです。
  • onlyActivetrue に設定されている場合、メソッド getVariations() は、ユーザーが off バリエーションでバケットされていないことを条件として、フィーチャーフラグのバリエーションを返します。
  • track パラメータは、メソッドがバリエーションの割り当てをトラッキングするかどうかを制御します。デフォルトでは true に設定されています。false に設定されている場合、トラッキングは無効になります。
返されるマップは、フィーチャーフラグキーをキー、対応する Variation を値として構成されます。フィーチャーフラグに割り当てられたバリエーションがない場合、そのフラグのデフォルトの Variation を返します。 潜在的な例外を管理するために、適切なエラー処理を実装する必要があります。
デフォルトのバリエーションとは、訪問者がフィーチャーフラグの事前定義された配信ルールのいずれにも一致しないときに、訪問者に割り当てられるバリエーションを指します。言い換えれば、特定のルールでターゲットにされていないすべてのユーザーに適用されるフォールバックのバリエーションです。これは、管理インターフェイスの「それ以外のすべての人については…」セクションのバリエーションとして表されます。
try {
    Map<String, Variation> variations = kameleoonClient.getVariations(visitorCode);
    // only active variations
    Map<String, Variation> variations = kameleoonClient.getVariations(visitorCode, true);
    // disable tracking
    Map<String, Variation> variations = kameleoonClient.getVariations(visitorCode, true, false);
} catch (VisitorCodeInvalid e) {
    //  Handle exception
}
引数
名前説明デフォルト
visitorCode (必須)String訪問者の一意の識別子。
onlyActive (オプション)booleanアクティブな (true) またはすべての (false) フィーチャーフラグのバリエーションを返すかどうかを示すオプションのパラメータ。false
track (オプション)booleanフィーチャー評価のトラッキングを有効または無効にするためのオプションのパラメータ。true
戻り値
説明
Map<String, Variation>対応するフィーチャーのキーを使用して、フィーチャーフラグの割り当てられた Variation オブジェクトを含むマップ。
スローされる例外
説明
VisitorCodeInvalid提供された訪問者コードが有効ではないことを示す例外。空であるか、255 文字を超えています。

setForcedVariation()

このメソッドを使用すると、標準的な評価プロセスをバイパスして、特定の Variation をユーザーにプログラム的に割り当てることができます。これは、通常の評価ロジックが不要、またはスキップする必要がある制御された実験で特に有用です。デバッグやカスタムテストなどのシナリオでも役立ちます。 強制 バリエーションが設定されると、Kameleoon のリアルタイム評価ロジックが上書きされます。セグメンテーション、ターゲティング条件、アルゴリズム的計算などのプロセスはスキップされます。実験中にセグメンテーションとターゲティング条件を保持するには、代わりに forceTargeting=false を設定します。
シミュレートされた バリエーションは、常に実行順序で優先されます。シミュレートされた バリエーション計算がトリガーされると、それが最初に完全に処理され完了します。
強制バリエーションは、評価されたバリエーションと同じように扱われます。これは分析でトラッキングされ、標準的な評価されたバリエーションと同様にユーザーコンテキストに保存されるため、レポート作成における一貫性が保証されます。 特定の条件 (たとえば、無効なパラメータ、ユーザーコンテキスト、または内部の問題) の下で、メソッドは例外をスローする可能性があります。アプリケーションが安定し、回復力を保つために、適切な例外処理が不可欠です。
強制 バリエーションと シミュレートされた バリエーションを区別することが重要です:
  • 強制バリエーション: 個別の実験に固有です。
  • シミュレートされたバリエーション: 全体的な フィーチャーフラグ の結果に影響します。
try {
    // Forcing the variation "on" for the feature flag "featureKey1" for the visitor
    final int experimentId = 9516;
    kameleoonClient.setForcedVariation(visitorCode, experimentId, "on");

    // Resetting the forced variation for the feature flag "featureKey1" for the visitor
    kameleoonClient.setForcedVariation(visitorCode, experimentId, null);
} catch (KameleoonException ex) {
    // Handle the common Kameleoon Exception
}
引数
名前説明デフォルト
visitorCode (必須)String訪問者の一意の識別子。
experimentId (必須)int評価プロセス中にターゲットおよび選択される Experiment Id
variationKey (必須)String実験の返される値として強制すべき Variation に対応する Variation Key。値が null の場合、強制バリエーションはリセットされます。
forceTargeting (オプション)boolean実験のターゲティングを強制してスキップするか (true)、標準の評価プロセスのように適用するか (false) を示します。true
スローされる例外
説明
VisitorCodeInvalid提供された訪問者コードが有効ではないことを示す例外。空であるか、255 文字を超えています。
FeatureExperimentNotFound要求された実験 ID が SDK の内部構成で見つからなかったことを示す例外。通常はこれは正常で、ルールに対応する実験が Kameleoon 側でまだ有効化されていないことを意味します。
FeatureVariationNotFound要求されたバリエーションキー (ID) が SDK の内部構成で見つからなかったことを示す例外。通常はこれは正常で、バリエーションに対応する実験が Kameleoon 側でまだ有効化されていないことを意味します。
ほとんどの場合、例で示されているように、基本的なエラー KameleoonException のみを処理する必要があります。ただし、異なるタイプのエラーに対する応答が必要な場合は、特定の要件に基づいて個別に処理してください。さらに、信頼性を向上させるために、Exception を含めることで一般的な言語エラーを処理できます。

evaluateAudiences()

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

getFeatureList()

このメソッドは以前 obtainFeatureList と呼ばれており、SDK バージョン 4.0.0 で削除されました。
現在 SDK で利用可能なフィーチャーフラグキーのリストを返します。
List<String> allFeatureFlagKey = kameleoonClient.getFeatureList();
戻り値
説明
List<String>フィーチャーフラグキーのリスト

getDataFile()

すべてのフィーチャーフラグを評価するには、getVariations() を使用してください。このメソッドは、DataFile を呼び出してフラグを getVariation() で反復処理するよりも効率的です。
現在の SDK 構成を DataFile オブジェクトとして返します。
try {
    DataFile dataFile = kameleoonClient.getDataFile();
} catch (Exception e) {
    // Recommended (but optional) safeguard for unexpected exceptions from third-party libraries
}
戻り値
説明
DataFileSDK 構成を含む 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 コンポーネントとしてエンコードする必要があります。
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

String visitorCode = kameleoonClient.getVisitorCode(httpServletRequest, httpServletResponse);

String visitorCode = kameleoonClient.getVisitorCode(httpServletRequest, httpServletResponse, defaultVisitorCode);
引数
名前説明
httpServletRequestHttpServletRequest現在の HttpServletRequest オブジェクトを最初のパラメータとして渡す必要があります。このフィールドは必須です。
httpServletResponseHttpServletResponse現在の HttpServletResponse オブジェクトを 2 番目のパラメータとして渡す必要があります。このフィールドは必須です。
defaultVisitorCodeString既存の kameleoonVisitorCode クッキーがリクエストで見つからない場合、このパラメータが visitorCode として使用されます。このフィールドはオプションです。指定されていない場合、既存の kameleoonVisitorCode クッキーがない場合、SDK はランダムな visitorCode を生成します。
戻り値
説明
Stringこの特定のユーザーに関連付けられ、SDK のほとんどのメソッドで使用される visitorCode

addData()

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

// Add multiple data items (tracked by default)
kameleoonClient.addData(visitorCode, new PageView("https://url.com", "title"), new UserAgent("UserAgent"));

// Add multiple data items stored locally for targeting only (not sent to the Kameleoon Data API)
kameleoonClient.addData(visitorCode, false, new PageView("https://url.com", "title"), new UserAgent("UserAgent"));
引数
名前説明デフォルト値
visitorCode (必須)String訪問者の一意の識別子。
track (オプション)boolean追加されたデータがトラッキングの対象であるかどうかを指定します。false に設定すると、データはローカルに保存され、ターゲティング評価にのみ使用されます。Kameleoon Data API には送信されません。true
data (必須)Data...Kameleoon データタイプのコレクション。
例外
説明
VisitorCodeInvalid提供された訪問者コードが有効ではないことを示す例外。空であるか、255 文字を超えています。

flush()

  • 📨 Kameleoon にトラッキングデータを送信します
flush() メソッドは、訪問者にリンクされた Kameleoon データを収集します。次に、addData メソッドを使用して追加されたが、これらのメソッド のいずれかを使用してまだ送信されていないすべてのデータと共に、トラッキングリクエストを送信します。flush() はサーバー呼び出しが非同期で行われるため、非ブロッキングです。 flush を使用すると、特定の visitorCode に関連付けられたデータがサーバーに送信されるタイミングを制御できます。たとえば、addData() を 12 回呼び出した場合、addData() が呼び出されるたびにサーバーにデータを送信するのは非効率的です。そのため、flush() を 1 回呼び出すだけで済みます。 visitorCode を指定すると、flush() メソッドはこのコードを一意の訪問者識別子として使用します。これは クロスデバイス実験 に役立ちます。visitorCode を指定して isUniqueIdentifier パラメータを true に設定すると、SDK はフラッシュされたデータを指定された識別子に関連付けられた訪問者にリンクします。
パラメータ isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は特殊な状況で役立ちます。たとえば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッション統合を通じてその訪問者にリンクされている内部 ID を使用できる場合などです。

try {
    kameleoonClient.flush(visitorCode); // Interval tracking (most performant tracking method)
    kameleoonClient.flush(true, visitorCode); // Instant tracking
} catch (VisitorCodeInvalid e) {
  // Catch exception
}
引数
名前説明
instantbooleanデータを即座に送信するか (true)、SDK パラメータ tracking_interval_millisecond で設定されたデフォルトのトラッキング間隔に従って送信するか (false) を示すブール値フラグ。このフィールドはオプションです。
visitorCodeStringユーザーの一意の識別子。このフィールドは必須です。
isUniqueIdentifier (非推奨)booleanvisitorCode が一意の識別子であるかどうかを指定するためのオプションのパラメータ。訪問者に isUniqueIdentifier を適用するには、visitorCode を提供し、null ではない必要があります。そうでない場合、無視されます。指定されていない場合、デフォルト値は false です。このフィールドはオプションです。

getRemoteData()

このメソッドは以前 retrieveDataFromRemoteSource と呼ばれており、SDK バージョン 4.0.0 で削除されました。
getRemoteData() メソッドを使用すると、Kameleoon サーバーに保存された指定された siteCode に対して、引数として渡された key に従ってデータを取得できます。サイトコードは KameleoonClientFactory.create() で指定します。通常、データは Data API を使用してリモートサーバーに保存されます。このメソッドは、スケーラブルなサーバーが利用可能であることと併せて、後でアプリで取得できる追加データを保存するための便利な方法を提供します。
CompletableFuture<JsonObject> data = kameleoonClient.getRemoteData("key");

try {
  JsonObject test = kameleoonClient.getRemoteData("key").get(5_000, TimeUnit.MILLISECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
  // Catch exception
}
引数
名前説明
keyString取得されたデータに関連付けられているキー。このフィールドは必須です。
戻り値
説明
CompletableFuture<JsonObject>特定の key に対するデータの取得に関連付けられた将来の JsonObject

getRemoteVisitorData()

getRemoteVisitorData() は、Kameleoon Data API から visitorCode の Kameleoon 訪問データを取得するための非同期メソッドです。このメソッドは、ターゲティングの決定を行う際に他のメソッドが使用できるように、データをストレージに追加します。 このメソッドを使用して取得したデータは、次のような場合に重要な役割を果たします:
  • 他のデバイスから収集されたデータを使用する。
  • 過去の訪問中に訪問されたページなど、ユーザーの履歴にアクセスする。
  • データレイヤー変数やフロントエンドでコンバージョンするゴールなど、クライアントサイドでのみアクセス可能なデータを使用する。
ユースケースをより良く理解するには、この記事 を読んでください。
デフォルトでは、getRemoteVisitorData()scope=Visitor を持つ最新の保存されたカスタムデータを自動的に取得し、addData() メソッドを呼び出すことなく訪問者にアタッチします。これは、複数のデバイス間でカスタムデータを同期する ために特に役立ちます。
パラメータ isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は特殊な状況で役立ちます。たとえば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッション統合を通じてその訪問者にリンクされている内部 ID を使用できる場合などです。
String visitorCode = "visitorCode";
// Visitor data will be fetched and automatically added for `visitorCode`
CompletableFuture<List<Data>> visitorData = kameleoonClient.getRemoteVisitorData(visitorCode);

// If you only want to fetch data and add it yourself manually, set addData == `false`
CompletableFuture<List<Data>> visitorData = kameleoonClient.getRemoteVisitorData(visitorCode, false);

// If you want to fetch custom list of data types
RemoteVisitorDataFilter filter = RemoteVisitorDataFilter.builder()
    .previousVisitAmount(25)
    .customData(false)
    .conversions(true)
    .build();
CompletableFuture<List<Data>> visitorData = kameleoonClient.getRemoteVisitorData(visitorCode, filter, true, false);

try {
  List<Data> visitorData = kameleoonClient.getRemoteVisitorData(visitorCode).get(5_000, TimeUnit.MILLISECONDS);
  // Your custom code
} catch (CancellationException | InterruptedException | ExecutionException | TimeoutException e) {
  // Catch exception
}
引数
名前説明
visitorCodestring取得したいデータの訪問者コード。このフィールドは必須です。
filterRemoteVisitorDataFilter訪問から取得すべきデータを指定するためのフィルター。デフォルトでは、CustomData のみが現在および最新の前回訪問から取得されます (RemoteVisitorDataFilter.builder().build() または new RemoteVisitorDataFilter())。他のフィルターパラメータは false に設定されます。このフィールドはオプションです。
addDatabooleanメソッドが訪問者のために取得したデータを自動的に追加するかどうかを示すブール値。このフィールドはオプションです。
isUniqueIdentifier (非推奨)booleanvisitorCode が一意の識別子であるかどうかを指定するためのオプションのパラメータ。指定されていない場合、デフォルト値は false です。このフィールドはオプションです。
戻り値
説明
CompletableFuture<List<Data>>特定の訪問者に関連付けられた将来の List<Data>
getRemoteVisitorData() でのパラメータの使用
getRemoteVisitorData() メソッドは、訪問者に関するデータを取得するときにさまざまなパラメータを定義できる柔軟性を提供します。ゴール、実験、バリエーションに基づいてターゲティングする場合でも、同じアプローチがすべてのデータタイプに適用されます。 たとえば、ゴール「Order transaction」を完了した訪問者に関するデータを取得したいとします。getVisitorData() メソッド内でパラメータを指定して、ターゲティングを絞り込めます。たとえば、最後の 5 回の訪問でゴールでコンバージョンしたユーザーのみをターゲットにしたい場合は、previousVisitAmount パラメータを 5 に、conversions を true に設定できます。 この例で示される柔軟性は、ゴールデータに限定されません。getRemoteVisitorData() メソッド内でパラメータを使用して、さまざまな訪問者行動に関するデータを取得できます。
利用可能な kameleoon.types.RemoteVisitorDataFilter オプションのリストは以下のとおりです:
名前説明デフォルト
previousVisitAmount (オプション)intデータを取得する前回の訪問数。125 の数値1
currentVisit (オプション)booleantrue の場合、現在の訪問データが取得されますtrue
customData (オプション)booleantrue の場合、カスタムデータが取得されます。true
pageViews (オプション)booleantrue の場合、ページデータが取得されます。false
geolocation (オプション)booleantrue の場合、ジオロケーションデータが取得されます。false
device (オプション)booleantrue の場合、デバイスデータが取得されます。false
browser (オプション)booleantrue の場合、ブラウザーデータが取得されます。false
operatingSystem (オプション)booleantrue の場合、オペレーティングシステムデータが取得されます。false
conversions (オプション)booleantrue の場合、コンバージョンデータが取得されます。false
experiments (オプション)booleantrue の場合、実験データが取得されます。false
kcs (オプション)booleantrue の場合、Kameleoon Conversion Score (KCS) が取得されます。AI Predictive Targeting アドオン が必要ですfalse
visitorCode (オプション)booleantrue の場合、Kameleoon は最新の訪問から visitorCode を取得し、現在の訪問でそれを使用します。これは、クロスデバイス実験 のために、visitorCode で識別される訪問者が常に訪問にわたって同じバリエーションを受け取ることを保証したい場合に必要です。true
personalization (オプション)booleantrue の場合、パーソナライゼーションデータが取得されます。これは、パーソナライゼーション条件に必要です。false
cbs (オプション)booleantrue の場合、Contextual Bandit スコアデータが取得されます。false

getVisitorWarehouseAudience()

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

// If you need to specify warehouse key
CompletableFuture<CustomData> warehouseAudienceDataCF =
  kameleoonClient.getVisitorWarehouseAudience(visitorCode, customDataIndex);

try {
  CustomData warehouseAudienceData = warehouseAudienceDataCF.get(5_000, TimeUnit.MILLISECONDS);
  // Your custom code
} catch (CancellationException | InterruptedException | ExecutionException | TimeoutException e) {
  // Catch exception
}
引数
名前説明
visitorCodeStringデータを取得して追加したい訪問者の一意の識別子。
warehouseKeyStringウェアハウスデータを識別するための一意のキー (通常、内部ユーザー ID)。このフィールドはオプションです。
customDataIndexintBigQuery オーディエンスをターゲットにするために使用するカスタムデータのインデックスを表す整数。
戻り値
説明
CompletableFuture<CustomData>データが訪問者に追加されたことを確認する将来の CustomData インスタンス。
スローされる例外
説明
VisitorCodeInvalid提供された訪問者コードが有効ではないことを示す例外 (空であるか、255 文字を超えています)。

setLegalConsent()

このメソッドを使用して、訪問者が個人データの使用に対して法的同意を与えたかどうかを指定する必要があります。legalConsent パラメータを false に設定すると、トラッキングリクエストに含めることができるデータタイプが制限されます。このメソッドは、訪問者データを責任を持って管理しながら、法律および規制要件を遵守するのに役立ちます。個人データに関する詳細は、同意管理ポリシー をご覧ください。
// if you do not need to set the visitor code in a cookie to respond
kameleoonClient.setLegalConsent(visitorCode, true);

String visitorCode = kameleoonClient.getVisitorCode(httpServletRequest, httpServletResponse);
kameleoonClient.setLegalConsent(visitorCode, true, httpServletResponse);
引数
名前説明
visitorCodeStringユーザーの一意の識別子。このフィールドは必須です。
legalConsentboolean法的同意のステータスを表すブール値。true は訪問者が法的同意を与えたことを示し、false は訪問者が法的同意を提供したことがない、または取り消したことを示します。このフィールドは必須です。
responseHttpServletResponse法的同意ステータスに基づいてクッキー内の値が調整される HTTP サーブレットレスポンス。このフィールドはオプションです。
スローされる例外
説明
KameleoonException.VisitorCodeInvalid提供された訪問者コードが無効であることを示す例外。空であるか、255 文字を超えています。
同意取り消しの動作
legalConsent=false を指定して setLegalConsent() を呼び出した場合、SDK は kameleoonVisitorCode クッキーを削除しません。代わりに、クッキーの有効期限を延長しなくなるため、クッキーは自然に期限が切れるまで持続します。 コンプライアンス要件としてオプトアウト時にクッキーファイルを直ちに削除することが必要な場合は、フレームワークのネイティブクッキー管理メソッドを使用して手動で削除する必要があります。SDK は自動的にファイルを削除しません。

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

trackConversion()

  • 📨 Kameleoon にトラッキングデータを送信します
このメソッドを使用して、特定の ゴール とユーザーのコンバージョンをトラッキングします。このメソッドには visitorCodegoalId が必要です。さらに、このメソッドはオプションの revenuenegativemetadata 引数も受け取ります。visitorCode は通常、実験をトリガーする際に使用したものと同一です。 trackConversion() メソッドは値を返しません。このメソッドは、サーバー呼び出しが非同期で行われるため、非ブロッキングです。
パラメータ isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は他のエッジケースのシナリオでも有用です。たとえば、もともと訪問者に割り当てられた匿名の visitorCode にアクセスできないが、セッション統合機能を使用して匿名訪問者に接続された内部 ID にアクセスできる場合などです。
String visitorCode = kameleoonClient.getVisitorCode(httpServletRequest, httpServletResponse);
int goalId = 83023;

kameleoonClient.trackConversion(visitorCode, goalId);

// Add metadata
CustomData cd = new CustomData(1, "metadata");
kameleoonClient.trackConversion(visitorCode, goalId, cd);
引数
名前説明デフォルト
visitorCode (必須)String訪問者の一意の識別子。
goalId (必須)intゴールの ID。
revenue (オプション)floatコンバージョンの収益。0
negative (オプション)boolean収益が正か負かを定義します。false
metadata (オプション)CustomData...Kameleoon アプリでゴールのメタデータとして定義されているカスタムデータに特定の値を設定できます。例: [CustomData{id: 5, value: "Payment Type"}, CustomData{id: 6, value: "Delivery Method"}]。この例では、59 はカスタムデータのインデックスです (5 = 「Payment Type」、9 = 「Delivery Method」)。new CustomData[0]
isUniqueIdentifier (非推奨)booleanvisitorCode が一意の識別子であるかどうかを指定するためのオプションのパラメータ。false
メタデータ値は、生データエクスポート および 結果ページ を介してアクセスできます。metadata パラメータが提供されている場合、Kameleoon はこれらの指定された値を現在のコンバージョンに使用し、addData() メソッドを使用して以前に収集されたものに代わります。パラメータが省略されている場合、Kameleoon はコンバージョン前および同じ訪問内で、それらの CustomData のために最後にトラッキングされた値を使用します。Kameleoon は、trackConversion() メソッドのパラメータとして明示的に渡されたメタデータ値のみを考慮します。以下の例では、Kameleoon は、パラメータとして明示的に提供されたカスタムデータ値 (ここでは: 値が ‘Amex Credit Card’ のインデックス 5) のみとコンバージョンを関連付けます。
kameleoonClient.addData(visitorCode, new CustomData(5, "Credit Card"), new CustomData(9, "Express Delivery"));
kameleoonClient.trackConversion(visitorCode, 1000, new CustomData(5, "Amex Credit Card"));
例外
説明
VisitorCodeInvalid提供された訪問者コードが有効ではないことを示す例外。空であるか、255 文字を超えています。

getEngineTrackingCode()

Kameleoon は、Mixpanel、Google Analytics 4、Segment などのいくつかの分析ソリューションと統合されています。サーバーサイド実験を正しくトラッキングするには、訪問者が実験をトリガーした後に getEngineTrackingCode() メソッドを呼び出します。SDK は、訪問者が前の 5 秒間にトリガーした実験の JavaScript キューコマンドを返します。このコードをページに挿入すると、Engine.js はコマンドを処理し、アクティブな分析統合を介して露出イベントを送信します。 このメソッドの実装に関する詳細については、ハイブリッド実験 を参照してください。
String engineTrackingCode = kameleoonClient.getEngineTrackingCode(visitorCode);
  • この機能を使用するには、Java SDK と Kameleoon Engine.js の両方を実装します。このフローでは Engine.js はトラッキングにのみ使用されるため、終了 </body> タグの前に非同期タグをインストールできます。
  • Kameleoon でのみ実験をトラッキングしたく、サードパーティ分析ツールに露出イベントを送信する必要がない場合は、JavaScript / TypeScript SDK を使用してください。このオプションは サーバーレスエッジコンピュートプラットフォーム に適しています。JavaScript / TypeScript SDK は、対応する実験割り当てを window.kameleoonQueue に追加していれば、getVisitorCode を呼び出すときにバリエーションを自動的にトラッキングします。
  • 返されたトラッキングコードを HTML <script> タグに直接挿入できます。
<html lang="en">
  <body>
    <script>
      const engineTrackingCode = `
        window.kameleoonQueue = window.kameleoonQueue || [];
        window.kameleoonQueue.push(['Experiments.assignVariation', 123456, 7890, true]);
        window.kameleoonQueue.push(['Experiments.trigger', 123456, true]);
        window.kameleoonQueue.push(['Experiments.assignVariation', 234567, 8901, true]);
        window.kameleoonQueue.push(['Experiments.trigger', 234567, true]);
      `;
      const script = document.createElement('script');

      script.textContent = engineTrackingCode;
      document.body.appendChild(script);
    </script>

  </body>
</html>
この例では、123456234567 は実験 ID、78908901 はバリエーション ID です。あなたの実装では、SDK が返されたトラッキングコードでこれらの値を生成します。
引数
名前説明
visitorCode (必須)String訪問者の一意の識別子。
戻り値
説明
Stringページに挿入する JavaScript コード。

イベント

updateConfigurationHandler()

updateConfigurationHandler() メソッドを使用すると、構成にデータの更新があったときのイベントを処理できます。このメソッドは 1 つの入力パラメータ handler を取ります。これは、リアルタイム構成イベントを使用して構成が更新されたときに呼び出されるハンドラです。
kameleoonClient.updateConfigurationHandler(() -> {
  // Configuration was updated
});
引数
名前説明
handlerKameleoonUpdateConfigurationHandlerリアルタイム構成イベントを使用して構成が更新されたときに呼び出されるハンドラ。

データタイプ

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

Browser

ここに保存された Browser データセットは、関連付けられた任意の値で実験とパーソナライゼーションのレポートをフィルタリングするために使用できます。
名前説明
type (必須)Browser.Typeブラウザーのリスト: CHROMEINTERNET_EXPLORERFIREFOXSAFARIOPERAOTHER
version (オプション)Floatブラウザーのバージョン。浮動小数点数は、ブラウザーのメジャーバージョンとマイナーバージョンを表します。
kameleoonClient.addData(visitorCode, Browser.chrome());
kameleoonClient.addData(visitorCode, Browser.safari());

kameleoonClient.addData(visitorCode, new Browser(Browser.Type.CHROME, 10.0));

Conversion

ここに保存された Conversion データセットは、関連付けられた任意のゴールで実験とパーソナライゼーションのレポートをフィルタリングするために使用できます。
  • 各訪問者は複数の Conversion オブジェクトを持つことができます。
  • goalId は Kameleoon アプリで見つけることができます。
名前説明デフォルト
goalId (必須)intゴールの ID。
revenue (オプション)floatコンバージョンの収益0
negative (オプション)boolean収益が正か負かを定義します。false
metadata (オプション)CustomData...コンバージョンのメタデータ。new CustomData[0]
kameleoonClient.addData(visitorCode, new Conversion(32, 10f));

kameleoonClient.addData(visitorCode, new Conversion(33, null, true));

kameleoonClient.addData(
    visitorCode,
    new Conversion(34, 5f, new CustomData(3, "metadata1", "md2"), new CustomData(5, "md3"))
);
Cookie には、訪問者のデバイスに保存されたクッキーに関する情報が含まれます。
名前説明
cookiesMap<String, String>クッキーのキーと値で構成される文字列オブジェクトマップ。このフィールドは必須です。
各訪問者は 1 つの Cookie しか持てません。2 番目の Cookie を追加すると、最初のものが上書きされます。
Cookie cookie = new Cookie (new HashMap<String, String>() {{
    put("my_key1", "my_value1");
    put("my_key2", "my_value1");
}});
kameleoonClient.addData(visitorCode, cookie);

Geolocation

Geolocation には、訪問者の位置情報の詳細が含まれます。
名前説明
country (必須)String訪問者の国。
region (オプション)String訪問者の地域。
city (オプション)String訪問者の都市。
postalCode (オプション)String訪問者の郵便番号。
latitude (オプション)float訪問者の場所を表す緯度座標。座標数は十進度を表します。
longitude (オプション)float訪問者の場所を表す経度座標。座標数は十進度を表します。
  • 各訪問者は 1 つの Geolocation しか持てません。2 番目の Geolocation を追加すると、最初のものが上書きされます。
kameleoonClient.addData(visitorCode, new Geolocation("France", "Île-de-France", "Paris"));

CustomData

CustomData は、各訪問者にあらゆるタイプのデータを関連付けることができ、セグメント でのターゲティング条件のための効果的なツールになります。さらに、実験レポートでフィルターや分解として使用できます。カスタムデータの詳細については、この記事 を参照してください。 Kameleoon アプリまたは Data API でカスタムデータタイプを定義し、SDK から使用します。
名前説明デフォルト
index/name (必須)int/Stringカスタムデータのインデックスまたは名前。データを識別するためには、index または name のどちらかを指定する必要があります
values (必須)String.../List<String>保存されるカスタムデータの値。
overwrite (オプション)boolean値の保存方法とレポートでの表示方法を明示的に制御するためのフラグ。詳細を見るtrue
  • 各訪問者は、固有の index(name) ごとに 1 つの CustomData のみが許可されます。同じ index(name) を持つ別の CustomData を追加すると、既存のものが置き換えられます。
  • カスタムデータの「index」は、カスタムデータダッシュボード の「INDEX」列に表示されます。
  • プライバシー上の理由から SDK が選択されたインデックスのデータを Kameleoon サーバーに送信しないようにするには、カスタムデータの作成時にオプション Use this data only locally for targeting purposes を有効にします。
  • SDK インスタンスが初期化されていないとき、または名前が登録されていないときに、名前で作成された CustomData インスタンスを追加すると、データは無視されます。
kameleoonClient.addData(visitorCode, new CustomData(1, "value"));

// With several values
kameleoonClient.addData(visitorCode, new CustomData(1, "value1", "value2"));

// To set the 'overwrite' flag to false
kameleoonClient.addData(visitorCode, new CustomData(1, false, "value"));

// To use a name instead of the index
kameleoonClient.addData(visitorCode, new CustomData("my-custom-data", "value"));

Device

名前説明
deviceDeviceデバイスのリスト: PHONETABLETDESKTOP。このフィールドは必須です。
kameleoonClient.addData(visitorCode, Device.desktop());

PageView

ページビューイベントを保存します。
名前説明
urlString表示されたページの URL。このフィールドは必須です。
titleString表示されたページのタイトル。このフィールドは必須です。
referrersList<Integer>表示されたページのリファラー。このフィールドはオプションです。
リファラーのインデックス (ID) は、Kameleoon アプリの 集客チャネル構成 ページで利用できます。注意: このインデックスは 0 から始まるため、指定したサイトに対して作成した最初の集客チャネルの ID は 1 ではなく 0 になります。
kameleoonClient.addData(
  visitorCode,
  new PageView("https://url.com", "title", Array.asList(3))
);

UserAgent

サーバーサイド実験は、クライアントサイド実験よりもボットトラフィックの影響を受けやすくなります。Kameleoon は、この問題に対処し、既知のボットとスパイダーを認識するために、IAB/ABC International Spiders and Bots List を使用しています。Kameleoon は、コンバージョンメトリクスを歪める可能性のあるボットや他の不要なトラフィックをフィルタリングするために UserAgent フィールドも使用します。詳細については、ボットフィルタリング に関するヘルプ記事を参照してください。 内部ボットを使用している場合は、それらを分析から除外するために userAgent の値 curl/8.0 を渡すことをお勧めします。
名前説明
valueStringトラッキングリクエストで送信される User-Agent 値。このフィールドは必須です。
kameleoonClient.addData(visitorCode, new UserAgent("Your User Agent"));

UniqueIdentifier

訪問者に UniqueIdentifier を追加しない場合、visitorCode が一意の訪問者識別子として使用され、クロスデバイス実験 に役立ちます。訪問者に UniqueIdentifier を追加すると、SDK はフラッシュされたデータを指定された識別子に関連付けられた訪問者にリンクします。 isUniqueIdentifier は特殊な状況で役立ちます。たとえば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッション統合を通じてその訪問者にリンクされている内部 ID を使用できる場合などです。
名前説明
valuebooleanvisitorCode が一意の識別子であるかどうかを指定するパラメータ。このフィールドは必須です。
kameleoonClient.addData(visitorCode, new UniqueIdentifier(true));

OperatingSystem

OperatingSystem には、訪問者のデバイスのオペレーティングシステムに関する情報が含まれます。
名前説明
typeOperatingSystem.Typeオペレーティングシステムのリスト: WINDOWS_PHONEWINDOWSANDROIDLINUXMACIOS。このフィールドは必須です。
各訪問者は 1 つの OperatingSystem しか持てません。2 番目の OperatingSystem を追加すると、最初のものが上書きされます。
kameleoonClient.addData(visitorCode, new OperatingSystem(OperatingSystem.Type.WINDOWS));

kameleoonClient.addData(visitorCode, OperatingSystem.mac());

ApplicationVersion

ApplicationVersion は、アプリケーションのセマンティックバージョン番号を表します。
訪問者 は 1 つの ApplicationVersion しか持てません。2 番目のインスタンスを追加すると、最初のものが上書きされます。
名前説明
version (オプション)Stringモバイルアプリケーションのバージョン。このフィールドはセマンティックバージョニングに従う必要があります。受け入れられる形式は majormajor.minor、または major.minor.patch です。
kameleoonClient.addData(visitorCode, new ApplicationVersion("10")); // major

kameleoonClient.addData(visitorCode, new ApplicationVersion("10.20")); // major.minor

kameleoonClient.addData(visitorCode, new ApplicationVersion("10.20.30")); // major.minor.patch

戻り値の型

DataFile

DataFile には SDK 構成の詳細が含まれます。 クライアントが必要とする場合、追加情報で拡張できます。詳細が必要な場合は、カスタマーサクセスマネージャーにお問い合わせください。
名前説明
featureFlagsMap<String, FeatureFlag>フィーチャーフラグキーをキーとした FeatureFlag オブジェクトのマップ。
dateModifiedlongDataFile が最後に変更された時刻を示すタイムスタンプ (ミリ秒単位)。
// Retrieves the map of feature flags from the DataFile.
// The map is keyed by feature flag identifiers, with each value being a FeatureFlag object.
Map<String, FeatureFlag> featureFlags = dataFile.getFeatureFlags();

// Retrieves the last modification timestamp of the DataFile.
// The value is a long representing milliseconds since the Unix epoch.
long dateModified = dataFile.getDateModified();

FeatureFlag

FeatureFlag は、フィーチャーフラグ自体を定義するプロパティのセット (たとえば、VariationsRules、環境ステータスなど) を表します。 クライアントが必要とする場合、追加情報で拡張できます。詳細が必要な場合は、カスタマーサクセスマネージャーにお問い合わせください。
名前説明
environmentEnabledboolean現在の環境でフィーチャーフラグが有効になっているかどうかを示します。
defaultVariationKeyStringフィーチャーフラグに関連付けられたデフォルトのバリエーションのキー。
variationsMap<String, Variation>バリエーションキーをキーとした Variation オブジェクトのマップ。
rulesList<Rule>Rule オブジェクトのリスト
// Check whether the feature flag is enabled in the current environment
boolean isEnvironmentEnabled = featureFlag.isEnvironmentEnabled();

// Retrieve the key of the default variation
String defaultVariationKey = featureFlag.getDefaultVariationKey();

// Retrieve the default variation object
Variation defaultVariation = featureFlag.getDefaultVariation();

// Retrieve all variations of the feature flag as a map (key = variation key, value = Variation object)
Map<String, Variation> variations = featureFlag.getVariations();

// Retrieve all targeting rules associated with the feature flag
List<Rule> rules = featureFlag.getRules();

Rule

Rule は、ルール自体を定義するプロパティのセット (たとえば、Variations) を表します。 クライアントが必要とする場合、追加情報で拡張できます。詳細が必要な場合は、カスタマーサクセスマネージャーにお問い合わせください。
名前説明
variationsMap<String, Variation>バリエーションキーをキーとした Variation オブジェクトのマップ。
// Retrieve all variations of the rule as a map (key = variation key, value = Variation object)
Map<String, Variation> variations = rule.getVariations();

Variation

Variation には、訪問者に割り当てられたバリエーション (または、特定の割り当てが存在しない場合はデフォルトのバリエーション) に関する情報が含まれます。
名前説明
nameStringバリエーションの名前。
keyStringバリエーションを識別する一意のキー。
idInteger割り当てられたバリエーションの ID (デフォルトバリエーションの場合は null)。
experimentIdIntegerバリエーションに関連付けられた実験の ID (デフォルトの場合は null)。
variablesMap<String, Variable>変数名をキーとした、割り当てられたバリエーションの変数を含むマップ。関連する変数がない場合、これは空のコレクションになる可能性があります。
  • Variation オブジェクトは、割り当てられたバリエーションとその関連実験に関する詳細を提供し、Variable オブジェクトは、バリエーション内の各変数に関する具体的な詳細を含みます。
  • id または experimentIdnull の場合 (デフォルトバリエーションを示します) を処理することをコードで確認してください。
  • バリエーションに関連付けられた変数がない場合、variables マップは空になる可能性があります。
// Retrieving the variation name
String variationName = variation.getName();

// Retrieving the variation key
String variationKey = variation.getKey();

// Retrieving the variation id
Integer variationId = variation.getId();

// Retrieving the experiment id
Integer experimentId = variation.getExperimentId();

// Retrieving the variables map
Map<String, Variable> variables = variation.getVariables();

Variable

Variable には、割り当てられたバリエーションに関連付けられた変数に関する情報が含まれます。
名前説明
keyString変数を識別する一意のキー。
typeString変数のタイプ。可能な値: BOOLEANNUMBERSTRINGJSONJSCSS
valueObject変数の値。次のタイプのいずれかになります: BooleanIntegerLongDoubleStringJsonObjectJsonArray
// Retrieving the variables map
Map<String, Variable> variables = variation.getVariables();

// Variable type can be retrieved for further processing
String type = variables.get("isDiscount").getType();

// Retrieving the variable value by key
Boolean isDiscount = (Boolean) variables.get("isDiscount").getValue();

// Variable value can be of different types
String title = (String) variables.get("title").getValue();

非推奨メソッド

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

getFeatureVariationKey()

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

try {
  variationKey = kameleoonClient.GetFeatureVariationKey(visitorCode, featureKey);
} catch (KameleoonException.FeatureNotFound e) {
  // The error has occurred; the feature flag isn't found in the current configuration
} catch (KameleoonException.FeatureEnvironmentDisabled e) {
  // The feature flag is disabled for the environment
} catch (KameleoonException.VisitorCodeInvalid e) {
  // The visitor code you passed to the method is invalid and can't be accepted by SDK.
}

switch (variationKey) {
  case 'on':
    // Main variation key is selected for visitorCode
    break;
  case 'alternative_variation':
    // Alternative variation key
    break;
  default:
    // Default variation key
    break;
}
引数
名前説明
visitorCodeStringユーザーの一意の識別子。このフィールドは必須です。
featureKeyStringユーザーに公開したいフィーチャーのキー。このフィールドは必須です。
isUniqueIdentifier (非推奨)booleanvisitorCode が一意の識別子であるかどうかを指定するためのオプションのパラメータ。指定されていない場合、デフォルト値は false です。このフィールドはオプションです。
戻り値
説明
String指定された visitorCode に対して登録されているフィーチャーフラグのバリエーションキー。
スローされる例外
説明
KameleoonException.FeatureNotFound要求されたフィーチャーキーが SDK の内部構成で見つからなかったことを示す例外。この例外は通常、フィーチャーフラグが Kameleoon アプリで有効化されていない (ただし、フィーチャーを実装するコードはアプリケーションにすでにデプロイされている) ことを意味します。
KameleoonException.FeatureEnvironmentDisabledフィーチャーフラグが訪問者の現在の環境 (本番、ステージング、開発など) で無効になっていることを示す例外。
KameleoonException.VisitorCodeInvalid提供された訪問者コードが有効ではないことを示す例外。空であるか、255 文字を超えています。

getActiveFeatures()

代わりに getVariations() を使用してください。
このメソッドは、単一の visitorCode パラメータを受け取ります。結果には、指定された訪問者のアクティブなフィーチャーのみが含まれます。
try {
    Map<String, Variation> activeFeatures = kameleoonClient.getActiveFeatures(visitorCode);
} catch (VisitorCodeInvalid e) {
    //  Handle exception
}
引数
名前説明
visitorCodeStringユーザーの一意の識別子。このフィールドは必須です。
戻り値
説明
Map<String, Variation>対応するアクティブフィーチャーのキーを使用して、アクティブフィーチャーの割り当てられたバリエーションを含むマップ。
スローされる例外
説明
VisitorCodeInvalid提供された訪問者コードが有効ではないことを示す例外。空であるか、255 文字を超えています。

getActiveFeatureListForVisitorCode()

  • 代わりに getVariations() を使用してください。
  • このメソッドは以前 obtainFeatureListForVisitorCode と呼ばれており、SDK バージョン 4.0.0 で削除されました。
このメソッドは、単一の visitorCode パラメータを受け取ります。指定された訪問者のアクティブなフィーチャーフラグのみを返します。
List<String> listActiveFeatureFlags = kameleoonClient.getActiveFeatureListForVisitorCode(visitorCode);
引数
名前説明
visitorCodeStringユーザーの一意の識別子。このフィールドは必須です。
戻り値
説明
List<String>特定の visitorCode で利用可能なアクティブなフィーチャーフラグキーのリスト

getFeatureVariable()

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

try {
  var variableValue = kameleoonClient.getFeatureVariable(visitorCode, featureKey, variableKey);
  // Your custom code, depending on variableValue.
} catch (KameleoonException.FeatureNotFound e) {
  // The error has occurred; the feature flag isn't found in current configuration
} catch (KameleoonException.FeatureEnvironmentDisabled e) {
  // The feature flag is disabled for the environment.
} catch (KameleoonException.FeatureVariableNotFound e) {
  // Requested variable not defined on Kameleoon's side
} catch (KameleoonException.VisitorCodeInvalid e) {
  // The visitor code passed to the method is invalid and can't be accepted by SDK.
}
引数
名前説明
visitorCodeStringユーザーの一意の識別子。このフィールドは必須です。
featureKeyStringユーザーに公開したいフィーチャーのキー。このフィールドは必須です。
variableKeyString値を取得したい変数の名前。このフィールドは必須です。
isUniqueIdentifier (非推奨)booleanvisitorCode が一意の識別子であるかどうかを指定するためのオプションのパラメータ。指定されていない場合、デフォルト値は false です。このフィールドはオプションです。
戻り値
説明
objectこのフィーチャーフラグに対して、指定された visitorCode に登録されているバリエーションの変数値。可能なタイプ: boolintdoublestringJObjectJArray
スローされる例外
説明
KameleoonException.FeatureNotFound要求されたフィーチャーキーが SDK の内部構成で見つからなかったことを示す例外。通常、これはフィーチャーフラグが Kameleoon アプリでまだ有効化されていない (ただし、フィーチャーを実装するコードはアプリケーションにすでにデプロイされている) ことを意味します。
KameleoonException.FeatureEnvironmentDisabledフィーチャーフラグが訪問者の現在の環境 (本番、ステージング、開発など) で無効になっていることを示す例外。
KameleoonException.FeatureVariableNotFound要求された変数が見つからなかったことを示す例外。Kameleoon アプリの変数のキーがコードと一致することを確認してください。
KameleoonException.VisitorCodeInvalid指定された訪問者コードが有効ではないことを示す例外。(空であるか、255 文字を超えています)。

getFeatureVariables()

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

try {
  var variableValue = kameleoonClient.getFeatureVariables(visitorCode, featureKey);
  // Your custom code, depending on variable values.
} catch (KameleoonException.FeatureNotFound e) {
  // The error has occurred; the feature flag isn't found in current configuration.
} catch (KameleoonException.FeatureEnvironmentDisabled e) {
  // The feature flag is disabled for the environment.
} catch (KameleoonException.FeatureVariableNotFound e) {
  // Requested variable not defined on Kameleoon's side
} catch (KameleoonException.VisitorCodeInvalid e) {
  // The visitor code passed to the method is invalid and can't be accepted by SDK.
}
引数
名前説明
featureKeyString取得したいフィーチャーのキー。このフィールドは必須です。
variationKeyString取得したいバリエーションのキー。このフィールドは必須です。
戻り値
説明
Map<String,Object>このフィーチャーフラグに関連付けられたデータ。値は BooleanIntegerDoubleStringJsonObject、または JsonArray のいずれかになります (タイプは Kameleoon アプリで定義されます)。
スローされる例外
説明
KameleoonException.FeatureNotFound要求されたフィーチャーキーが SDK の内部構成で見つからなかったことを示す例外。この例外は通常、フィーチャーフラグが Kameleoon アプリで有効化されていない (ただし、フィーチャーを実装するコードはアプリケーションにすでにデプロイされている) ことを意味します。
KameleoonException.FeatureEnvironmentDisabledフィーチャーフラグが訪問者の現在の環境 (本番、ステージング、開発など) で無効になっていることを示す例外。
KameleoonException.FeatureVariationNotFound要求されたバリエーションキーが SDK の内部構成で見つからなかったことを示す例外。通常、これはバリエーションに対応する実験が Kameleoon アプリで有効化されていないことを意味します。
KameleoonException.VisitorCodeInvalid指定された訪問者コードが有効ではないことを示す例外。(空であるか、255 文字を超えています)。

getFeatureVariationVariables()

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

try {
  Map<String, Object> allVariables = kameleoonClient.getFeatureVariationVariables(featureKey, variationKey);
} catch (KameleoonException.FeatureNotFound e) {
  // The feature is not activated in the Kameleoon app.
} catch (KameleoonException.FeatureEnvironmentDisabled e) {
  // The feature flag is disabled for the environment.
} catch (KameleoonException.FeatureVariationNotFound e) {
  // The variation is not activated in the Kameleoon app (most likely, the associated experiment is not active)
} catch (Exception e) {
  // This is a generic Exception handler which will handle all exceptions.
  System.out.println("Exception occurred");
}
引数
名前説明
featureKeyString取得したいフィーチャーのキー。このフィールドは必須です。
variationKeyString取得したいバリエーションのキー。このフィールドは必須です。
戻り値
説明
Map<String,Object>このフィーチャーフラグに関連付けられたデータ。値は BooleanIntegerDoubleStringJsonObjectJsonArray のいずれかになります (Kameleoon アプリで定義されたタイプに依存)。
スローされる例外
説明
KameleoonException.FeatureNotFound要求されたフィーチャーが SDK の内部構成で見つからなかったことを示す例外。この例外は通常、フィーチャーフラグが Kameleoon アプリで有効化されていないことを意味します。
KameleoonException.FeatureEnvironmentDisabledフィーチャーフラグが訪問者の現在の環境 (本番、ステージング、開発など) で無効になっていることを示す例外。
KameleoonException.FeatureVariationNotFound要求されたバリエーションキーが SDK の内部構成で見つからなかったことを示す例外。通常、これはバリエーションに対応する実験が Kameleoon アプリで有効化されていないことを意味します。