「GoogleBotがAjaxを理解できる=何もしなくていい」ではない

数日前の記事ですが、GoogleBotがAjaxを使ったサイトを「インデックスできる」ようになった、というニュースが流れました。

これによって、今までGoogleが推奨していたescaped_fragmentなどのやり方が不要になるのではないか?ということで、話題になっています。

ただこれは、Ajaxを何も考えずに使っても問題なくなった、ということではありません。

Ajaxを使ったサイトのコンテンツを、Googleがクロールできるようになりつつあることは非常に画期的なことです。

なぜなら、例えばユーザのクリックをエミュレートする、この行為。

私たちはマウスを使ってクリックするというシンプルな行為ですが、いわば「目が見えない」クローラにとっては、

  • どこがクリックできる領域か分かる
  • そこをクリックするという行為を行うには、どの関数にどんなパラメータを送る必要があるか分かる

という難しいタスクをこなした上でのことです。

そしてさらに、

  • その結果サーバから送られてくるHTMLデータの断片を受け取り、
  • それをもとにどうページを再構成するのかを、JavaScriptから判断し
  • DOMを再構成する

という流れになります。

インデックスさせるならユニークなURIはどうやっても必要

このような難しいことをクローラができるようになったのは、素晴らしいことです。

ただ、忘れてはいけないのは、

そうなったとしても、URIと一対一の関係でコンテンツが見られるようにしておかない限り、きちんとインデックスされることはない

ということです。

クロールできる=インデックスされる、わけではありません

もともとGoogleのクローラは随分前からJavaScript自体は理解できるようになっています。

ただ、AjaxはURLが変わらずにコンテンツの内容を変えることができます。

しかしGoogleのクローラは1つのURLに対しては1つのページしかどうやっても返すことはできません。

なので、Ajaxサイトをきちんとインデックスさせるためにハッシュフラグメントを使い、静的なURIを与えてインデックスできるようにしたというのが、そもそもの流れです。

しかしその際に、Googleがハッシュフラグメントを上手く処理できないこともあったので、Googleのヘルプにあるようなescape_fragmentを使ったようなやり方を、ひとまずの策としてGoogleが提示しているという流れです。

▼AJAX クロール: ウェブマスターおよびデベロッパー向けガイド – ウェブマスター ツール ヘルプ

なので、注意すべきなのは、ちゃんとユニークなURIをそれぞれのコンテンツに対して用意することは必要だということです。

なので、何もしなくてもいいわけではありません。

事の経緯

事の経緯も簡単にまとめておきます。

そもそもは、Alex Pankratovqという開発者が生ログを見ていて、Googleのクローラの不思議なログを見つけたのが発端です。(→記事

具体的にはこんなログです。

66.249.67.106 … “GET /ajax/xr/ready?x=clcgvsgizgxhfzvf HTTP/1.1” 

これはAjaxコンテンツの中のボタンをクリックした時の動作とのこと。

これが「GoogleのBotがユーザのクリックをエミュレートできるようになったぞ」ということで、WebMasterWorld(該当スレッド)やHackersNews(該当スレッド)で話題になりました。

HackersNewsではMattCutts氏が登場して、コメントをつけていますがテンプレート的な答えのみで、なにか新しい情報が得られたわけではありませんでした。

MattCutts氏いわく

Google continues to work on better/smarter ways to crawl websites, including getting better at executing JavaScript to discover content.(Googleはホームページをクロールするよりよい方法を模索し続ける、その中にはJavaScriptをもっとうまく実行してコンテンツを見つけることも含まれる)

とのことです。

クローラが回れるようになることによる危険性

WebMasterForumでtedster氏が

The processing of javascript links should not be news to anyone who’s been paying attention. It’s been happening (and discussed here) for several years. To protect those javascripted links takes another step – Disallow googlebot from crawling your JS file, for instance.

This change is about being able to crawl AJAX content, presumably without the clunky hash-bang workaround. The sky is not always falling 😉

と述べています。

どちらかというと、今までGoogleがたどれなかったJavaScript経由でのコンテンツが、Googleにクローリングされることになるので、予期せぬ自体が起こる可能性について、注意喚起しています。

ひとまずJavaScriptをクロールしないように(robots.txtなどで)しておくべきかもしれない、とtedster氏は述べています。

今までは、#!をつけてサイトマップを作り、HTMLフラグメントを返したものが基本的にインデックス対象でしたが、クローラが回れるようになったとすればコントロールが効きません。

大量の重複コンテンツや、キーワードスタッフィングが期せずして発生しないように、見なおす必要があるのではないかと思います。

結構これは、Googleのスピード感によっては要注意な出来事のように思います。

 

photo by by tsuda

お悩みの方へ。一回のご相談で解決することもあります
ラウンドナップ・コンサルティングへのお問合せ方法 お電話でのご相談もお気軽に。[048-234-3361](10〜16 土日祝日除)全国対応 24時間受付 お問合せメールフォーム