> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# FAQ

> このリストは、お客様からよく寄せられる質問を定期的に更新しています。

<AccordionGroup>
  <Accordion title="Web SDK と Kameleoon Application スクリプトの機能の違いは何ですか？">
    グラフィックエディターまたはコードエディターで作成した Web 実験には Kameleoon Application スクリプトを使用してください。フィーチャーフラグおよびフィーチャー実験には Web SDK を使用してください。

    Kameleoon はハイブリッドモードで実行できることに注意してください。ハイブリッドモードでは、Web SDK と Kameleoon JavaScript アプリケーションファイルの両方を使用します。ハイブリッドモードでは、個々のタスクに対して最適なアプローチを使用できます。たとえば、バリエーションの実装とデプロイはサーバーサイドの方が容易で、トラッキングは JavaScript ファイルでより効果的に実行できます。
  </Accordion>

  <Accordion title="SDK の初期化にはどのくらいかかりますか？">
    Kameleoon は初期化中に CDN サーバーを使用します。設定が受信され、キャッシュされると、取得と更新は迅速に行われます（最も近い CDN からのサーバーのレイテンシによりますが、50〜70 ms）。
  </Accordion>

  <Accordion title="SDK の設定はサーバーとどのように同期されますか？">
    設定を取得する方法は 2 つあります：[ポーリング](./technical-considerations#ポーリング（デフォルト）) と [ストリーミング](./technical-considerations#streaming-premium-option-premium-option) です。
  </Accordion>

  <Accordion title="ストリーミング方式はどのような技術を使用していますか？">
    [Server Side Events](https://en.wikipedia.org/wiki/Server-sent_events)（SSE または EventSource）プロトコルが使用されます。
  </Accordion>

  <Accordion title="Kameleoon CDN は、いつ SDK に新しい設定を提供しますか？">
    CDN は、フィーチャーフラグの設定を更新するたび（たとえば、バリエーション、トラフィック公開、ターゲティングなど）、または 24 時間ごとにパージされます。
  </Accordion>

  <Accordion title="ホワイトリスト化が必要な Kameleoon ドメインは何ですか？">
    クライアントサイド SDK を使用しており、Web サイトが標準の Content-Security-Policy (CSP) HTTP ヘッダーを介してリソース（スクリプト、画像、メディア、CSS）の読み込みを制限している場合は、サイトの CSP を更新して Kameleoon リソースの読み込みを許可してください。

    ```
    script-src https://[your-site-code].kameleoon.io https://[your-site-code].kameleoon.eu https://client-config.kameleoon.com https://sdk-config.kameleoon.eu https://*.experimentation.dev 'unsafe-eval';
    connect-src https://[your-site-code].kameleoon.io https://[your-site-code].kameleoon.eu https://eu-data.kameleoon.eu https://eu-data.kameleoon.io https://na-data.kameleoon.eu https://na-data.kameleoon.io https://editor.kameleoon.com https://api.kameleoon.com https://customers.kameleoon.com https://logger.kameleoon.io https://client-config.kameleoon.com https://sdk-config.kameleoon.eu https://*.experimentation.dev;
    ```

    <Note>
      Kameleoon を [ハイブリッドモード](../get-started/hybrid-experimentation) で使用している場合、Kameleoon スクリプトのドメイン `https://[your-site-code].kameleoon.xx` はプロジェクトごとに異なる可能性があります。プロジェクトは作成日に応じて `kameleoon.eu` または `kameleoon.io` のいずれかでホストされている場合があります。Kameleoon アプリのプロジェクトに表示されるドメインを使用していることを確認してください。\[your-site-code] を、それが表示される各行の Kameleoon の [サイトコード](/user-manual/faq#how-do-i-find-my-sitecode) に置き換え、これを設定に追加してください。
    </Note>
  </Accordion>

  <Accordion title="サーバーに複数のインスタンスがある場合、SDK をどのように設定しますか？">
    各サーバーインスタンスにはそれぞれメモリがあるため、収集されたすべての訪問者データはそのインスタンスに保存されます。同じ訪問者からのリクエストが同じサーバーインスタンスで処理されるフレームワークを使用する必要があります。そうでない場合、訪問者データは各トラッキングリクエスト前に完全に追加するか、`getRemoteVisitorData` メソッドを使用してロードする必要があります。

    問題が SDK 設定の違いにある場合は、[ストリーミング](./technical-considerations#streaming-premium-option-premium-option) オプションを使用してください。
  </Accordion>

  <Accordion title="バリエーション割り当て/トラフィック配分はローカルで行われますか、それともサーバーで行われますか？">
    すべての評価はレイテンシを排除するためにローカルで行われます。トラッキングリクエストはその後、非同期に Kameleoon の Data API サーバーに送信されます。
  </Accordion>

  <Accordion title="SDK は訪問者が同じバリエーションに公開されることをどのように保証しますか？">
    訪問者を実験のバリエーションに割り当てるため、Kameleoon はまず訪問者コード、実験 ID、および再プール時の追加要素を使用して識別子を構築します。次に、ハッシュ関数 [SHA-256](https://project.kameleoon.net/issues/256) の同期実装が、この識別子のハッシュを計算します。ハッシュ化を通じて得られた整数は、その後ゼロから 1 までの浮動小数点数にマッピングされ、実験のバリエーションに割り当てられます。[SHA-256](https://project.kameleoon.net/issues/256) 関数は決定論的であるため、同じユーザー（同じ訪問者コード）は、割り当ての再計算が明示的に要求されない限り、常に実験の同じバリエーションに割り当てられます。
  </Accordion>

  <Accordion title="フィーチャーフラグシミュレーションで特定のバリエーションを最初に表示するにはどうすればよいですか？">
    [こちら](/user-manual/experimentation/feature-experimentation/use-cases/build-whitelists-to-rollout-a-feature-for-internal-users) で詳しく説明されている方法に従ってください。
  </Accordion>

  <Accordion title="トラフィック配分/公開を変更した場合、訪問者は割り当てられたバリエーションを引き続き見ることができますか？">
    すべての可能なケースについては、この [記事](/user-manual/experimentation/feature-experimentation/using-the-rollout-planner/rules-and-targeting/add-a-new-rollout-rule#user-targeting-and-bucketing) で説明されています。
  </Accordion>

  <Accordion title="結果ページに訪問が表示されないのはなぜですか？">
    結果ページにデータが表示されない理由はいくつかあります：

    * プロジェクト設定でボットフィルタリングを有効にしている場合、SDK で設定されているユーザーエージェントの値にエラーが発生している可能性があります。詳細については [この記事](/user-manual/faq#how-does-kameleoon-filter-bot-traffic-from-my-results) をご覧ください。
    * プロジェクト設定で Legal Consent が **必須** に設定されているが、setLegalConsent SDK メソッドが呼び出されていない。詳細については [このドキュメント](/user-manual/project-management/consent-management-policy#for-web-experiments-/-feature-experiments-/-hybrid-experiments) をご覧ください。
    * Kameleoon サーバーにトラッキングリクエストを送信する SDK メソッドが一つも使用されていない。

    問題のデバッグの追加ヘルプについては、[次の記事](/ja/user-manual/experiment-analytics/analyze-results/feature-flag-results/analyze-a-feature-flags-overall-results) をご覧ください。
  </Accordion>

  <Accordion title="訪問数が実際のトラフィックと一致しないのはなぜですか？">
    訪問者からの訪問数が多い場合、それらはボットである可能性があります。ボットが実験に影響を与えるのを防ぐため、プロジェクト設定で [ボットフィルタリングオプション](/user-manual/faq#how-does-kameleoon-filter-bot-traffic-from-my-results) を有効化してください。訪問者がボットではないことを示すには、SDK メソッドを使用して Kameleoon の UserAgent データを渡す必要があります。メソッドを呼び出すと、Kameleoon がユーザーをフィルタリングするのを防ぎます。
  </Accordion>

  <Accordion title="レポートの訪問者割り当てが正しくないのはなぜですか？">
    レポートに予期しない割り当て（たとえば、50/50 ではなく 10/90）が表示されたり、訪問者が欠落している場合、以下のいずれかが原因である可能性があります：

    * **特定のバリエーションに対する訪問者プールの絞り込み:** まず `getVariations(onlyActive: true, track: false)` を呼び出すと、SDK はアクティブな（`ON`）バリエーションに割り当てられた訪問者のみを返します。次に、これらの特定の訪問者にのみ実験ページを表示し、`getVariation(track: true)` を呼び出すと、Kameleoon は `ON` バリエーションのみを追跡し、結果として 1 つのバリエーションのみを示すレポートになります。
    * **トラッキングリクエストのための時間不足:** Kameleoon は特定の間隔でデータを送信します。訪問者が `ON` バリエーションの Kameleoon クライアントが統合されているページに滞在し、その後 `OFF` バリエーション用のクライアントがないページに移動した場合、クライアントは `OFF` バリエーションのトラッキングリクエストを送信する時間が足りない可能性があります。
    * **特定のバリエーションの設定漏れ:** 一部のバリエーションで `UserAgent` または `setLegalConsent` が省略されている可能性があります。たとえば、`ON` バリエーションのページでのみ同意を与える場合、Kameleoon は `OFF` バリエーションの訪問者を追跡できません。
    * **訪問者データの欠落:** SDK は訪問者データを自動的に収集しません。ターゲティングとトラッキングが正しく機能するように、明示的に追加する必要があります。

    ### ターゲティング設定の確認

    ターゲティングに問題があると思われる場合、以下の手順に従ってください：

    1. 100% の公開で非ターゲティングルールを作成し、希望するバリエーションを割り当てます。
    2. ターゲティングを追加し、ユーザーがバリエーションを受け取らないことを確認します。
    3. 必要な Kameleoon データを追加します。

    ユーザーはバリエーションを再び受け取るはずです。これが失敗する場合、問題を切り分けるためにより単純なターゲティング条件を試してみてください。
  </Accordion>

  <Accordion title="addData() を使用すると、データはターゲティングですぐに利用可能になりますか？">
    はい、データはすぐにターゲティングで利用可能になります。サーバーベースの SDK では訪問者セッション中、クライアントベースの SDK（モバイルと Web）では設定された有効期間中、データは利用可能です。
  </Accordion>

  <Accordion title="データはどこに保存されますか？">
    SDK の種類によって異なります。

    サーバー SDK では、訪問者のデータは訪問者のセッション中、稼働メモリに保存されます。デフォルトは 30 分ですが、セッションの長さは設定可能です。

    <Note>
      sessionDuration パラメーターを使用してセッション期間が長いほど、SDK がメモリに保持するデータが多くなります。データが多いほど消費量が増加します。訪問者が連絡されるたびにセッションは追加で 30 分延長されます。したがって、SDK は最後のリクエストから少なくとも 30 分間はデータが削除されないことを保証します。
    </Note>

    クライアント SDK（モバイルおよび Web）では、データはローカルストレージ（Web では LocalStorage）に保存されます。データは永続的に保存できますが、[dataExpirationInterval または targetingDataCleanupInterval](../../sdks/web-sdks/js-sdk#configuration-parameters) パラメーターを使用してデータの有効期限を設定でき、その後データは削除されます。
  </Accordion>

  <Accordion title="データをフラッシュする良いタイミングはいつですか？">
    一般的に、「flush」メソッドを手動で呼び出す必要はありません：データは他の [SDK メソッド](#which-methods-trigger-http-requests-are-they-synchronous-or-asynchronous) への呼び出しと一緒に送信されます。ただし、訪問者のフィーチャーフラグをトリガーせずに Data API にデータを送信する必要がある場合は、「flush」メソッドを使用してください。
  </Accordion>

  <Accordion title="以前に収集したデータをターゲティングに使用するにはどうすればよいですか？">
    サーバーベースの SDK では、データは訪問者のセッション中に保存されます。ユーザーのセッションが期限切れになっていなければ、リクエストごとにデータをロードする必要はありません。モバイル SDK では、データは永続的に保存されます（または設定に従います）。

    ユーザーセッションがアクティブでなくなった場合、または訪問者がクライアント SDK 内でデバイス間を移動している場合は、適切なパラメーターで `getRemoteVisitorData` メソッドを呼び出して、Data API に送信されたデータを取得します。ロード後、データは訪問者のターゲティングに含まれます。
  </Accordion>

  <Accordion title="実験でデータが収集されないのはなぜですか？">
    <Warning>
      Legal Consent が有効になっている場合、データは訪問者の同意がある場合のみ収集できます。
    </Warning>

    Experiment ルールを使用しているにもかかわらず、訪問者の統計を受信していない場合は、以下を確認してください：

    * **[Kameleoon アプリ](https://app.kameleoon.com) で**

      * ルールが正しい環境（production、staging、または development）に対して作成されている。
      * ルールが有効化されている（オン）。
      * ルールが実際に公開可能なトラフィックをターゲットにしている。
      * プロジェクトでボットフィルタリングが有効になっている場合、[ユーザーエージェントをフィルターに追加](/user-manual/faq#how-does-kameleoon-filter-bot-traffic-from-my-results) する。

    * **SDK で**

      * KameleoonClient が正しい設定（siteCode、environment 変数、該当する場合は networkDomain）で作成されている。
      * getVisitorCode は一度だけ呼び出され、その値は visitorCode が必要なすべての場所で再利用されている。
      * ハイブリッドモード（フロントで engine.js）を使用する場合、visitorCode がフロントエンドと正しく同期されている。
      * Experiment ルールの場合、データ収集が許可されていることを確認するため setLegalConsent(true) が呼び出されている。
      * Delivery ルールの場合、isFeatureActive()（または getVariation()）が呼び出され、true（または期待されるバリエーション）を返している。
      * Experiment ルールの場合、getVariation() が呼び出され、期待されるバリエーションを返している。

    * **デバッグのヒント**

      * コンソールにログ出力する：同意の値、visitorCode、バリエーションの値。これらがブラウザに表示されている値と一致するか確認する。
      * SDK ロギングを有効にして、エラーがないか確認する。
  </Accordion>

  <Accordion title="送信に同意が必要なデータは何ですか？">
    GDPR ルールに従い、訪問者の同意がない場合、Kameleoon は製品機能の正しい動作に必要な技術情報のみを使用します。

    同意がない場合、Kameleoon は Targeted Delivery ルールに対してはバリエーションを送信しますが、Experiment ルールには送信しません。その他の情報（たとえば、CustomData、ページビュー、ジオロケーション）はすべて、訪問者の同意がある場合（許可が付与されたとき）にのみ送信されます。

    同意管理の詳細については、[こちら](/user-manual/project-management/consent-management-policy#how-to-choose-your-consent-management-policy) で読むことができます。
  </Accordion>

  <Accordion title="SDK は分析のためのトラッキングリクエストをいつ送信しますか？" id="when-does-the-sdk-send-a-tracking-request-for-analytics">
    デフォルトでは、SDK は複数のイベントをまとめてバッチ処理し、設定可能な間隔で分析目的のトラッキングリクエストを Kameleoon サーバーに送信します。このアプローチにより効率が向上し、サーバーの負荷が低減されます。

    トラッキングリクエストは以下の場合に送信されます：

    * **定期的:** デフォルトでは、リクエストは **1000 ミリ秒（1 秒）** ごとに送信されます。**tracking interval** 値を設定することで、この間隔を変更できます。
    * **オンデマンド:** コード内で `flush(instant=true)` のようなメソッドが呼び出された場合、即座に送信されます。

    具体的には、間隔の期限が切れる前に以下のいずれかのメソッドが呼び出されると、トラッキングリクエストがトリガーされます：

    * `getVariation`（`track` が `true` に設定されている場合）。
    * `getVariations`（`track` が `true` に設定されている場合）。
    * `isFeatureActive`（`track` が `true` に設定されている場合）。
    * `trackConversion`
    * `flush`（`instant=true` の有無にかかわらず）

    上記のメソッド呼び出しに加え、**クライアントサイド SDK** は、他のアクティビティが発生していない場合、デフォルトで **60 秒** ごとにトラッキングリクエストを送信します。このリクエストは訪問者のセッションを維持するのに役立ちます。`activityTrackingIntervalMillisecond`（または `activity_tracking_interval_millisecond`）パラメーターを SDK の設定で指定することで、このデフォルト値を変更できます。

    **サーバーサイド SDK** の場合、イベントのバッチ処理は、各トラッキングリクエストが複数の訪問者のデータを 1 つのリクエストに統合できるため、特に有効です。このアプローチでは、すべての影響を受けた訪問者の情報を集約し、間隔ごとに 1 回送信することで、効率を向上させ、サーバーの負荷を低減します。

    <Warning>
      トラッキングリクエストは [Data API のレート制限](../../apis/data-api-rest/overview#レート制限) の対象となります。

      **クライアントサイド SDK** の場合、複数の訪問者が同じネットワークを共有している環境（たとえば、オフィス内）では、同じ IP アドレスから発信されているように見えることがあり、レート制限を超過して `429 - Too Many Requests` エラーを引き起こす可能性があります。
    </Warning>
  </Accordion>

  <Accordion title="どのメソッドが HTTP リクエストをトリガーしますか？同期ですか、非同期ですか？" id="which-methods-trigger-http-requests-are-they-synchronous-or-asynchronous">
    <Note>
      異なる SDK では、言語の特性により、メソッドの名前が異なる場合があります。
    </Note>

    以下は、HTTP リクエストを行う SDK メソッドのリストです：

    * isFeatureActive / getFeatureVariationKey / getFeatureVariable / trackConversion / flush
      * これらのメソッドは、訪問者に関するすべての情報（ユーザーが受信したバリエーションを含む）を保存するために Data API への非同期リクエストを行います。これは、app.kameleoon.com で統計を表示するために使用されます。
    * getRemoteData / getRemoteVisitorData / getWarehouseAudience
      * これらのメソッドは、訪問者に関する情報を取得するために Data API への同期リクエストを行います。
    * さらに、SDK は内部作業に必要な設定を取得するために非同期リクエストを行います。
  </Accordion>

  <Accordion title="isFeatureActive または getFeatureVariationKey はいつ使用すべきですか？">
    `isFeatureActive` は、フラグがアクティブかどうかを知る必要があるが、訪問者が受信した正確なバリエーションを知る必要がない場合に呼び出すことができます。Experiment ルールを使用する場合、「off」以外に 2 つ以上のバリエーションがある場合は `getFeatureVariationKey` を呼び出す方が良いでしょう。
  </Accordion>

  <Accordion title="クライアントサイド SDK（engine.js アプリケーションファイルを含む）とサーバーサイド SDK の両方を Web サイトで使用できますか？">
    はい、クライアントサイド SDK（Kameleoon JavaScript SDK または `engine.js` アプリケーションファイル）とサーバーサイド SDK の両方を使用してハイブリッド連携を実装できます。このセットアップでは、`getVisitorCode` メソッドを呼び出すことが不可欠です。これにより、ブラウザとサーバー間で訪問者を一貫して認識し、特定のフィーチャーフラグに対してクライアントサイドコード（たとえば、イベントトラッキング）とサーバーサイドコード（たとえば、機能実行）の両方を実行する際に、一貫したバリエーション割り当てを保証します。
  </Accordion>

  <Accordion title="getVisitorCode を呼び出す必要がありますか？">
    ハイブリッド連携（Web サイト \<-> server SDK、JS SDK \<-> server、engine \<-> server SDK）を使用している場合、`getVisitorCode` を使用する必要があります。`getVisitorCode` を呼び出すと、訪問者コードが取得され、Cookie を使用して送信されます。ハイブリッド連携を使用していない場合、`getVisitorCode` を呼び出す必要はありません。ただし、ランダムな訪問者コードを生成するために呼び出すこともできます。
  </Accordion>

  <Accordion title="SDK または getVisitorCode にドメインは必須ですか？">
    `getVisitorCode` にはドメインのインストールが必要です。そうでない場合、同じ訪問者でも、サイトの異なるサブドメイン上で異なる訪問者コードを持つため、異なるバリエーションを取得する可能性があります。
  </Accordion>

  <Accordion title="ハイブリッド連携を使用している場合、同意を 2 回処理する必要がありますか？">
    サーバーとクライアント SDK を同時に使用している場合、両方の SDK に対して同意を設定する必要があります。

    詳細については、[この](../../privacy-and-compliance/consent-management) 記事をご参照ください。
  </Accordion>

  <Accordion title="広告ブロッカーは Kameleoon にどのように影響しますか？" id="how-do-ad-blockers-affect-kameleoon">
    Kameleoon は、多くのエクスペリエンス最適化ソリューションと同様に、特定の広告ブロッカーによってブロックされる可能性があります。これは主に、Web 実験アプリケーションファイル（`engine.js`）と、Web サイトに読み込まれた JavaScript コードに依存するクライアントサイド SDK に影響します。一方、サーバーサイド SDK はサーバー内で動作するため、広告ブロッカーの影響を受けません。

    広告ブロッカーを使用しているユーザーを実験に含めたい場合、Kameleoon は Kameleoon のデフォルトドメインの代わりにカスタムドメインを使用できるプレミアムオプションを提供しています。カスタムドメインは、広告ブロッカーが Kameleoon を検出してブロックすることを防ぎます。設定後、Kameleoon はトラッキング目的または SDK 設定の更新のいずれかにおいて、当社のサーバーへのすべての送信ネットワークリクエストにカスタムドメインを使用します。

    カスタムドメインの使用は、セルフホスティングとは異なります。カスタムドメインを使用する場合、Kameleoon のインフラストラクチャは引き続きすべてのコンテンツ（たとえば、`engine.js`、SDK 設定、トラッキング呼び出し）をホストして提供します。違いは、これらのリクエストが `experiments.mydomain.com` のような、あなたが管理するドメインを経由してルーティングされることです。

    このオプションを有効にするには、テクニカルアカウントマネージャーにご連絡ください。サブドメイン（たとえば、`experiments.mydomain.com`）ではなく、完全なドメイン（たとえば、`experiments-mydomain.com`）を提供する必要があります。ドメイン名には `kameleoon` という部分文字列を含めることはできません。

    * Web 実験では、デフォルトの Kameleoon ドメイン（`kameleoon.`）への参照をカスタムドメインに置き換えます。
      * **例:** `//SITE_CODE.{your-domain}/engine.js`
    * クライアントサイド SDK では、SDK の初期化で `networkDomain` パラメーターを使用します。

    カスタムドメインではなくセルフホスティングを使用する場合は、[このガイド](../../web-experimentation/self-hosting/simple-self-hosting-and-on-premises-options#アプリケーションファイルのセルフホスティング) に従ってください。
  </Accordion>
</AccordionGroup>
