今日はニューヨークのアンディさんからの質問です。「Javascriptが最近ますます使われるようになってきています。ページ上のコンテンツを拡張したり、ユーザービリティを改善するのに役立つのですが、GooglebotはAJAXやJSやCSSなどページがロードされた時にソースが読み込まれたり、クリックトリガーで動作するようなものをどうやって処理しているのでしょうか?」
matt:グレートな質問ありがとう!2013年5月8日に収録したビデオでも触れたことがありますが、今日は最新の状況についてお話しましょう。
matt:グーグルはJavascriptのインデックスについても非常に上手になっています。スクリプトによってレンダリングされるものなどもきちんとインデックスして、検索結果に反映するような部分ですね。
まずグーグルボットはページをクロールして、どのページをインデックスすべきか判断します。書かれている言葉や単語なども判断材料になりますが、その後、インデックスするページに対しては、普通のブラウザと同じように、JavascriptやCSSをロードして実行させて本来のブラウザなら、どういう表示や動きがなされるのか再現するんです。
ページによっては、Javascriptを読み込むことでさまざまなイベント、例えば、onclickイベントみたいなトリガーイベントなども組み込まれているケースもありますね。
ただ、一般的には、ページのロードと同時にJavascriptの構文や(JSONなどのデータ)は読み込まれるものですね。一旦JavascriptやCSSが読み込まれると、グーグルボットをそれを実行することで、どんなものが再現されるのか把握できるのです。つまりJSONなどのデータリソースを含めきちんと読み込み、実行させて、普通のブラウザがやるのと同じようにレンダリング表示させて、重要な部分を再現可能なパッケージとしてきちんとインデックスするようにしています。
matt:こんな感じで、ほぼきちんと読み取れるようになっているのですが、まだ一点、iframe内に読み込まれるJavascriptについては現在取組中です。でも数か月ぐらいでこの問題も解決できると思います。技術課題やリソースの優先などいろいろありますが、まぁこんなところでしょう。
matt:今後はこうしたポイントも改善することで、インクルードされているようなスクリプトもきちんとインデックスされるようになるでしょう。どうでしょう。グーグルはAJAXやJavascriptについて、比較的先進的な仕事をしているのが分かっていただけたでしょうか?
ただ、一つ忠告ですが、なにもグーグルが唯一のサーチエンジンではないことも僕は理解しています。他にもある主要なサーチエンジンはグーグルのようにきちんとJavascriptの中身まで実行させてインデックスできないこともありますので、スタティックなHTMLバージョンで他主要サイトにもきちんとインデックスされたい!という方はもちろんいらっしゃるでしょう。でもグーグルがこうしたスクリプトをどう処理してどうインデックスできるようになっているのか、これから先どのようになるのかという視点で今回のお話を参考にしてもらえればと思います。
ねずみ小僧:iframe内に組み込まれたJSやAJAXなどは現時点では、まだきちんとレンダーできず、インデックスされない可能性があるということのようですね。ただこの課題も数か月先にはできるようになるかもとの事。
幅広い検索エンジンにきちんとインデックスさせるためにスタティックなHTMLでサイトを構成する点についても否定はしていませんが、今後の技術トレンド、ユーザーエクスペリエンスを鑑みて得られるものとそうでないものとを今回のビデオのお話で考えるきっかけにしてください!とういうことだと拝見させていただきました。