開発者ガイド
はじめに
このガイドは、当社の SDK を C# アプリケーションに統合するのに役立つように設計されています。スターターキット
開始にあたっての支援として、Kameleoon は SDK をテストするためのスターターキットとデモアプリケーションを提供しています。スターターキットには、SDK メソッドをアプリでどのように使用できるかを示す例を含む、完全に構成されたアプリが含まれています。スターターキット、デモアプリケーション、および詳細な手順は、.NET 用スターターキット で入手できます。C# クライアントのインストール
NuGet、.NET CLI、または Paket パッケージマネージャーを使用して C# クライアントをインストールできます。- NuGet Package Manager
- .NET CLI
- Paket CLI
追加の構成
認証情報を提供し、SDK の動作をカスタマイズするための.properties 構成ファイルを作成します。サンプル構成ファイル をダウンロードすることもできます。このファイルをデフォルトのパス /etc/kameleoon/client-csharp.conf に保存します。ファイルを別の場所に配置する場合は、KameleoonClientFactory.Create() の引数としてパスを渡す必要があります。現在のバージョンの C# SDK で使用可能なキーは以下のとおりです:
Kameleoon クライアントの初期化
SDK をインストールし、認証情報および SDK の動作を構成したら、アプリケーションコード内で Kameleoon クライアントを作成します。例:IKameleoonClient は、アプリを Kameleoon プラットフォームに接続するシングルトンオブジェクトです。実験の実行に必要なすべてのメソッドと機能が含まれています。
開発者として、Kameleoon での A/B テストにアプリが正しいロジックを使用していることを確認する必要があります。実験をまだ開始していない場合は、訪問者を実験から除外することがベストです。これはバリエーションのデフォルトロジックに適合するため、除外は簡単です。
機能フラグの有効化
ユーザーへの一意の ID の割り当て
ユーザーに一意の ID を割り当てるには、GetVisitorCode() メソッドを使用できます。訪問者コード が存在しない場合 (リクエストヘッダー Cookie から)、このメソッドはランダムな一意の ID を生成するか、生成済みの defaultVisitorCode を使用します。次に、ID はレスポンスヘッダー Cookie に設定されます。
Kameleoon を ハイブリッドモード で使用している場合、GetVisitorCode() メソッドを呼び出すことで、一意の ID (訪問者コード) がアプリケーションファイル engine.js (以前は kameleoon.js と呼ばれていました) と SDK の間で共有されます。
フラグ構成の取得
コードに機能フラグを実装するには、まず Kameleoon アカウントで機能フラグを作成する必要があります。 特定のユーザーに対する機能フラグのステータスまたはバリエーションを判別するには、featureKey に基づいて構成を取得するために GetVariation() または IsFeatureActive() メソッドを使用する必要があります。
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 は以前に収集された訪問者データを訪問者の各デバイス間で同期し、クロスデバイス実験を通じてデバイス間で訪問履歴を統合することを可能にします。Kameleoon がデバイス間でデータをどのように処理するかについてのケーススタディと詳細情報は、クロスデバイス実験に関する記事 で利用できます。デバイス間でのカスタムデータの同期
カスタムマッピング同期は、デバイス間で訪問者データを統合するために使用されますが、常に必要というわけではありません。以下は、カスタムマッピング同期が不要な 2 つのシナリオです: デバイス間で同じユーザー ID すべてのデバイスで同じユーザー ID が一貫して使用されている場合、カスタムマッピング同期なしで同期が自動的に処理されます。複数のデバイス間で収集されたデータを同期したい場合は、GetRemoteVisitorData() メソッドを呼び出すだけで十分です。
一貫した ID を持つマルチサーバーインスタンス
複数のサーバーが関係する複雑な設定 (例えば、分散型サーバーインスタンス) において、同じユーザー ID がサーバー間で利用可能な場合、追加のカスタムマッピング同期なしで、サーバー間の同期 (GetRemoteVisitorData() 経由) で十分です。
追加のデータを必要とする顧客は、さらなるガイダンスのために GetRemoteVisitorData() メソッドの説明を参照できます。以下のコードでは、2 つのデバイス間で同じ一意の識別子 (この場合は visitorCode、userId とも呼ばれます) が正確なデータ取得のために一貫して使用されていることが想定されています。
収集されたデータをリアルタイムで同期したい場合は、カスタムデータのスコープとして Visitor を選択する必要があります。
Device A
Device B
セッションマージのためのカスタムデータの使用
クロスデバイス実験 では、訪問者の履歴を各デバイス間で結合することができます (履歴の調整)。履歴の調整により、異なる訪問者のセッションを 1 つにマージできます。訪問履歴を調整するには、訪問者の一意の識別子を提供するためにCustomData を使用します。詳細については、専用ドキュメント を参照してください。
クロスデバイスの調整を有効にした後、userId パラメータを使用して GetRemoteVisitorData() を呼び出すと、特定のユーザーのすべての既知のデータを取得できます。
同じ識別子を持つセッションは、実験で常に同じバリエーションが表示されます。実験結果ページの訪問者ビューでは、これらのセッションは 1 人の訪問者として表示されます。
SDK 構成により、関連するセッションは常に実験の同じバリエーションを見ることが保証されます。ただし、クロスデバイスのバリエーション割り当てに関するいくつかの制限があります。これらの制限は こちら に概説されています。
クロスデバイス履歴の調整の有効化 ガイドに従って、Kameleoon プラットフォームでカスタムデータを設定してください。
その後、SDK を通常どおり使用できます。セッションマージのコンテキストで役立つ可能性のあるメソッドは次のとおりです:
UniqueIdentifier(true)を追加したGetRemoteVisitorData()- すべてのリンクされた訪問者のデータを取得します。UniqueIdentifier(true)データを追加したTrackConversion()またはFlush()- 別の訪問者に関連付けられている特定の訪問者のいくつかのデータを追跡します。
GetVisitorCode() メソッドによって生成された匿名の訪問者識別子が使用されます。ユーザーがログインした後、匿名訪問者はユーザー ID に関連付けられ、訪問者の一意の識別子として使用されます。
カスタムバケットキーの使用
デフォルトでは、Kameleoon は一意の匿名訪問者 ID (visitorCode) を使用して、ユーザーを機能フラグのバリエーションに割り当てます。この ID は通常、ユーザーのデバイス上で生成および保存されます (クライアントサイドおよびサーバーサイド SDK ではブラウザの Cookie に、モバイル 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 がサポートする条件のリストについては、訪問履歴を使用してユーザーをターゲットにする を参照してください。 ユーザーをターゲットにするための外部データ を使用することもできます。ロギング
SDK はさまざまな内部プロセスや問題を反映するためにログを生成します。ログレベル
SDK はログレベルによるロギング制限の構成をサポートしています。ログのカスタム処理
SDK はデフォルトではログをコンソール出力に書き込みます。この動作はオーバーライドできます。ログレベルによるロギング制限はログ処理ロジックとは別に実行されます。
リファレンス
これは C# SDK の完全なリファレンスドキュメントです。初期化
Create()
SDK の使用を開始するには、初期化する必要があります。アプリはKameleoon.IKameleoonClient にある KameleoonClient クラスを介して SDK と対話します。このオブジェクトは、静的メソッド Kameleoon.KameleoonClientFactory Create() を使用して作成できます。
引数
戻り値
スローされる例外
WaitInit()
WaitInit() は Kameleoon クライアントの初期化を待機します。このメソッドにより、他の操作に進む前にクライアントが正常に初期化されたことを確認できます。
戻り値
スローされる例外
機能フラグとバリエーション
IsFeatureActive()
- 📨 Kameleoon にトラッキングデータを送信します (
trackパラメータに依存)
このメソッドは以前
ActivateFeature と呼ばれていましたが、SDK バージョン 4.0.0 で削除されました。IsFeatureActive メソッドを呼び出します。
このメソッドは、ユーザーが特定の機能にアクセスできるかどうかを確認するために、visitorCode と featureKey (または featureID) を必要とします。
ユーザーがこの機能にリンクされたことがない場合、SDK はそれを有効化するかどうかをランダムに決定し、true (ユーザーは機能にアクセスできます) または false (ユーザーはアクセスできません) のいずれかを返します。指定された visitorCode を持つユーザーが既にこの機能にリンクされている場合、システムは featureFlag の以前の値を返します。
潜在的なエラーをキャッチするために、例に示されているように、コードに適切なエラー処理を含めるようにしてください。
visitorCode を指定すると、IsFeatureActive() メソッドはそれを一意の訪問者識別子として使用します。これは クロスデバイス実験 に役立ちます。visitorCode を指定し、isUniqueIdentifier パラメータを true に設定すると、SDK は指定された識別子に関連付けられた訪問者とフラッシュされたデータをリンクします。
パラメータ
isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は、特殊な状況で役立ちます。例えば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッションマージを通じてその訪問者にリンクされた内部 ID を使用できる場合などです。Kameleoon は、
IsFeatureActive()、GetVariation()、GetVariations() などの特定のメソッドを呼び出すときに、トラッキングを使用してセッションと訪問者をカウントします。訪問者をバリエーションに公開し、それらをカウントする必要があるときは、track パラメータにデフォルトの true 値を使用します。訪問者を公開する前にこれらのメソッドを呼び出す場合のみ、track パラメータを false に設定してください。例えば、訪問者を公開する前にすべてのバリエーションを取得するために GetVariations() を呼び出す場合は、track パラメータを false に設定します。この設定により、Kameleoon がセッションを早期にカウントするのを防ぎます。その後、訪問者を明示的に公開するときにトラッキングを後でトリガーできます。Kameleoon はデフォルトで 1 秒ごとにトラッキングデータを送信します。トラッキング間隔の構成オプションを使用して、この間隔を最大 5 秒まで構成できます。Kameleoon は、イベント間の間隔が 30 分未満である限り、トラッキングイベントを 1 つのセッションにグループ化します。トラッキングイベント間で 30 分を超える時間が経過すると、Kameleoon はイベントを別個のセッションとしてカウントします。訪問は、セッションで最後に記録されたイベントから 30 分後にレポートに表示されます。引数
戻り値
スローされる例外
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 を返します。
潜在的な例外を管理するために適切なエラー処理を実装する必要があります。
デフォルトバリエーションとは、機能フラグに対して定義済みの配信ルールにマッチしない訪問者に割り当てられるバリエーションを指します。つまり、特定のルールでターゲットされていないすべてのユーザーに適用されるフォールバックバリエーションです。管理インターフェースの「その後、他のすべての人には…」セクションのバリエーションとして表示されます。
引数
戻り値
スローされる例外
GetFeatureList()
このメソッドは以前
ObtainFeatureList() と呼ばれていましたが、SDK バージョン 4.0.0 で削除されました。戻り値
SetForcedVariation()
このメソッドにより、標準の評価プロセスをバイパスして、特定のVariation をユーザーにプログラムで割り当てることができます。これは、通常の評価ロジックが必要ないか、スキップする必要がある制御された実験で特に価値があります。デバッグやカスタムテストなどのシナリオでも役立ちます。
強制された バリエーションが設定されると、Kameleoon のリアルタイム評価ロジックが上書きされます。セグメンテーション、ターゲティング条件、アルゴリズム計算などのプロセスはスキップされます。実験中のセグメンテーションとターゲティング条件を保持するには、代わりに forceTargeting=false を設定してください。
シミュレートされた バリエーションは、実行順序で常に優先されます。シミュレートされた バリエーションの計算がトリガーされた場合、それが最初に完全に処理および完了されます。
引数
スローされる例外
ほとんどの場合、例で示されているように、基本的なエラー
KameleoonException のみを処理する必要があります。ただし、さまざまなタイプのエラーが応答を必要とする場合は、特定の要件に基づいて個別に処理してください。さらに、信頼性を向上させるために、一般的な言語エラーは Exception を含めることで処理できます。EvaluateAudiences()
- 📨 Kameleoon にトラッキングデータを送信します
EvaluateAudiences() は、関連するすべての訪問者データが設定または更新された後 に、また機能バリエーションを取得したり機能フラグを確認したりする 直前 に呼び出す必要があります。このアプローチにより、訪問者が利用可能な最新のデータに対して評価されることが保証され、すべての基準に基づいて正確なオーディエンス割り当てが可能になります。
このメソッドを呼び出した後、Audiences Explorer でセグメントパフォーマンスの詳細な分析を実行できます。
引数
スローされる例外
ほとんどの場合、例で示されているように、基本的なエラー
KameleoonException のみを処理する必要があります。ただし、さまざまなタイプのエラーが応答を必要とする場合は、特定の要件に基づいて個別に処理してください。さらに、信頼性を向上させるために、一般的な言語エラーは Exception を含めることで処理できます。GetDataFile()
戻り値
訪問者データ
GetVisitorCode()
このメソッドは以前
ObtainVisitorCode と呼ばれていましたが、SDK バージョン 4.0.0 で削除されました。GetVisitorCode() メソッドを使用します。このメソッドは、フロントエンドとバックエンドのシステムが一貫してユーザーを識別する必要がある環境で重要です。仕組みは以下のとおりです:
- 現在の HTTP リクエストで kameleoonVisitorCode Cookie またはクエリパラメータをチェックします。見つかった場合は、それを訪問者識別子として使用し、次のステップをスキップします。
- Cookie やパラメータが見つからない場合は、新しい識別子をランダムに作成するか、defaultVisitorCode 引数が提供されていればそれを使用します。これにより、自分の識別子を訪問者コードとして使用し、追加のルックアップなしで Kameleoon の訪問者を自分のユーザーに簡単に接続できます。
- 識別子の値を使用して、サーバーサイドの kameleoonVisitorCode Cookie を設定します。メソッドはこの識別子の値を返します。
GetVisitorCode() メソッドを使用すると、訪問者に対して シミュレートされた バリエーションを設定できます。Cookie (リクエスト または ドキュメント から) にキー kameleoonSimulationFFData が含まれている場合、標準の評価プロセスはバイパスされます。代わりに、メソッドは提供されたデータに基づいて Variation を直接返します。シミュレーションは 2 つの方法で適用できます:- 自動的 (推奨): Kameleoon Web Experimentation または SDK を ハイブリッドモード で使用する場合、シミュレーションパネル を使用してバリアントの表示をシミュレートする際に Cookie が自動的に作成されます。
- 手動:
kameleoonSimulationFFDataCookie を手動で設定します。
- シミュレートバリエーション: 全体的な 機能フラグ の結果に影響します。
- 強制バリエーション: 個々の実験に固有のものです。
kameleoonSimulationFFData Cookie が以下の形式に従っていることを確認してください:kameleoonSimulationFFData={"featureKey":{"expId":10,"varId":20}}: 指定されたfeatureKeyに対して、実験expIdのvarIdを持つバリエーションをシミュレートします。kameleoonSimulationFFData={"featureKey":{"expId":0}}: 指定されたfeatureKeyに対して、デフォルトバリエーション (その後、本番の他のすべての人には次を提供する セクションで定義) をシミュレートします。
encodeURIComponent などのメソッドを使用して URI コンポーネントとしてエンコードする必要があります。引数
戻り値
スローされる例外
AddData()
AddData() メソッドは、他のメソッドが現在の訪問者をターゲットにするかどうかを決定するためにデータを使用できるように、ターゲティングデータ をストレージに追加します。
AddData() メソッドは値を返さず、独自に Kameleoon バックエンドサーバーと対話しません。代わりに、宣言されたすべてのデータは、Flush() メソッドを使用した将来の送信のために保存されます。このアプローチでは、データが通常 1 つのサーバー呼び出しにグループ化され、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() は、指定した キー を使用して、特定の siteCode (KameleoonClientFactory.create() で設定) のデータをリモートの Kameleoon サーバーから取得できるメソッドです。当社の Data API は、このデータを大量のデータを効率的に処理するように設計された当社のサーバーに保存しています。このメソッドはサーバー呼び出しを伴うため、非同期で動作することに注意してください。
引数
戻り値
スローされる例外
GetRemoteVisitorData()
GetRemoteVisitorData() は、VisitorCode を使用して特定のユーザーの Kameleoon 訪問データを取得するメソッドです。バックグラウンドで動作し、他のメソッドがターゲティングを決定するためにこのデータを保存します。
このデータは、いくつかの理由で重要です:
- 異なるデバイスから収集された情報を使用できます。
- 以前の訪問で訪問したページなど、ユーザーの履歴にアクセスできます。
- データレイヤー変数やフロントエンドでのみコンバージョンを追跡するゴールなど、クライアントサイドでのみ利用可能なデータを使用できます。
パラメータ
isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は、特殊な状況で役立ちます。例えば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッションマージを通じてその訪問者にリンクされた内部 ID を使用できる場合などです。引数
戻り値
スローされる例外
GetRemoteVisitorData() でのパラメータの使用
GetRemoteVisitorData() メソッドは、訪問者のデータを取得する際にさまざまなパラメータを定義できる柔軟性を提供します。ゴール、実験、またはバリエーションに基づいてターゲティングする場合でも、同じアプローチがすべてのデータ型に適用されます。
例えば、ゴール「Order transaction」を完了した訪問者のデータを取得したい場合、GetRemoteVisitorData() メソッド内でパラメータを指定してターゲティングを絞り込むことができます。例えば、最後の 5 回の訪問でゴールでコンバージョンしたユーザーのみをターゲットにしたい場合は、PreviousVisitAmount パラメータを 5 に設定し、Conversions を true に設定します。
この例で示された柔軟性はゴールデータに限定されません。GetRemoteVisitorData() メソッド内でパラメータを使用して、さまざまな訪問者の行動に関するデータを取得できます。
利用可能な
Kameleoon.Types.RemoteVisitorDataFilter オプションのリストは以下のとおりです:GetVisitorWarehouseAudience()
このメソッドは、指定されたvisitorCode と warehouseKey を使用して、データウェアハウスで訪問者に関連付けられたすべてのオーディエンスデータを取得します。warehouseKey は通常、内部ユーザー ID です。customDataIndex パラメータは、訪問者をターゲットにするために Kameleoon が使用する Kameleoon カスタムデータに対応します。追加の詳細については、ウェアハウスターゲティングのドキュメント を参照してください。このメソッドは CustomData オブジェクトを返し、データが訪問者に追加され、ターゲティングの目的で利用可能であることを確認します。
引数
戻り値
スローされる例外
SetLegalConsent()
このメソッドを使用して、訪問者が個人データの使用に法的同意を与えたかどうかを指定する必要があります。legalConsent パラメータを false に設定すると、トラッキングリクエストに含めることができるデータ型が制限されます。このメソッドは、訪問者データを責任を持って管理しながら、法律および規制要件を遵守するのに役立ちます。個人データの詳細については、同意管理ポリシー を参照してください。
引数
スローされる例外
同意撤回の動作
consent=false で setLegalConsent() を呼び出すと、SDK は kameleoonVisitorCode Cookie を削除しません。代わりに、Cookie の有効期限の延長を停止し、Cookie が自然に期限切れになるまで保持されるようにします。
コンプライアンス要件でオプトアウト時に Cookie ファイルを即座に削除する必要がある場合は、フレームワークのネイティブの Cookie 管理メソッドを使用して手動で削除する必要があります。SDK はファイルを自動的に削除しません。
ゴールとサードパーティ分析
TrackConversion()
- 📨 Kameleoon にトラッキングデータを送信します
visitorCode と goalId が必要です。また、このメソッドはオプションの revenue、negative、metadata 引数も受け取ります。visitorCode は通常、実験をトリガーしたときに使用したものと同じです。
TrackConversion() メソッドは値を返しません。このメソッドは、サーバー呼び出しが非同期に行われるため、非ブロッキングです。
パラメータ
isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は、訪問者に元々割り当てられた匿名の visitorCode にアクセスできないが、セッションマージ機能を使用して匿名の訪問者に接続された内部 ID にアクセスできる場合など、他のエッジケースシナリオでも役立ちます。引数
メタデータの値は、生データのエクスポート と 結果ページ からアクセスできます。
metadata パラメータが提供されている場合、Kameleoon は AddData() メソッドを使用して以前に収集された値ではなく、これらの指定された値を現在のコンバージョンに使用します。パラメータが省略された場合、Kameleoon はコンバージョン以前にトラッキングされた最後の値を、同じ訪問内で対応する CustomData に使用します。Kameleoon は、TrackConversion() メソッドのパラメータとして明示的に渡されたメタデータ値のみを考慮します。以下の例では、Kameleoon は、パラメータとして明示的に提供されたカスタムデータ値 (ここでは、インデックス 5 に値 ‘Amex Credit Card’) のみをコンバージョンに関連付けます。例外
GetEngineTrackingCode()
Kameleoon は、Mixpanel、Google Analytics 4、Segment などのいくつかの分析ソリューションと統合されています。サーバーサイドの実験を正しく追跡するには、訪問者が実験をトリガーした後にGetEngineTrackingCode() メソッドを呼び出します。SDK は、訪問者が過去 5 秒間にトリガーした実験の JavaScript キューコマンドを返します。このコードをページに挿入すると、Engine.js がコマンドを処理し、アクティブな分析統合を介して露出イベントを送信します。
このメソッドの実装の詳細については、ハイブリッド実験 を参照してください。
- この機能を使用するには、C# 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 がこれらの値を返されたトラッキングコードに生成します。引数
戻り値
イベント
UpdateConfigurationHandler()
UpdateConfigurationHandler() メソッドを使用すると、構成にデータの更新があったときのイベントを処理できます。1 つの入力パラメータ handler を取ります。リアルタイム構成イベントを使用して構成が更新されたときに呼び出されるハンドラです。
引数
データ型
SDK で利用可能なデータは、addData() メソッドなどを使用して追加されるまで、Kameleoon アプリでのターゲティングおよびレポートに利用できません。
詳細については、訪問履歴を使用してユーザーをターゲットにする を参照してください。
ハイブリッドモードの場合、
GetRemoteVisitorData() を呼び出して、Kameleoon が以前に収集したすべてのデータを自動的に入力できます。Kameleoon.Data.IData で以下のデータ型を利用できます。
Browser
ここに保存されるBrowser データセットは、それに関連する任意の値で実験およびパーソナライゼーションレポートをフィルタリングするために使用できます。
PageView
リファラのインデックス (ID) は、当社のバックオフィスの Acquisition チャネル構成ページで確認できます。注意: このインデックスは 0 から始まるため、特定のサイトに対して作成する最初の acquisition channel の ID は 1 ではなく 0 になります。
Conversion
ここに保存されるConversion データセットは、それに関連する任意のゴールで実験およびパーソナライゼーションレポートをフィルタリングするために使用できます。
CustomData
CustomData を使用すると、任意のタイプのデータを各訪問者に簡単に関連付けることができます。その後、セグメント のターゲティング条件として、または実験レポートのフィルタ/ブレークダウンとして使用できます。
カスタムデータの詳細については、この 記事 を参照してください。
-
各訪問者は、各一意の
indexに対して 1 つのCustomDataのみを許可されます。同じindexを持つ別のCustomDataを追加すると、既存のものが置き換えられます。 - カスタムデータの ‘index’ は、カスタムデータダッシュボード の「INDEX」列で確認できます。
- プライバシー上の理由により、SDK が選択されたインデックスのデータを Kameleoon サーバーに送信しないようにするには、カスタムデータを作成するときに このデータをターゲティングの目的のみにローカルで使用する オプションを有効にします。
-
SDK インスタンスの構成が最新でない場合、または名前が登録されていない場合に名前で作成された
CustomDataインスタンスを追加すると、データは無視されます。
Device
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 を追加すると、最初のものが上書きされます。Cookie
Cookie には、訪問者のデバイスに保存されている Cookie に関する情報が含まれます。
各訪問者は 1 つの
Cookie のみを持つことができます。2 番目の Cookie を追加すると、最初のものが上書きされます。Geolocation
Geolocation には、訪問者の位置情報の詳細が含まれます。
ApplicationVersion
ApplicationVersion はアプリケーションのセマンティックバージョン番号を表します。
戻り値の型
DataFile
DataFile には SDK 構成の詳細が含まれます。
クライアントが必要とする場合、追加情報で拡張できます。詳細が必要な場合は、カスタマーサクセスマネージャーにお問い合わせください。
Variation
Variation には、訪問者に割り当てられたバリエーション (または特定の割り当てが存在しない場合はデフォルトバリエーション) に関する情報が含まれます。
Variationオブジェクトは、割り当てられたバリエーションとそれに関連する実験の詳細を提供しますが、Variableオブジェクトはバリエーション内の各変数に関する特定の詳細を含みます。IdまたはExperimentIdがVariation.UndefinedIdになる可能性があるケースをコードで処理することを確認してください。これはデフォルトバリエーションを示します。- バリエーションに変数が関連付けられていない場合、
Variables辞書は空である可能性があります。
Variable
Variable には、割り当てられたバリエーションに関連付けられた変数に関する情報が含まれます。
非推奨メソッド
GetFeatureVariationKey()
- 📨 Kameleoon にトラッキングデータを送信します
GetFeatureVariationKey() を呼び出します。
代わりに
GetVariation() を使用してください。visitorCode を指定すると、GetFeatureVariationKey() メソッドはそれを一意の訪問者識別子として使用します。これは クロスデバイス実験 に役立ちます。visitorCode を指定し、isUniqueIdentifier パラメータを true に設定すると、SDK は指定された識別子に関連付けられた訪問者とフラッシュされたデータをリンクします。
パラメータ
isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は、特殊な状況で役立ちます。例えば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッションマージを通じてその訪問者にリンクされた内部 ID を使用できる場合などです。引数
戻り値
スローされる例外
GetActiveFeatureListForVisitor()
- 代わりに
GetActiveFeaturesを使用してください。 - このメソッドは以前
ObtainFeatureListForVisitorCode()と呼ばれていましたが、SDK バージョン4.0.0で削除されました。
visitorCode パラメータを取ります。指定された訪問者のアクティブな機能フラグのみを返します。
引数
戻り値
GetFeatureVariable()
- 📨 Kameleoon にトラッキングデータを送信します
代わりに
GetVariation() を使用してください。GetFeatureVariable() メソッドを呼び出します。
このメソッドは、ユーザーが特定の機能にアクセスできるかどうかを確認するために、visitorCode と featureKey (または featureID) を必要とします。
ユーザーがこの機能にリンクされたことがない場合、SDK はそれを有効化するかどうかをランダムに決定し、true (機能にアクセスできます) または false (アクセスできません) のいずれかを返します。指定された visitorCode を持つユーザーが既にこの機能にリンクされている場合、システムは featureFlag の以前の値を返します。
潜在的なエラーをキャッチするために、例に示されているように、コードに適切なエラー処理を含めるようにしてください。
visitorCode を指定すると、GetFeatureVariable() メソッドはそれを一意の訪問者識別子として使用します。これは クロスデバイス実験 に役立ちます。visitorCode を指定し、isUniqueIdentifier パラメータを true に設定すると、SDK は指定された識別子に関連付けられた訪問者とフラッシュされたデータをリンクします。
パラメータ
isUniqueIdentifier は非推奨です。代わりに UniqueIdentifier を使用してください。isUniqueIdentifier は、特殊な状況で役立ちます。例えば、訪問者に付与された匿名の visitorCode にアクセスできないが、セッションマージを通じてその訪問者にリンクされた内部 ID を使用できる場合などです。引数
戻り値
スローされる例外
GetActiveFeatures()
代わりに
GetVariations() を使用してください。GetActiveFeatures メソッドは、指定された訪問者コードで利用可能なアクティブな機能フラグに関する情報を取得します。
返されたバリエーションの
Kameleoon.Types.Variation.Id および Kameleoon.Types.Variation.ExperimentId プロパティはオプションです。指定しない場合、デフォルト値は Kameleoon.Types.Variation.UndefinedId です。引数
戻り値
スローされる例外
GetFeatureVariationVariables()
- 代わりに
GetVariation()を使用してください。 - このメソッドは以前
GetFeatureAllVariables()と呼ばれていましたが、SDK バージョン4.0.0で削除されました。
featureKey と variationKey の 2 つの入力パラメータを取ります。Web インターフェースで定義されているように、Dictionary<string, object> 型のデータを返します。要求された機能が SDK の内部構成で見つからなかった場合、例外 (KameleoonException.FeatureNotFound) をスローします。