12 月のクロール情報: Googlebot がクロールする理由とその方法

2024 年 12 月 3 日(火)

Google 検索の検索結果にウェブページが表示される前に、Google 検索で少し作業が行われていることはおそらくご存じのことでしょう。その一つがクロールと呼ばれる処理です。Google 検索のクロールは、Google のサーバー上で稼働する Googlebot というプログラムによって実行されます。クロールはウェブを探索しながら、URL を取得し、ネットワーク エラーやリダイレクトなどの問題を検出した場合は処理していきます。そのほか、あまり語られていない詳細がいくつかあります。今月は毎週、それらの詳細を取り上げ、特にサイトがクロールされる方法に大きく影響する可能性がある情報について掘り下げていきます。

そもそも、クロールとは何か

クロールとは、新しいウェブページを発見したり、更新されたウェブページに再アクセスしたりして、それらをダウンロードするプロセスのことです。つまり、Googlebot は URL を取得し、ホストしているサーバーに HTTP リクエストを送信してサーバーからの応答を処理します。リダイレクトがあればそれに従い、エラーを処理し、ページのコンテンツを Google のインデックス登録システムに渡します。

しかし、最新のウェブページは純粋な HTML だけではありません。では、ページを構成するほかのリソースはどうなるのでしょうか?そして、それらのリソースをクロールすることは、「クロール バジェット」にどのように影響するのでしょうか?また、リソースは Google 側でキャッシュに保存できるのでしょうか?さらに、今までクロールされたことのない URL と、すでにインデックスに登録済みの URL には違いがあるのでしょうか?この投稿では、これらの質問に答え、さらに詳細を説明します。

Googlebot とページリソースのクロール

最新のウェブサイトは、HTML だけでなく JavaScript や CSS などのさまざまな技術を組み合わせて使用し、便利な機能や心踊るウェブサイト エクスペリエンスをユーザーに提供しています。ブラウザからそのようなページにアクセスすると、ブラウザはまず親 URL をダウンロードします。この URL には、そのページを構築してユーザーに表示するために必要なデータ、つまり HTML がホストされています。この初期データには、JavaScript や CSS などのリソースへの参照のほか、画像や動画などが含まれている場合があり、ブラウザはそれを再度ダウンロードして最終的なページを構築し、ユーザーに表示しています。

Google もまったく同じことを行いますが、方法は少し異なります。

  1. Googlebot は親 URL から初期データ、つまりページの HTML をダウンロードします。
  2. Googlebot は取得したデータをウェブ レンダリング サービス(WRS)に渡します。
  3. WRS は、Googlebot を使用して、オリジナル データで参照されているリソースをダウンロードします。
  4. WRS は、ユーザーのブラウザが行うように、ダウンロードしたすべてのリソースを使用してページを構築します。

ブラウザの場合に比べて、ステップからステップへの移行には時間がかかることがあります。ページのレンダリングに必要なリソースをホストしているサーバーの負荷の上昇が確認された場合など、スケジューリングが制約されることがあるためです。そして、これに絡めて話したいのがクロール バジェットというものです。

ページのレンダリングに必要なリソースをクロールすると、そのリソースをホストしているホスト名のクロール バジェットが減少します。バジェットを少しでも残しておくために、WRS は、表示するページで参照されているすべてのリソース(JavaScript や CSS)をキャッシュに保存しようとします。WRS キャッシュの有効期間(TTL)は、HTTP キャッシュ ディレクティブの影響を受けません。WRS はすべてを最大 30 日間キャッシュに保存し、クロール バジェットを他のクロールタスクに回せるようにします。

これをサイト所有者の観点から見ると、サイトのどのリソースをどのようにクロールしてほしいかを管理することで、クロール バジェットの減り方に影響を与えることができるのです。そこで Google は次のことを推奨しています。

  1. リソースを可能な限り最小限に抑える。ページのレンダリングに必要なリソースが少ないほど、レンダリング時のクロール バジェットも少なくて済み、ユーザーに優れたウェブサイト エクスペリエンスを提供できます。
  2. キャッシュ無効化パラメータは慎重に使用する。リソースの URL が変更されると、たとえコンテンツが変わっていなくても Google が再度そのリソースをクロールする必要が生じる可能性があります。これは当然、クロール バジェットを消費することになります。
  3. メインサイトとは異なるホスト名でリソースをホストする。たとえば、CDN を利用したり、リソースを別のサブドメインでホストしたりする方法があります。そうすることで、クロール バジェットの消費の負担はリソースをホストするホスト側に移動します。

これらのポイントはメディア リソースにも当てはまります。Googlebot(具体的には Googlebot-ImageGooglebot-Video)がメディア リソースを取得すると、サイトのクロール バジェットを消費します。

robots.txt を設定すればよいのではないかと思われるかもしれませんが、レンダリングの観点から見ると、リソースのクロールを禁止してしまうことは問題の火種となりかねないのです。それは、レンダリングに必要なリソースを WRS が取得できなければ、Google 検索はページのコンテンツを抽出できず、検索結果にページを表示できなくなる可能性があるためです。

Googlebot のクローリングとは

Google がクロールしているリソースを分析するのに最適な情報源は、サイトの未加工のアクセスログです。このログには、ブラウザやクローラーからリクエストされたすべての URL のエントリが記録されています。Google クローラーをアクセスログで識別するには、デベロッパー向けドキュメントに公開されている IP 範囲を参照してください。

次に優れた情報源は、もちろん、Search Console のクロール統計情報レポートです。このレポートでは、クロールされた各種リソースが分類されています。

Googlebot がクロールしたさまざまな種類のリソースが表示されている Search Console のクロール統計情報レポート

最後に、クロールやレンダリングに興味があり、他のユーザーと会話したい場合は、検索セントラル コミュニティが最適です。また、Google の LinkedIn アカウントもあります。


更新

  • 2024 年 12 月 6 日更新: 別のホストからリソースを提供する場合のパフォーマンスへの影響を記載しました。

クロールについて詳しくは、12 月のクロール情報シリーズ全体をご覧ください。