メインコンテンツへスキップ
Kameleoonは、お客様からよく寄せられる質問でこのリストを定期的に更新しています。
ウェブサイトが標準の Content-Security-Policy (CSP) HTTPヘッダー経由でリソース(スクリプト、画像、メディア、CSS)の読み込みを制限している場合は、Kameleoon のリソースを読み込めるようにサイトの CSP を更新してください。

簡単なセットアップ(ワイルドカード使用)

script-src は常に default-src よりも優先されます。CSP で既に完全なセットアップを使用している場合は、このセットアップを使用しないでください。
CSP ヘッダー設定に以下の内容を追加します:

完全なセットアップ(詳細版)

Kameleoonは製品に新しい機能を定期的に追加しているため、追加のURLが発生する可能性があります。CSPヘッダーには、可能なすべてのホストとリソースタイプ(スクリプト、画像など)を明示的にリストしてください。
各行の [your-site-code] を Kameleoon の サイトコード に置き換えて、これを設定に追加します:
CSP ポリシー内の各 URL には特定の目的があります:
Web Experimentation
  • https://[your-site-code].kameleoon.xx: Kameleoon Web Experimentation アプリケーションスクリプト、engine.js(旧名: kameleoon.js)を読み込みます。
  • https://(eu|na)-data.kameleoon.(eu|io): トラッキングに使用されます。
  • https://logger.kameleoon.io: ロギング用にトラッキングデータを送信します。
  • https://data.kameleoon.net: Kameleoon Simulation ツールを使用して複数のサブドメインにわたって実験を QA する場合に必要です。
Feature Experimentation(クライアントサイド SDK)
  • https://client-config.kameleoon.com: SDK バージョン < 2.1.0 で必要です。
  • https://sdk-config.kameleoon.eu: SDK バージョン >= 2.1.0 で必要です。
  • https://(eu|na)-data.kameleoon.(eu|io): トラッキングに使用されます。
  • https://logger.kameleoon.io: ロギング用にトラッキングデータを送信します。
グラフィックエディタ
  • https://static.kameleoon.com: (非推奨)旧グラフィックエディタの静的リソースを読み込みます。
  • https://editor.kameleoon.com: (非推奨)旧グラフィックエディタで使用されます。
  • https://graphical-editor.kameleoon.com: 新しいグラフィックエディタで使用されます。
  • https://storage.kameleoon.(eu|io): グラフィックエディタで作成された実験で使用される画像を読み込みます。
Prompt-Based Experimentation (PBX)
  • https://aibuilder.kameleoon.com: プロンプトベースエディタで使用されます。
  • https://electra.kameleoon.com: プロンプトベースエディタで使用されます。
  • https://storage.kameleoon.(eu|io): プロンプトベースエディタで画像を読み込みます。
  • https://api.kameleoon.com: アカウント関連の情報を読み込みます。
  • https://sdk-config.kameleoon.eu: プロンプトベースエディタで有効化された Kameleoon フィーチャーフラグを制御します。
  • wss://electra.kameleoon.com : データ交換に使用されます。
シミュレーション
  • https://api.kameleoon.com: 旧シミュレーションで使用されます。
  • https://simulation.kameleoon.com: 新しいシミュレーションで使用されます。
商品レコメンデーション
  • https://static.products.kameleoon.com: 商品レコメンデーションモジュールのリソースを読み込みます。
  • https://api.products.kameleoon.com: 商品レコメンデーションモジュールで使用される API。
  • https://images.products.kameleoon.com: レコメンデーション用の商品画像を読み込みます。
API & 統合
  • https://api.kameleoon.com: ブラウザから直接テストするために Automation API を使用する場合に必要です。
  • https://customers.kameleoon.com: SDK API または Kameleoon が開発したカスタム統合を使用する場合に必要です。
内部リソース
デフォルトでは、engine.js にはスクリプトサイズを最小化するためにシミュレーションパスやアプリケーション固有の情報は含まれていません。これらの詳細を提供するには、内部リソースと読み込み指示に必要なデータを engine.js に供給するフルスクリプト kameleoonFull.js を読み込んでください。
  • https://static.kameleoon.com: 内部リソースを読み込みます。
  • https://static.experimentation.dev: 内部リソースを読み込みます。
  • https://sdk-config.experimentation.dev: Kameleoon 製品で有効化された Kameleoon フィーチャーフラグを制御します。
  • https://eu-data.experimentation.dev: ロギング用にトラッキングデータを送信します。
Kameleoon スクリプト用のドメイン https://[your-site-code].kameleoon.xx はプロジェクトによって異なる場合があります。プロジェクトは作成日に応じて kameleoon.eu または kameleoon.io のいずれかを使用します。プロジェクトの Kameleoon App に表示されているドメインを使用してください。
いいえ。Kameleoon のスクリプトは最先端のテクノロジーを使用して非同期的に実行され(非同期インストールスニペットを使用している場合)、ブラウザによって90分間完全にキャッシュされます。まれな CDN インシデント(99.99%の稼働時間)の際でもページの読み込みをブロックすることはありません。4G接続またはそれ以上のネットワーク条件で、平均してスクリプトは70ms未満で読み込まれます。Kameleoon はさらに、TypeScript と Brotli を組み合わせた高度な圧縮技術により、ベーススクリプトサイズをわずか28.4 KB に抑えています。

CDN 配信とスケーラビリティ

engine.js スクリプトは Cloudflare CDN を介して配信されるため、ウェブサイトのトラフィック量に関係なく自動的にスケールします。どのトラフィックレベルでも読み込みや遅延の問題はありません。Cloudflare のグローバルネットワークが配信を処理するため、スパイクや持続的な高トラフィックが訪問者のスクリプトパフォーマンスに影響することはありません。

キャッシュ

デフォルトでは、ブラウザは engine.js を90分間キャッシュし、リピーター訪問者の再読み込み時間を最小化します。ユースケースでより短いキャッシュ期間が必要な場合は、リクエストにより最短1分まで短縮できます。アカウントの設定を変更するには Kameleoon サポートにお問い合わせ ください。

重要な考慮事項

スクリプトサイズは実行する実験の数とその内容(CSS/JavaScript)によって増加することがあります。すぐに読み込む必要のない実験やパーソナライゼーションキャンペーンには、“DELAYED” タグ を使用してください。これにより、最初のページ読み込み後まで重要でない実験の読み込みを遅延させます。Kameleoon はこれらを賢く管理します。アイドル時間が10秒経過した後、または訪問者がターゲットされ、コントロール以外のバリエーションが割り当てられたときにのみ設定をダウンロードします。このアプローチにより、優先順位の高い実験の完全な機能を提供しつつ、読み込みパフォーマンスへの影響を最小限に抑えます。

Web Experimentation(engine.js)

engine.js は、約 500 ms ごとに実行される内部キューを通じて送信リクエストを処理します。キューはイベントをバッチにまとめ、必要に応じて追加のバッチを再帰的に送信します。ページのアンロードまたはクリーンアップ時に、エンジンはキューに残っているすべてのイベントを強制的に即時処理します。Safari では、データ損失を防ぐために未送信のイベントをセッションストレージに保持します。また、エンジンはスクロールまたはクリックが検出されると 60 秒ごとにアクティビティイベントを送信します。アクティビティが検出されない場合、エンジンは追加のトラッキングコールを行いません。

Feature Experimentation(SDK)

フィーチャーフラグおよび SDK のユースケースでは、Kameleoon は初期化後にフラグの評価をローカルで実行します。Data API へのトラッキングリクエストは、評価ごとに個別に送信されるのではなく、バックグラウンドでバッチ処理されてフラッシュされます。バッチ処理によりリクエスト量が削減され、トラフィックスパイク時のパフォーマンス低下を防ぎます。フラッシュ間隔は SDK で設定可能で、デフォルトは 1 秒です。

Data API のレート制限

Kameleoon はサービスの信頼性を保護するために、Data API にレート制限を適用しています。制限は、契約上の月間ユニークビジター数(MUV)とリクエスト元の IP アドレスに基づいています。制限を超えた場合、API は HTTP 429 を返します。これらの制限は、Data API に到達するすべてのリクエストに適用されます。これには、engine.js が自動的に送信するトラッキングコールと、Feature Experimentation SDK が送信するバッチ処理されたトラッキングリクエストが含まれます。多くの訪問者が同じ IP アドレスを共有している環境(オフィスや企業ネットワークなど)では、全体の MUV が契約の範囲内であっても、IP ベースの制限が適用される場合があります。サーバーサイドの統合では、リクエストを認証することで IP ベースの制限を解除できます。ユースケースでより高い制限が必要な場合は、Kameleoon サポートにお問い合わせください。レート制限はプロジェクト単位ではなく、顧客アカウント全体に適用されます。1つのプロジェクトが過剰なリクエストを生成した場合(例えば、実装の誤りによりカスタムデータイベントを繰り返し送信するループが発生した場合)、そのプロジェクトがアカウント全体で共有されている制限を消費し、他のすべてのプロジェクトで HTTP 429 エラーが発生する可能性があります。予期しないトラフィックを生成しているプロジェクトを特定するには、Live events ページ(Insights > Live events)を使用してください。各プロジェクトを順番に選択し、過去1時間または24時間のイベント数を期待される量と比較します。訪問者数に比べてイベント数が著しく多いプロジェクト(例えば、100,000 MUV 契約に対して数千万のイベント)が原因である可能性が高いです。イベントをタイプでフィルタリングして原因を特定してください:カスタムデータイベントが最も一般的な原因で、設定が誤ったループがページの読み込みごとに同じカスタムデータ変数、またはすべてのカスタムデータ変数を送信していることが多いです。

プラットフォームのスケーラビリティ

Kameleoon プラットフォームは、水平スケーリング、オートスケーリングインフラ、ロードバランシング、および定期的な負荷テストとストレステストを活用しています。詳細については、Kameleoon のプラットフォームはどのようにスケーラビリティと弾力性をサポートしていますか? をご覧ください。
Kameleoon の JavaScript エンジンは、ページのバリエーションを実装する際に、カスタムデータやカスタム JavaScript などのカスタムコードを Kameleoon に追加するために eval() 関数を必要とします。eval() 関数により、Kameleoon はこのカスタムコードを実行時に動的に実行できます。eval() 関数の使用を妨げる Content Security Policy (CSP) ディレクティブを使用している場合は、Kameleoon インストールタグの前に以下の JavaScript スニペットを実装してください:
CSP が eval() をブロックしている場合、コードスニペットを実装してもこれらの制限が解除されることはありません。完全な機能を保証するには、関連する CSP ディレクティブを調整して eval() または類似の関数を許可してください。そうしないと、Kameleoon の特定の高度なターゲティングまたはカスタマイズ機能はブラウザのセキュリティ強制によりアクセスできないままになります。
Kameleoon グラフィックエディタ(シミュレーションパネルを含む)も eval() 関数を必要とします。ただし、Kameleoon Chrome 拡張機能をインストールし、Dev Tools > Tag injection > Bypass policies 設定を有効にしてポリシーをローカルで上書きすることで、この要件を回避できます。また、サイトコードも提供する必要があります。Bypass policies 設定を有効にすると、Chrome ブラウザでグラフィックエディタを使用できます。
Chrome 拡張機能の Bypass policies 設定
CSP ディレクティブが eval() 関数をブロックしている場合、Kameleoon の一部の機能は使用できません。これらの制限は、FAQ で言及されているコードスニペットや回避策を使用しても適用されます。CSP が明示的に eval() を許可しない限り、以下の機能は使用できないままになります:
  • カスタム JavaScript 条件でセグメントをターゲティングする(条件が非同期で実行される 場合にのみサポート)。
ターゲティング条件の非同期設定
  • カスタム JavaScript コードでカスタムデータを使用する。
  • カスタム JavaScript コードで取得チャネルを使用する。
はい、Kameleoon はこの高度なオプションを提供しています。サーバーで受信したすべての HTTP リクエストを (eu|na)-data.kameleoon.(eu|io) に転送してください。たとえば、トラッキングドメインとして tracking.yourdomain.com を選択した場合、トラッキングリクエストは tracking.yourdomain.com への POST になります。サーバーはその後、必要なすべてのデータとパラメータとともにリクエストを (eu|na)-data.kameleoon.(eu|io) ホストに転送する必要があります。このオプションを有効にするには、Customer Success Manager にお問い合わせください。
(eu|na)-data.kameleoon.(eu|io) にリクエストを転送する際は、リクエストURLを (eu|na)-data.kameleoon.(eu|io) に書き換えてください。元の Host: HTTPヘッダーをあなたのドメインに設定したまま転送するだけでは不十分です。Host: ヘッダーを (eu|na)-data.kameleoon.(eu|io) に設定してください。
残念ながら、できません。SRI は有用なセキュリティ機能を提供しますが、Kameleoon アプリケーションファイルは時間とともに変化します。もし変化しなかった場合、再デプロイなしで実験を即座に開始・停止するなどの機能は不可能になります。ファイルの内容が変わるため、リソースハッシュも変わります。つまり SRI は使用できません。そうでなければ、サーバー上で更新されるとすぐにブラウザがリソースをブロックしてしまうでしょう。
これは Firefoxの既知のバグ です。Firefox チームが修正するまでは、以下の回避策に従ってください: リンクされた CSS リソースの後に <script> タグ(ほぼ空でも)が続くようにしてください。例:
これにより、ちらつき効果が完全に解消されます。
Kameleoon スクリプトは既に短く、ミニファイ版を使用してもページ読み込み時間に大きな影響はありません。コードは既に Brotli または Gzip で圧縮されているためです。Kameleoon はミニファイ版を推奨していませんが、必要な場合は以下に用意されています。

アンチフリッカー付き非同期読み込み

サブドメイン間でセッションデータを統合する

同期タグまたはアンチフリッカーなしの非同期タグのいずれかで サブドメイン間でセッションデータを統合する ために統合セッションデータタグを使用する場合:
アンチフリッカー付き非同期タグと統合セッションデータタグを使用する場合は、以下の順序で3つのスクリプトタグを追加してください:
  1. アンチフリッカー付き非同期タグ。
  2. 統合セッションデータタグ。
  3. Kameleoon インストールタグ。
インストールタグを変更しないでください。それらのコードは広範囲にテストおよび最適化されています。変更すると動作しないセットアップになる可能性があります。インストールタグの変更が必要な場合は、Kameleoon カスタマーサクセスマネージャーに連絡して開発者と調整してください。独自に変更を試みないでください。
インストールタグを独自の別の外部スクリプトに含めないでください。たとえば、以下のようなことは絶対に行わないでください:
技術的には機能するかもしれませんが、Kameleoon のパフォーマンスに大きく影響し、目立つちらつき効果が発生します。このセットアップは、関連する利点なしにタグマネージャーを使用する問題を引き起こします。
はい、データが保存されているパーティションを暗号化できます。このオプションには追加のセットアップコストが必要です。詳細については、Customer Success Manager にお問い合わせください。
はい、重要でない実験を最初のページ読み込み後まで遅延させることができます。実験を遅延させるには、遅延したい実験に DELAYED タグを追加してください。詳細については、タグの管理 のドキュメントを参照してください。Kameleoon は「DELAYED」タグが付けられた実験をインテリジェントに管理します。アイドル時間が10秒経過した後、または訪問者がターゲットされコントロール以外のバリエーションが割り当てられたときにのみ設定をダウンロードします。リソース集約的なテストを遅延させて、最高のユーザー体験を提供することに集中してください。
Kameleoon のプラットフォームは、データ量が増加しても最適なパフォーマンスを維持できるよう、高いスケーラビリティと弾力性を提供します。プラットフォームは1秒あたり平均20,000クエリの負荷を処理し、ピーク時には最大100,000クエリまで対応します。主な要素は以下のとおりです:
  • スケーラブルなアーキテクチャ: 分散型でモジュラーなアーキテクチャにより水平スケーリングが可能です。
  • オートスケーリングインフラ: クラウドベースのインフラが計算リソースを自動的にスケーリングします。
  • ロードバランシング: 高度な技術によりサーバー間にトラフィックを均等に分散します。
  • データの取り込みと処理: 堅牢な API とデータブローカーが大量のデータを効率的に管理します。
  • スケーラビリティのテスト: 定期的な負荷とストレステストにより、システムが極端な状況に対応できることを保証します。
  • 弾力的なデータストレージ: マルチ階層型ストレージにより、データへの迅速なアクセスと長期的なスケーラビリティが可能です。
Kameleoon はデータフローアーキテクチャで以下の NoSQL データベースと技術を使用しています:
  • Hadoop File System(Spark と併用)
  • Cassandra
  • ClickHouse
  • Kafka
Kameleoon エンジンは、シームレスな機能を保証するためにいくつかのネットワークリクエストを開始します:

Segments Request

  • 目的: 訪問者によってターゲットされたセグメントのイベントを収集します。
  • エンドポイント: https://${SITECODE}.kameleoon.io/audiences/segments.js
  • メソッド: GET
  • : ブラウザはファイルを90分間キャッシュします。

Live-update Experiments Configuration Request

  • 目的: LIVE-UPDATE タグ付き実験の設定を取得します。
  • エンドポイント: https://${SITECODE}.kameleoon.io/live-experiments/config.js
  • メソッド: GET
  • : ブラウザはファイルを2分間キャッシュします。

Deferred Experiment Variation Request

  • 目的: DELAYED タグ付き実験 のバリエーションデータを読み込みます。
  • エンドポイント: https://${SITECODE}.kameleoon.io/experiments/${action.id}/variations/${variationId}.js
  • メソッド: GET
  • : ブラウザはファイルを30日間キャッシュします。

Deferred Personalization Variation Request

  • 目的: DELAYED タグ付きパーソナライゼーション のバリエーションデータを読み込みます。
  • エンドポイント: https://${SITECODE}.kameleoon.io/personalizations/${action.id}/variations/${variationId}.js
  • メソッド: GET
  • : ブラウザはファイルを30日間キャッシュします。

Previous Visits Request

Tracking Events Request

  • 目的: 訪問中の イベント を記録します。
  • エンドポイント: https://(eu|na)-data.kameleoon.(eu|io)/visit/events
  • メソッド: POST
Kameleoon は、スクロールやクリックが発生したときに60秒ごとにイベントを送信します。これにより、正確なセッション長のトラッキングが保証されます。エンジンがアクティビティを検出しない場合、追加のトラッキング呼び出しは行われません。

IP address Request

  • 目的: IPアドレスに基づく訪問者の除外/含有を可能にします。
  • エンドポイント: https://(eu|na)-data.kameleoon.(eu|io)/ip
  • メソッド: GET
  • : Kameleoon は IP をデータベースに保存しません。訪問者のブラウザは比較目的でのみ IP を使用します。

Geolocation Request

  • 目的: ターゲティングと分析のためのジオロケーションデータを取得します。
  • エンドポイント: https://(eu|na)-data.kameleoon.(eu|io)/geolocation
  • メソッド: GET

Current Weather Request

  • 目的: 現在の天気状況を返します。
  • エンドポイント: https://(eu|na)-data.kameleoon.(eu|io)/weather/weather
  • メソッド: GET

Weather Forecast Request

  • 目的: 5日間の天気予報を返します。
  • エンドポイント: https://(eu|na)-data.kameleoon.(eu|io)/weather/forecast
  • メソッド: GET

Kameleoon Script Detection Request

  • 目的: Kameleoon スクリプトの実装状態を検出します。
  • エンドポイント: https://(eu|na)-data.kameleoon.(eu|io)/active-script/event
  • メソッド: POST

Products Request

  • 目的: ターゲティングとレコメンデーションのための商品イベントを収集します。
  • エンドポイント: https://(eu|na)-data.kameleoon.(eu|io)/product/events
  • メソッド: POST

Kameleoon Conversion Scores Request

  • 目的: ターゲティング用の予測スコアを取得します。
  • エンドポイント: https://(eu|na)-data.kameleoon.(eu|io)/predict/latestPredictionScoreHistograms
  • メソッド: GET
Kameleoonの標準サービスはマルチテナントSaaSアーキテクチャで運用されています。お客様のデータは他のテナントとインフラを共有しますが、ロールベースのアクセス制御、環境の分離、および地域ベースのホスティングによって、他のすべてのお客様のデータから論理的に分離されています。他のテナントがお客様のデータにアクセスすることはできません。セキュリティ要件として物理的な分離が必要な場合、Kameleoonはシングルテナントアーキテクチャオプションを提供しています。契約締結前にシングルテナントホスティングについて相談するには、Kameleoonのカスタマーサクセスマネージャーにお問い合わせください。
Kameleoonは、最小権限の原則に基づくロールベースのアクセスモデルによって、従業員によるお客様アカウントへのアクセスを管理しています。従業員がアクセス権を付与されるのは、サービス提供、サポート、トラブルシューティング、セキュリティ運用、またはインシデント対応など、正当な業務上の必要性がある場合に限られます。お客様のアカウントへのアクセスはKameleoon社内で広く利用可能なわけではなく、文書化された必要性を持つ承認された担当者のみがアクセスできます。

お客様のアカウントにアクセスできる担当者

承認されたアクセスには、お客様のアカウントに割り当てられたサポートまたはサービス担当者が含まれる場合があります。本番環境レベルのアクセスは、特別に承認された技術担当者に限定されています。本番システムへのすべてのアクセスには多要素認証(MFA)が必要であり、定期的なレビューの対象となります。

従業員がお客様のアカウント内で行えること

Kameleoonの従業員はお客様のアカウント内で制限なく操作することはできません。ロールベースの権限、環境の分離、およびテナントレベルの認可制御によってすべての活動が制限されます。すべてのアクセスおよび管理操作はログに記録され、監査可能です。