Googleのクローラーの仕組みとクロールバジェット

SEOで最も基本であり、必ず行わなければならない事を上げるとすると、少なくともウェブサイトのページをきちんとGoogleボットがクロールできるように設計しておく事です。
なぜならいくら素晴らしいコンテンツを作ってもGoogleがクロール・インデックスできなければ検索結果には表示されないからです。

Search Times

クローラーとは?

一般的にGoogleなどの検索エンジンが使用する巡回ロボット(Googlebot)をクローラーと呼び、インターネット上のウェブページを巡回します。ページ上で検知したリンクやサイトマップファイルからクロール対象のリンクのリストを抽出し、新たなページを探します。クロールした後に、検索ユーザーに検索結果を提供するためにはインデックス処理を行います。

インデックスとは?

インデックスは、検索ユーザーのキーワードの関連性にふさわしいものを表示させる為にクロールしたページをデータベースに登録し利用できるようにする事を指します。またGoogleは取得したページなどの情報を一時的にキャッシュとして保存することもあります。

キャッシュとは?

キャッシュ(cache)とは、Googleが取得したページをサーバー内に保存することを意味します。サーバー障害などによって一時的に表示されないページがあった場合でも、キャッシュリンクをクリックすれば検索ユーザーの為に最近キャッシュしたページを表示します。

Googleボット(Googlebot)とは?

Googleボットとは、インターネット上のウェブサイトの情報を収集する為にGoogleが使用しているウェブクローラーの総称です。
2019年5月のGoogleのアナウンスによると、今後は最新のChromeをベースにウェブページをレンダリングできるようになり、最新のウェブプラットフォームをサポートするようになります。

The new evergreen Googlebot

Googleは世界中のウェブサイトの情報を集めようとしてクロールしています。
GoogleBotは、サイト間のリンクを辿ったりウェブマスターからの通知によってウェブサイトを巡回していますが、ウェブサイト内の全てのコンテンツを確実にクロールするわけではありません。

ほとんどのケースでは気にする必要がありませんが、GoogleBotはウェブサイトの状態や、必要性を考慮してウェブサイトごとにリソースを割り当てて(一般的にはクロールバジェットと呼ばれます)クロールします。

クロールバジェットとは?

クロールバジェットとは、Googleでは「クロールの必要性(クロールディマンド)があり、かつ Googlebot がクロール可能な URL の数(クロールレート)」と定義されています。
なお、クロールバジェット自体はランキングファクターではありません。多く割り当てられているからといって、特に順位には影響はないようです。また、新しいウェブサイトに関しては大小の規模に関わらず、一定の初期値がクロールバジェットに割り当てられます。

クロールバジェットを管理すべき対象者

クロールバジェットの管理に関しては、上級者向けの施策となります。主に以下のようなケースでクロール管理が必要となります(それ以外のケースではそれ程気にする必要はありません)。

  • 大規模なサイト(100 万ページ以上)で、コンテンツの更新頻度が中程度(1 週間に 1 回)の場合
  • 中規模以上のサイト(10,000 ページ以上)で、(日常的に)コンテンツがめまぐるしく変更される場合

クロールの速度(クロールレート)

クロールの速度が速すぎればサーバーに負荷をかけ、他の訪問者のウェブサイト表示が遅くなってしまいます。
その為、GoogleBotは他のウェブサイト利用者の利便性を損ねないように、クロールレートの最大値を制限しているようです。クロールレートとは次のように説明されています。

“単純化を恐れず言えば、クロールレートは、Googlebot でサイトのクロール時に使用する同時並行接続の数、および次の取得までに必要な待ち時間を表します。”

クロールレートはSearch Consoleの特殊なページで設定を行う事ができます。

クロールレートの設定
クロールレートの設定

なお、ページコンテンツの文章量はクロールレートや頻度、インデックスの決定に影響しないようです。人気のあるコンテンツはリンクなどを経由してクロールされやすくなって、インデックスにも良い影響を与えるそうです。

The length of the content doesn’t influence how often we crawl and whether we index it. It also doesn’t contribute to the crawl rate of a URL pattern.

Gary氏の発言 English Google SEO office-hours from November 2022

クロールの優先度

規模の大きなサイトが素早くクロールされがちに見える点について、John Muller氏のコメントが興味深いです。
クロールの優先度はサイズというよりも、ページで提供される価値の重要性や追加される独自性に基づいて判断されるだろうと発言しています。

クロールの必要性(クロールディマンド)

人気の高いURL(おそらく被リンク)やURLの鮮度によってクロールを決定するようです。人気があるURLはクロールの頻度が高くなり、Googleのインデックスした内容が古くならないように定期的にクロールします。

Googlebot のクロール バジェットとは?

Gary Illyes氏の発言では、より頻繁にクロールが必要な範囲をサイト全体から推測しているようです。例えば、ブログを扱うサブディレクトリがあり、そのブログが人気で重要であることを示すシグナルを見つけた場合、Googleはより頻繁にクロールする可能性があります。

ページの更新頻度が単純に重要ということではなく、品質も重要となります。例えば、人気のサブディレクトリがあれば、人々はそれについて会話し、リンクを追加します。これが人気を判定するシグナルとなっているかもしれません。

ちなみにSearch Consoleの登録の有無がクロール頻度に影響することはないと、Jouhn Muller氏がコメントしています。

クロール時の1ページあたりサイズ上限

以前は1ページあたり10MBと言われていましたが、現在では数百MBに増えています。

English Google Webmaster Central office-hours hangout

サーバーレスポンスが早い程多くのページをクロールする

サーバーレスポンスを含めてページ表示速度を改善していく事は、ユーザーの利便性だけでなく、Googlebotの処理速度向上にも繋がります。
John Mueller氏の発言では、レスポンスが早ければ、クロール速度も上がり、より多くのページをクロールします。

クロールバジェットのコントロール

noindexによるクロールバジェットの節約

クロールバジェットをコントロールする方法としては適切ではないものの、インデックスする必要のないページに対して長期的に使用することで間接的にクロール バジェットを解放することにはなるようです。

Any URL that is crawled affects crawl budget, and Google has to crawl the page in order to find the noindex rule.

However, noindex is there to help you keep things out of the index. If you want to ensure that those pages don’t end up in Google’s index, continue using noindex and don’t worry about crawl budget. It’s also important to note that if you remove URLs from Google’s index with noindex or otherwise, Googlebot can focus on other URLs on your site, which means noindex can indirectly free up some crawl budget for your site in the long run.

Large site owner’s guide to managing your crawl budget

ソフト404はクロールバジェットの浪費につながる

GoogleのGary Illyes氏の発言によれば、404や410はクロールバジェットの浪費には繋がらないようです。単純にステータスコードだけを取得するだけのようです。一方でソフト404はインデックスにも含まれず、クロールバジェットの浪費にもつながります。

CDN上の画像については異なるクロールバジェットが割り当てられる

外部CDN上で画像を提供するウェブサイトの場合は、CDNのドメインに対して、あなたのウェブサイトのドメインとは別のクロールバジェットが割り当てられます。ただしCDNがウェブサイトのドメインと同じサーバーで、大きな変化が無い場合は一つにまとめたクロールバジェットとなるようです。

サイトに割り当てられるクロールバジェット

サイト内のページや画像の他、以下のような項目もクロールバジェットの対象となるようです。

  • AMPやhreflangのような代替URL
  • CSS、JavaScript、AJAX(XHR)コールといった埋め込みコンテンツ
  • 長いリダイレクトの連鎖もクロールに悪影響

GoogleBotになるべく効率よくクロールしてもらう為には、XMLサイトマップを作成してGoogleに登録したり、ウェブサイト内の階層構造を見直すといった方法もあります。

XMLサイトマップ

Cache-Control ヘッダはクロールやインデックスに影響を与えない

Cache-Contorolはブラウザに対して適用されます。Googleのクロールやインデックスでは適用されません。

Cache control headers don’t apply to Google’s crawling & indexing, they’re for browsers. At most, they might be used in rendering for embedded content.

John Mueller氏の発言

Googleボットによるページ内コンテンツの認識

Googleボットがページの情報を取得する際に、ページをChromeブラウザでレンダリング(描画)します。縦に長いページであってもきちんと認識できるように設計されています。

Googleボットのビューポートサイズ

CSSや画像なども含めてレンダリングできるように、9000pxの高さのビューポートを使用しているようです。

Intersection ObserverでGoogleボットに認識してもらう

ただし、Googleボットは、何もしなければスクロールやクリックせずにページの情報を取得する為、一部がLazy load(遅延読み込み)で表示されるコンテンツの場合は、その部分を認識できない可能性があります。Intersection Observerを設定する事で、Googleボットはそれを使用してコンテンツを見つける事ができます。

Intersection Observerについての詳細は以下のページをご覧ください。

Intersection Observer

Googleボットが認識できる最大HTMLファイルサイズ

Googleボットが読み込みできるHTMLファイルの最大サイズは15MBです。このサイズを超えてしまった場合には、クロールをストップしてしまうようです。
この制限はHTMLファイルのみで参照するあJavaScriptやCSSファイル、動画ファイル、画像ファイルなどは含まれません。

Googleがサーバーにアクセスできない場合の処理

以下の手順は、サーバーが長期間停止、またはアクセスできなかった場合のGoogleの処理を示しています。短期間のサーバーダウン程度であれば、検索順位に大きな影響を与える事はないようです。

  1. ネットワークやDNSが原因でウェブサイトにアクセスできない場合、5xx HTTP サーバーエラーとしてみなします。
  2. URLは同様にインデックスされたままになり、エラー以前と同様にSERPに掲載されます。つまり、短期間では特に大きな変化はありませんが、これは一時的な対応にすぎません。
  3. 1~2日以上の間、継続的にエラーが発生している場合 は、インデックスからそれらのURLを除外し始めます。サーバー停止によってGoogle検索のインデックスからページが削除されまでに数日かかります。
  4. 発生時には直接的な順位変動はありません。Googleはそのサイトを低品質や類似だとはみなしませんが、インデックスから削除されていればどのみちSERPには掲載されません。その為、ウェブサイトが酷い評価で扱われていると感じてしまうかもしれません。
  5. ウェブサイトが復旧すると、通常ならばGoogleがインデックスから削除していたURLも再度正常にクロールされればすぐに元に戻ります。
  6. Googleが正常に読み込める事を検知した場合には、Googleボットのクロール処理はスピードアップします。

Googleがクロール中止を判断する2つのシグナル

Googleはあウェブサイトのクロールを停止するかどうか判断する為に、リンク否認ツールや、robots.txtnofollowなどの多くのシグナルを使用しています。
その他にGoogleにとって2つの重要なシグナルがあります。

接続時間

Googleは、サーバーへの接続時間を見ています。
接続時間が長ければ長いほど、Googleはスローダウンしたり、ウェブサイトのクロールを停止するようになります。
Googleは、あなたのウェブサーバーに負荷をかけたくないので、接続時間はクロール要素の一つとして使用しています。

HTTPステータスコード

Googleは、サーバーステータスコードが5xxの範囲である場合、クロールをストップしたりスローダウンしたりする事があります。
5xx範囲のステータスコードはサーバーレスポンスに問題がある事を意味します。
これらのコードをGoogleが見た場合、サーバーに更なる問題を発生させないようにクロールを中止します。

どちらのケースであっても、GoogleBotはその後に再びクロールしにきますが、これらのシグナルを発見した場合はクロールを継続しません。

Google On How They Know When To Slow Or Stop Crawling Your Web Site

ステータスコードが5xxの範囲の場合に、クローラーがスローダウンしてしまうという事はJohn Mueller氏も同様の発言をしています。

ステータスコードによってGoogleがどのように判断するかについては以下のページでまとめていますので、興味があるようでしたらご覧ください。

あわせて読みたい
サーバーのレスポンスコードとGoogleの認識 ブラウザやGoogleがページを要求すると、ウェブサーバーがステータスコードを返します。Googleのクローラーはhttpステータスコードに応じて処理が異なります。当然SEOに...

自身で管理するウェブサイトの全ページのステータスコードを確認したり、スピード改善に必要な項目をチェックしたり、その他SEOで問題となる箇所をチェックする場合には、SE Rankingの「サイトSEO検査」機能が便利です。

サイトSEO検査

この機能では、実際にツールがウェブサイト内のページを巡回し、問題点を検知してレポートしてくれます。

サイトSEO検査

サイトSEO検査機能を含め、多くの機能を2週間無料で利用可能なトライアルアカウントを作成して、ウェブサイトの順位や、問題点、被リンクの状況をチェックする事ができます。興味がございましたらお試しください。

キャッシュの情報と削除方法

キャッシュ

下の画像は、Googleの検索結果に表示されたキャッシュリンクです。キャッシュをクリックすると、Googleが直近にこのページをキャッシュしたページの情報や日付を見ることができます。

キャッシュ

キャッシュの日付はGoogleがクロールした日付ではなく、最近インデックスされた、または再インデックスされた日付を意味します。インデックスに関しては、古いページの再利用を決定することもあるようです。これは更新されない古いページは常に再インデックスする必要が無いからと推測されます。

キャッシュの削除は、以下のページで申請可能です。

Google 検索から古くなったコンテンツを削除する

Search Times
閉じる