AjaxやSPAのHTMLスナップショットをSEO向けに作る必要はなし

[レベル: 上級]

JavaScriptを利用したウェブアプリケーションで生成するコンテンツをGoogleにクロール、インデックスさせるには、従来は“HTMLスナップショット”が必要でした。
僕たちが使うブラウザとは異なり、検索エンジンのクローラはウェブアプリケーションを実行できません。
そこで、実行された後の状態のページをスナップショットとしてあらかじめ準備しておき、それを検索エンジンに見せるのです

しかし現在は、多くの状況でスナップショットの作成は必要ないようです。
Googleはスナップショットなしでもウェブアプリケーションを実行し、それによって作られたコンテンツをクロール、インデックスできます。

ブラウザがやれることはGooglebotにもやれる

Stack Overflowでの、JavaScriptフレームワークやSPA(Single Page Application: シングル ページ アプリケーション)を使用した環境でのSEOにかかわる質問にGoogleのGary Illyes(ゲイリー・イリーズ)氏は次のようにアドバイスしています。
※SPAとは、HTML5やJavaScriptなどの複数の技術を使った単一ページでのウェブアプリケーション。オープン性がある、プラグインに依存しない、高速に動作する、UIに優れるなどの特徴がある。

Most of the major search engines (including Google) are rendering the content they receive from the website, in our (Google’s) case with something close to a headless browser, so whatever you do for the users the search engines will also get it.

Googleを含む、ほとんどのメジャーな検索エンジンはウェブサイトから取得するコンテンツをレンダリングしている。Googleの場合はヘッドレスブラウザに近い感じだ。だからユーザーに対してやることは何であれ、検索エンジンも取得できる。

Taking a step back, do you actually need snapshots? Most of the major search engines (including Google) are rendering the content they receive from the website, in our (Google’s) case with something close to a headless browser, so whatever you do for the users the search engines will also get it.

一歩下がって見てみれば、スナップショットが本当に必要だろうか? Googleを含む、ほとんどのメジャーな検索エンジンはウェブサイトから取得するコンテンツをレンダリングしている。Googleの場合はヘッドレスブラウザに近い感じだ。だからユーザーに対してやることは何であれ、検索エンジンも取得できる。

下は、Ajaxコンテンツをクロール・インデックスさせるためにGoogleが公開している仕様を紹介したうえでイリーズ氏が付け加えたアドバイスです。

One thing to keep in mind though, is that most big search engines, including Google, already renders the pages just like a normal browser would, so perhaps you don’t even need to create the HTML snapshot.

だが1つ覚えておきたいことは、Googleを含む大手の検索エンジンは普通のブラウザがレンダリングするのとまったく同じようにページをすでにレンダリングできるということだ。もしかしたら、HTMLスナップショットを作成する必要すらないかもしれない。

現在のGoogleにはスナップショットは不要か

GooglebotがJavaScriptを上手に解釈できるようになっていることをGoogleが大々的に公表したのが1年少し前でした。
以来、その能力をさらに伸ばしているようです。

今年6月のSMX AdvancedでGoogleのMalie Ohye(マイリー・オーイェ)さんは、Googlebotのレンダリング能力が向上していることを説明し、ブラウザで見えるものはGooglebotにも見えると話してくれました。
またマイリーさんはイリーズ氏同様に、Ajaxコンテンツのスナップショットは不要だとも言っていました。

JavaScriptファイルをブロックしない、ユニークなURLを割り当てるなどの注意点はありますが、現在のGoogleではAjaxにせよSPAにせよ、HTMLスナップショットを準備する必要は本当にないのかもしれません。

もちろん、あらゆる環境で不要とは限りません。
ですが、スナップショットを準備しない状態でコンテンツがきちんとクロール、インデックスされているかをまず先に検証したほうがいいでしょう。
スナップショットを作らなくて済むならそれに越したことはありません。
作業コストを大きく減らせるはずです。

それに今の推奨構成のサポートを終了するという話も出ているので、時間をかけた割にはあっさり切り捨てられたということになってしまう可能性もあります。

【UPDATE】
Googleの長山さんからメッセージをいただきました。
うまくインデックスできていないケースがあればフィードバックしてほしいとのことです。