メインコンテンツへスキップ

エンジンの実行フロー

実験エンジンが実験を読み込み、トラッキングし、実行する方法について学びましょう。

実験エンジンの概要

Kameleoon は、ウェブおよびフルスタックアプリケーションの実験に対応する単一プラットフォームの最適化ソリューションを提供します。プラットフォームは2つの主要なソリューションをサポートしています:
  • Web Experimentation: ウェブサイトやウェブアプリケーション向けに A/B テストやその他の形式の実験を実施します。
  • Feature Experimentation: フルスタックのフィーチャーフラグと実験を可能にします。Kameleoon は、A/B 実験でのちらつきを排除し、既存のツールと統合し、タスクを自動化するための追加の API とツールも提供します。

コードフロー: 読み込み

Kameleoon エンジンは engine.js タグ(旧 kameleoon.js)を実行します。アプリケーションページの HTML ソースコードを通じてこの JavaScript タグを呼び出します。 エントリーポイントでは、エンジンは以下を行います:
  1. アクティベーション: engine.js タグは Kameleoon.Analyst.load() を介して Activation API 呼び出しを呼び出します。
  2. コマンドキューの実行: 読み込み後、エンジンは kameleoonQueue配列 をチェックし、プッシュした順序でコマンドを実行します。Kameleoon が関数をインスタンス化する前に実行する必要のあるコードにこれを使用してください。
Kameleoon は IMMEDIATE パラメータでキューに追加された関数のみを実行します。
  1. アンチフリッカーとグローバル変数: ちらつき は、バリエーションが表示される前にオリジナルのページが一時的に表示されたときに発生します。この効果は不正確な結果につながる可能性があります。Kameleoon はちらつきを排除するために高度な技術を使用しています。アンチフリッカーを設定すると、システムは Kameleoon スクリプトを アンチフリッカーコード で非同期に読み込みます。
Kameleoon の読み込みが完了すると、window.KameleoonEndLoadTime 変数に完了タイムスタンプが保存されます。
インストールスニペットの kameleoonLoadingTimeout 変数を使用してタイムアウトを調整します。デフォルト値の1000ミリ秒(または最新の実装では750ミリ秒)を維持することを推奨します。この変数は、アプリケーションファイルを待つ間、インストールタグがページ表示を遅延できる最大時間を決定します。
  1. ブロッキング理由の確認: 初期化を完了する前に、エンジンは以下のブロッキング理由を確認します:
    • ストレージ: ローカルまたはセッションストレージが利用できない場合、エンジンは終了し、STORAGE コード付きの Kameleoon::Aborted イベントを返します。
    • タイムアウト: engine.js の読み込みに750ミリ秒以上かかり、ページや訪問に対して Kameleoon を無効にするようプロジェクトを設定している場合、エンジンは TIMEOUT を返します。
    • プリレンダー: Kameleoon はドキュメントの準備ができていることを要求します(document.visibilityState == "prerender")。準備ができていない場合、スクリプトは終了し PRERENDER を返します。可視性状態が変化すると再読み込みされます。
    • カスタムスクリプト: カスタムスクリプトがセッションを中止すると、エンジンは SCRIPT を返します。
    • パラメータ: URL に KameleoonDisabled == true が含まれている場合、エンジンは PARAMETER を返して終了します。
    • 無効: ダッシュボードでプロジェクトを無効にすると、エンジンは DISABLED を返します。詳細については この記事 を参照してください。
カスタム中止スクリプトを設定できるのは Kameleoon の技術アカウントマネージャーのみです。
  1. 延期: 必要な場合、エンジンはコードとキャンペーンを2回目の呼び出しまで延期します。この場合、エンジンは https://SITECODE.kameleoon.com/engine-configuration.js(旧名: kameleoon-configuration.js)および https://SITECODE.kameleoon.com/engine-campaigns.js(旧名: kameleoon-actions.js)からそれぞれ SYNC モードで設定とキャンペーンを取得します。
すべてのキャンペーンを延期するオプションを設定できるのは Kameleoon の技術アカウントマネージャーのみです。“DELAYED” タグを使用して特定の実験を延期できます。
ブロッキング理由がない場合、エンジンは訪問者データのトラッキング段階に進みます。

コードフロー: トラッキング

初期化後、Kameleoon は訪問者データを取得します:
  1. Kameleoon は訪問者のブラウザやオペレーティングシステムなどの技術データを収集します。
  2. サブドメイン間でセッションデータを統合 を有効にしている場合、Kameleoon はメインのローカルストレージドメイン上の iFrame を使用して過去のデータを取得します。
  3. real-time sync of visits または cross-device オプションを有効にしている場合、エンジンは Kameleoon サーバーから使用履歴を取得します。
リアルタイム同期は、Kameleoon Feature Experimentation または ITP の影響 を管理するための Safari ではデフォルトで有効です。
  1. エンジンは訪問者を初期化します。kameleoonVisitorCode Cookie やローカルストレージにコードが存在しない場合、エンジンは新しい訪問者コードを割り当て、すべての訪問を解析します。
  2. エンジンは、ページ URL、デバイス、オペレーティングシステム、ジオロケーション、ゴールなどのデータを解析および保存します。
商品レコメンデーションアドオンを使用している場合、Kameleoon はここでレコメンデーションエンジンをインスタンス化します。
  1. グローバルカスタムスクリプトは、実験を初期化する前に挿入された JavaScript を実行します。
  2. グローバル実験スクリプトは、カスタムグローバルスクリプトの後に実行されます。このスクリプトはターゲティングに関係なく実行され、実験が一時停止すると停止します。詳細については このガイド を参照してください。
  3. エンジンは、IMMEDIATE パラメータを使用していない CommandQueue の保留中のコマンドを実行します。
  4. Kameleoon::Started イベントは、初期化が完了し、エンジンがデータを保存したときにトリガーされます。
  5. SPA管理 を有効にすると、Kameleoon は URL の変更を監視します。URL が変更されると、エンジンが再読み込みされ、キャンペーンが新しいビューで正しく機能するようにします。
  6. キャンペーンを初期化する前に、Kameleoon は以下を行います:
    • 広告ブロッカーを確認します。
    • querySelector 操作を最適化するために mutationObserver を実行します。
    • セグメントが必要とする場合は、https://eu-data.kameleoon.io/ip からジオロケーションデータを取得します。
  7. キャンペーン設定を読み込むために、Kameleoon は https://SITECODE.kameleoon.com/live-experiments/config.js からデータを取得し、2分間キャッシュします。
Live Update Experiments 機能は、LIVE-UPDATE でタグ付けされた実験をリフレッシュし、ブラウザのキャッシュ遅延なしにリアルタイムで設定変更を可能にします。

コードフロー: 実行

実験ループが実行されると、エンジンは以下を行います:
  1. 訪問者が “holdout” グループの一部である場合、エンジンは holdout 含有イベントを送信します。
  2. エンジンは nonceexperimentIDvariationId を含む露出イベントをトリガーします。例: eventType=experiment&nonce=5800F1BDD0667747&id=250830&variationId=978588
  3. 訪問者が holdout グループにいない場合、エンジンは “Holdout exclusion event” を送信します。
Holdout 実験により、他の実験を管理およびブロックできます:
  • エンジンは最初に holdout 実験をチェックします。
  • ユーザーが holdout グループにいる場合、エンジンは彼らをグループに割り当て、レポート用のイベントを送信します。
  • ユーザーがリファレンスグループにいる場合、エンジンは他のすべての実験をブロックします。
  • ユーザーがバリエーショングループにいる場合、エンジンは他の実験を進めることを許可します。
詳細は Holdout 管理ガイド で学べます。
エンジンはその後、データ収集を開始します。パーソナライゼーションがトリガーされたが表示されない場合、エンジンは以下のいずれかのブロッキング理由を返します:
  • PERSONALIZATION_CAPPING: パーソナライゼーションがグローバル訪問者制限に達しました。
  • SCHEDULE: パーソナライゼーションがスケジュールに基づいてオフです。
  • SCENARIO: 一部のシナリオ条件が満たされていません。
  • PRIORITY: より優先順位の高いパーソナライゼーションが存在します。
  • VISITOR_CAPPING: 訪問者が表示を妨げる制限に達しました。
実験に DELAYED タグを関連付けた場合、エンジンは最初のページ読み込み後にそれをトリガーします。エンジンは https://SITECODE.kameleoon.com/(personalizations)/$campaign_id/variations/$variation_id.js からバリエーションデータをダウンロードします。
実験を遅延させることは、ちらつきが最小限のポップアップやスクロール下の修正に役立ちます。
AI Opportunity Detection アドオンの場合、Kameleoon は機会を検出するために https://SITECODE.kameleoon.com/audiences/segments.js からセグメント定義をダウンロードします。
Kameleoon は過去90日以内に作成または変更されたセグメントをチェックし、[DEV][TEST]、または [QA] で始まるものを除外します。
この情報を結果ページで分析して、コンバージョン率と潜在的な売上の成長を追跡します。