エッジA/BテストSEO(CDNでの分割テスト)

Cloudflare Workers、Akamai、Fastly、Optimizely、VWOなどCDN/エッジ層でA/B・多変量テストを実行し、クローキング、重複コンテンツ、クロール予算の問題を避ける方法を解説します。

初回公開:2026年7月3日 · 最終更新:2026年8月22日 · Advanced
言語

エッジA/Bテストは、CDN層でバリエーションHTMLやリダイレクトをorigin到達前に返します。検索エンジンへ実際のHTMLを渡せるためclient-sideテストより安全ですが、cookieを持たないGooglebotへの不安定な振り分け、バリエーションURLの重複とcanonical、クロール予算の浪費に注意が必要です。cookieなしのトラフィックをURLごとに決定論的に割り当て、バリエーションURLからcontrolへcanonicalを向け、テスト中は301ではなく302を使い、勝者決定後すぐ撤去します。テスト自体は問題ありませんが、ユーザーと検索エンジンに異なる内容を見せるクローキングは避けます。

要点 — エッジA/Bテストは、originがリクエストを受け取る前にCDN worker層からバリエーションHTMLまたはリダイレクトを返します。検索エンジンもclient-side JavaScriptによる差し替えではなく実際のHTMLを受け取るため、テスト場所としては安全ですが、エッジ固有のリスクがあります。同一URLのHTML書き換えでは、Googlebotが通常cookieを保持しないため、cookieによる振り分けでクロールごとに別版を返す危険があります。バリエーションURLへのリダイレクトでは、重複コンテンツとcanonicalの混乱が問題になります。cookieのないトラフィックを決定論的に扱い、バリエーションからcontrolへrel=canonicalを向け、実施中は301ではなく302を使い、勝者が決まったら直ちに撤去します。Googleの境界は「テストはよいがクローキングは不可」であり、ボットが一度Bを見たことではなく意図と非対称性が問題です。

エッジテストで実際に変わること

edge workerは訪問者に近い場所でレスポンスを振り分けたり変換したりします。割り当て場所は変わりますが、実験の基本ロジックは変わりません。 Evidence for this claim Cloudflare Workers can execute code and modify requests or responses at the network edge. Scope: Cloudflare Workers; other edge platforms have different runtimes and controls. Confidence: high · Verified: Cloudflare: Workers overview 検索上の安全性は、検索クローラーを狙って実質的に異なる内容を返すのではなく、正当なテスト版を一貫して配信できるかで決まります。 Evidence for this claim Google permits website testing, warns against cloaking, and recommends appropriate canonicals or temporary redirects and limited test duration. Scope: Google Search guidance for website testing; it applies regardless of whether assignment occurs at the edge or origin. Confidence: high · Verified: Google: Website testing and Search

エッジA/Bテストはedge SEOの用途の一つです。Cloudflare Workers、Akamai EdgeWorkers/EdgeKV、Fastly Compute、OptimizelyやVWOのedge/server-side統合などのCDN workerで、originへ届く前に振り分けとHTML書き換え(またはリダイレクト)を行います。SearchPilotはedge SEOを*“any SEO changes that are made after the HTML is created by your CMS or origin server before it is served to the user,”* (翻訳) 「CMSまたはoriginサーバーがHTMLを生成した後、ユーザーへ配信される前に行うSEO変更」と説明し、“They appear to all users and googlebot as server side HTML changes, so there are no risks or downsides from an indexation point of view.” (翻訳) 「全ユーザーとGooglebotにはserver-sideのHTML変更として見えるため、インデックス登録上のリスクや欠点はない」と述べています。検索エンジンもorigin側と同じ実際のHTMLを受け取れることが基本的な利点です。

エッジが安全でも、SEO固有の落とし穴はエッジでの振り分け方にあります。この方式にほぼ固有で、一般的な「A/BテストとSEO」の記事が見落としやすい問題が2つあります。

Googleの実際の立場:テストはよいがクローキングは不可

GoogleはA/Bテストと多変量テストを明示的に認め、ベストプラクティスも公開しています。境界はクローキングです。スパムポリシーでは、“presenting different content to users and search engines with the intent to manipulate search rankings and mislead users.” (翻訳) 「検索順位を操作してユーザーを欺く意図で、ユーザーと検索エンジンに異なるコンテンツを提示すること」と定義しています。重要なのは操作の意図とユーザー/検索エンジン間の非対称性であり、「ボットが一度バリエーションを見た」ことではありません。Optimizelyも、“Google encourages constructive testing and does not view the ethical use of testing tools such as Optimize to constitute cloaking.” (翻訳) 「Googleは建設的なテストを奨励し、Optimizeなどを倫理的に使うことをクローキングとは見なさない」と説明しています。

Googleの実務上の境界は明快です。“Don’t show one set of URLs to Googlebot, and a different set to humans.” (翻訳) 「Googlebotに1組のURL、人に別のURLを見せてはいけません。」ボットを含む全員が同じ正当なバリエーションの対象となり、それを一貫して受け取れるならポリシーに適合します。

エッジテストの2方式と、それぞれ異なるリスク

この2方式は失敗の仕方も修正方法も異なるため、区別して考えてください。

方式1 — 同一URLのHTMLをエッジで書き換える

workerはURL(/product/123)を変えず、見出し、CTA、価格表示形式などをHTML Rewriterで差し替えます。Cloudflare Workersの「同一URLへ直接アクセスするA/Bテスト」方式であり、新規訪問者について*“Choose a group and set the cookie (50/50 split)”* (翻訳) 「グループを選び、cookieを設定する(50/50分割)」と説明されています。

エッジ固有のリスクはcookieです。 Googleは、“Googlebot generally doesn’t support cookies. This means it will only see the content version that’s accessible to users with browsers that don’t accept cookies.” (翻訳) 「Googlebotは通常cookieに対応せず、cookieを受け付けないブラウザーのユーザーがアクセスできる版だけを見る」と明記しています。多くの実装は再訪者を同じグループに保つためcookieへ振り分けを保存します。Akamaiの例も、“Client bucket selection will be persistent via a cookie value to ensure a client is locked to the same URL on subsequent visits” (翻訳) 「以後も同じURLへ固定するため、bucket選択をcookie値で永続化する」としています。Googlebotはcookieを持ち越さないため、クロールごとにrandomizerへ入り、前回とは別bucketになる可能性があります。欺く意図のあるクローキングではありませんが、Googleが同じURLの不安定な版を時間とともにインデックス登録する原因になります。

方式2 — エッジからバリエーションURLへリダイレクトする

workerが/product/123から別URLの/product/123?v=bまたは/product/123-bへ302を返します。検索エンジンが独立して発見し、インデックス登録できる実在の別URLができます。

エッジ固有のリスクは重複コンテンツとcanonicalの混乱です。 GoogleがバリエーションURLを独立ページとしてインデックス登録すると、シグナルが分散し、重複ページが生まれる可能性があります。

方式1の修正:クローラーへの出力を決定論的にする

修正方法は「ボットを検出してテストを隠す」ことではありません。cookieのないリクエストを無作為に振り分けないことです。人はcookieでbucket分けしても構いませんが、Googlebotを含むcookieなしのリクエストは、URLのhash、安定したkeyによる固定、常にcontrolを返す方法などで決定論的に処理します。同じURLがcookieなしのクライアントへ常に同じ版を返せば、Googleはクロールごとのコイントスではなく安定した1ページを見ます。

Cloudflareは、“Enable Passthrough to allow direct access to control and test routes.” (翻訳) 「Passthroughを有効にし、controlとtestのrouteへ直接アクセスできるようにする」と説明しています。Passthroughを使えば、bot、QA担当者、stakeholderの誰でも再抽選されず/control/*または/test/*へ一貫して到達できます。ボット専用コードを作らずクローラーへ一貫した版を返す公式手段です。

SearchPilotは別の粒度で分割します。“When doing SEO A/B testing, there is only one version of the page. We are not showing different versions of the same page to users or Google. This isn’t cloaking and doesn’t create any duplicate versions of the same page.” (翻訳) 「SEO A/Bテストではページは1版だけです。同じページの異なる版をユーザーやGoogleへ見せないため、クローキングではなく重複版も生まれません。」ユーザーを無作為に分けず、ページを決定論的に分け、あるページは全員へ同じ版を返します。Cloudflareのcookie 50/50方式とは逆で、SEOリスクも異なります。さらに、“There is only one Googlebot. You also can’t make two versions of a single page because it would cause problems like duplicate content.” (翻訳) 「Googlebotは1つしかなく、重複コンテンツなどの問題になるので、1ページを2版にはできない」と説明しています。

方式2の修正:canonicalとリダイレクトを規律化する

テストを別URLで行う場合は、Googleのテスト資料にある3つの原則を直接適用します。

  • バリエーションからcontrolへcanonicalを向ける。 Googleは、“you can use the rel=“canonical” link attribute on all of your alternate URLs to indicate that the original URL is the preferred version.” (翻訳) 「すべての代替URLでrel=“canonical” link属性を使い、元のURLが優先版だと示せる」と説明しています。各バリエーションURLのcanonicalをcontrol URLへ向けます。
  • テスト中は301ではなく302を使う。 Googleは、“use a 302 (temporary) redirect, not a 301 (permanent) redirect.” (翻訳) 「301(恒久)ではなく302(一時)リダイレクトを使う」としています。302は一時的な移動、301は恒久移動を意味します。301は勝者を選び恒久的に切り替えた後に使います。
  • 終了したら撤去する。 Googleは、“Once you’ve concluded the test, update your site with the desired content variation(s) and remove all elements of the test as soon as possible… we may interpret this as an attempt to deceive search engines and take action accordingly.” (翻訳) 「テスト終了後は希望する版でサイトを更新し、テスト要素をできるだけ早く削除する。長く残すと検索エンジンを欺く試みと解釈し、措置を取る場合がある」と説明しています。

canonicalは命令ではなくhintです。バリエーションとcontrolの内容が大きく違えば、Googleはcanonicalを無視して両方をインデックス登録できます。そのため方式2は同一URL書き換えより危険で、大規模な構造変更はユーザーごとのバリエーションURLではなくページ単位の分割で扱うほうが安全です。

クロール予算:多変量による乗算問題

単一のA/Bテストはクローラーが見る可能性のある状態を1つ増やします。多変量テストでは状態が乗算され、独立した3変数に各2版があれば最大8通りです。URLごとの振り分けが固定的かつ決定論的でなければ、1つのURLが変動する状態群になり、クロール可能な各状態がクロール予算を消費します。決定論的でstickyな振り分けは、クローキングだけでなくクロール効率にも重要です。背景としてGoogleの2024年「Crawling December」にあるCDNとクロール予算のガイダンスを参照してください。

「ボットにはcontrol版だけを返す」— 近道か落とし穴か

この助言は半分正しいため注意が必要です。クローラーへ安定したcontrol版を返すことは、その版が実際のユーザーへ常に返してもよく、Googleにインデックス登録してほしい正当な版なら問題ありません。安全性はボット検出ではなく、一貫性と正当性から生まれます。

検索エンジンにだけ実ユーザーと異なる現実を見せるために「ボット経路」を作った時点でクローキングになります。Googleの原文は*“Don’t show one set of URLs to Googlebot, and a different set to humans”* (翻訳) 「Googlebotに1組のURL、人に別のURLを見せてはいけない」です。正しい考え方は、クローラーにも、どのユーザーが常に見ても差し支えない同じ決定論的な版を返すことです。審査を避けるためのボット専用routeではありません。UA判定でボットをテストから除外する方法が安全なのは、たまたま正当な1版に固定できる場合だけで、一般的に安全な手法ではありません。

エッジテストを実行できる期間

Googleは日数を定めていません。一方、「テスト」が勝者を決めないまま恒久状態にならないよう、“remove all elements of the test as soon as possible” (翻訳) 「テスト要素をできるだけ早く削除する」と警告しています。John Muellerは、実験を次々に行うこと自体は問題ないが、単一テストを無期限に残して事実上の恒久ページにする状態は、もはやテストに見えなくなると述べています。(この発言はGoogle Webmaster Central Hangoutの業界記事による要約であり、Googleの一次資料ではないため、文言はparaphraseとして扱います。) またサイト移行中のA/Bテストは、Googleが移行を認識するためのリダイレクトシグナルを曖昧にするので、両者を重ねないでください。

OptimizelyはGoogleの方針を、“If you are running an experiment for an unnecessarily long time, Google may interpret this as an attempt to deceive search engines and take action accordingly.” (翻訳) 「不必要に長く実験を続けると、Googleが検索エンジンを欺く試みと解釈して措置を取る可能性がある」と説明しています。勝者の展開では、301リダイレクトによるlink equity損失を*“a small loss of link equity (around 10%)”* (翻訳) 「約10%の小さな損失」と見積もっていますが、これはOptimizelyの目安でありGoogle確認値ではありません。

Bingのガイダンスは限定的 — Googleを既定にする

BingにはGoogleほど詳しいエッジ/CDN A/Bテスト専用ページがありません。一般的なクローキング基準では、“as long as you make a good faith effort to return the same content to all visitors, with the only difference being the content is rendered on the server for bots and on the client for real users, this is acceptable and not considered cloaking” (翻訳) 「全訪問者へ同じ内容を返すよう誠実に努め、違いがボット向けserver-side描画と実ユーザー向けclient-side描画だけなら、クローキングではない」としています。また、“significant structural changes, we recommend hosting each version on separate URLs, or split URL testing,” (翻訳) 「大きな構造変更では各版を別URLに置くsplit URL testingを推奨する」とし、IndexNowでバリエーションURLを迅速に発見させます。Bingの基準はGoogleと両立するため、canonical、302、期間はGoogleの規則を両エンジン向けの保守的な既定にします。

関連記事での位置づけ

この記事は、同じクラスターにある一般的なedge SEO記事のテスト特化版です。プラットフォームの種類やエッジの他用途は一般記事が扱い、ここではsplit testingのリスクだけを扱います。方式2のcanonicalと重複コンテンツはcanonicalizationとduplicate contentの記事、クロール予算はcrawlingとcrawl budgetの記事で詳しく説明しています。

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.