Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Simulate Google's Query Fan-Out to Find Your Content Gaps (Python)

2026年10月22日に「Dev.to」が公開したITニュース「Simulate Google's Query Fan-Out to Find Your Content Gaps (Python)」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

GoogleのAI検索は、ユーザーの質問を細分化し、複数のサブクエリで並行検索する「クエリファンアウト」技術を使う。コンテンツが多くのサブクエリに対応するため、LLMで関連サブクエリを生成し、ページの関連度を測定して不足箇所(ギャップ)を見つけるPythonスクリプトを紹介。コンテンツ改善に活用できる。

ITニュース解説

システムエンジニアを目指す皆さんにとって、Web上の情報がどのように見つけられ、利用されているかを理解することは非常に重要である。近年、Googleのような検索エンジンは、AI(人工知能)技術を駆使して検索の仕組みを大きく進化させている。この進化は、Webサイトのコンテンツ作成と、検索エンジンにコンテンツを見つけてもらうための考え方にも大きな影響を与えている。

従来の検索エンジンでは、ユーザーが入力したキーワードに最も関連性の高いページを一つ表示しようと試みていた。しかし、AI技術が組み込まれた新しい検索モードでは、このプロセスが根本的に変化している。例えば、GoogleのAI OverviewsやAI Modeでは、「クエリファンアウト」と呼ばれる技術が使われている。これは、ユーザーが「小規模チームでNext.jsアプリをホストする最良の方法は?」といった具体的な質問をした際に、Googleがその質問を一つとして処理するのではなく、「Next.js ホスティング 比較」「Vercel 料金プラン」「Next.js ISR サポート」といった複数の小さなサブ質問(副次的な疑問)に分解し、それらを同時に、つまり「並行して」検索するというものだ。

この「クエリファンアウト」によって、コンテンツ提供者側にとっての「トピックをカバーする」という意味合いが大きく変わる。以前は、一つのユーザーが入力するキーワードに対して自分のページが上位表示されることを目指していた。しかし、今では、GoogleのAIが自動生成する5〜15個ものサブ質問それぞれに対して、自分のページが適切に答えられるかどうかが重要になる。もし自分のページがこれらのサブ質問のどれか一つでも答えられない場合、その分の検索結果は競合する他のページに奪われてしまうことになる。MicrosoftのBingでも同様の仕組みが見られ、Bing Webmaster ToolsのAIパフォーマンスレポートでは、Copilotがコンテンツを参照する前に生成した「グラウンディングクエリ」という、ユーザーの質問よりも短く具体的なバックグラウンドクエリを確認できる。これはAIが実際にどのようなサブ質問を投げているかを知る貴重なヒントとなる。

Googleの実際のファンアウトの全貌を直接見ることはできないが、それに近い形で近似し、自分のWebサイトのコンテンツが、AI検索エンジンのサブ質問に対してどれだけ網羅的に答えられているか(「カバレッジギャップ」があるか)を発見するツールを構築できる。このツールは、大きく二つの部分から構成される。

一つ目は「ファンアウト」部分だ。これは、ユーザーが入力した「シード質問」(元の質問)に基づいて、大規模言語モデル(LLM)と呼ばれる高度なAIが、検索システムが生成するであろうサブ質問を予測して生成する役割を果たす。具体的には、定義、比較、価格、制約(規模、予算、地域、技術スタック)、具体的な手順(How-to)、代替案、さらにユーザーが次に問うであろうフォローアップの質問など、多岐にわたる側面をカバーするようにサブ質問が作られる。Pythonプログラムでは、Anthropic社の提供する大規模言語モデル「Claude」のようなAIサービスを利用し、サブ質問の内容とその意図(定義、比較など)を明確に構造化された形式で出力させる。生成結果は毎回同じではないため、複数回実行して得られたサブ質問をマージすることで、より網羅的なリストを作成できる。

二つ目は「カバレッジ」部分だ。これは、生成された各サブ質問に対して、自分のWebサイトのページがどれだけ適切に回答しているかを評価する。まず、Webページをそのまま評価するのではなく、「パッセージ」と呼ばれる意味のある小さな文章の塊に分割する。これは、AIシステムが通常、ページ全体ではなく、特定の質問に最も関連性の高い小さなテキスト部分(パッセージ)を取り出すためだ。ページを分割する際には、PythonのrequestsライブラリでHTMLを取得し、BeautifulSoup4でHTMLを解析して、見出しや段落ごとにテキストを抽出し、各パッセージが見出しに関連付けられて意味を成すようにする。JavaScriptで動的にコンテンツが生成されるページの場合、この方法では内容が取得できない可能性があり、これはWebサイトの改善点を示唆することもある。

次に、これらのサブ質問とパッセージをそれぞれ「埋め込み表現」に変換する。埋め込み表現とは、テキストの意味内容を多次元の数値ベクトル(方向と大きさを持つ数値の並び)で表現する技術のことだ。意味的に近いテキストは、埋め込み表現上でも近い位置に配置される。sentence-transformersのようなライブラリを用いることで、この埋め込み表現を生成できる。生成されたサブ質問の埋め込み表現と、Webページの各パッセージの埋め込み表現を比較し、「コサイン類似度」という指標を使って、それらが意味的にどれだけ近いかをスコア化する。コサイン類似度は、二つのベクトルがどれだけ同じ方向を向いているかを示す値で、0から1の間の値を取り、1に近いほど意味的に類似していると判断できる。

この類似度スコアに基づいて、各サブ質問に対して最も類似度が高いパッセージとそのスコアを特定する。スコアが低いサブ質問は、そのページで十分にカバーされていない「ギャップ」として特定される。例えば、スコアが0.55未満であれば「GAP」、0.55以上0.68未満であれば「weak」、それ以上であれば「ok」といったように、しきい値を設けて分類する。そして、これらのギャップが上位に来るようにリストをソートしてレポートを出力する。

このスクリプトを実際に実行するには、Python環境で必要なライブラリを導入し、大規模言語モデルAPIの認証情報を設定する。そして、「python main.py "あなたの質問" "評価したいページのURL"」という形式で実行する。出力されるレポートには、各サブ質問の意図、スコア、そして最も関連性の高かったパッセージの冒頭部分が表示される。例えば、「Vercel Proの座席ごとの料金」に関するサブ質問に対してスコアが低ければ、そのトピックがページで十分に説明されていないことが分かる。

得られた結果の解釈も重要である。スコアのしきい値は目安であり、自身のコンテンツやターゲットユーザーに合わせて調整することが望ましい。例えば、「Vercelの料金」に関する質問が、自分の記事のテーマに合わないと判断すれば、無理に加える必要はない。しかし、もし記事が「Next.jsアプリを小規模チームでホストする最良の方法」というテーマであれば、料金情報は読者にとって不可欠な要素となり、追加すべきギャップとなる。ギャップを修正する際は、自己完結型のパッセージ(他の段落がなくても意味が通じる文章)を追加し、具体的な数字や固有名詞を含めることが推奨される。ただし、注意が必要なのは、GoogleのAI検索に対応するために、各サブ質問ごとに別々の薄いページを大量に作成する「ドアウェイページ」のような手法は、スパムと見なされる可能性があるため避けるべきだ。むしろ、一つの強力なページで多くのサブ質問に深く答えられるようにコンテンツを充実させることが、AI検索時代における効果的な戦略となる。

このツールで特定できるのは、WebページがAI検索のサブ質問に「答えられるか」という「カバレッジ」の側面である。残念ながら、AI検索エンジンが実際に自分のページを結果として選択するかどうかまでは分からない。AI検索エンジンからの参照を追跡するには、ChatGPTやPerplexity、GeminiのようなAIチャットサービスで実際にプロンプトを実行し、どのサイトが言及されているかを長期的にモニタリングする別の仕組みが必要となる。このスクリプトは、自分のコンテンツの弱点(ギャップ)を発見し、それを修正するための、無料かつローカルで実行できる強力なツールとして活用できる。システムの開発初期段階で、AI検索時代のコンテンツ戦略を考える上で、このようなツールは非常に有用だ。

関連コンテンツ

関連IT用語

関連ITニュース