この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
Googlebotでjavascriptが読み込める様になってきてはいますが、最新のjavascriptの機能には対応しておらず、chrome41で動いているようです(2018/7ではバージョン67)。そのためブラウザでは正常に表示されていてもgooglebotではエラーになり、javascriptが実行されない状態でキャッシュされてしまう可能性があるので注意です。ちなみにこのレンダリング機能のことをWebレンダリングサービス(WRS)と言うそうです。
chrome41のWRSでサポートされている機能、されていない機能は以下で確認できます。
●chrome41でサポートされている機能
https://www.chromestatus.com/features#milestone%3C%3D41
●chrome41でサポートされていない機能
https://www.chromestatus.com/features#milestone%3E41
個人的な感覚ではIEと同じような対応範囲です。逆にIEにjavascriptが対応していればgooglebotでも動くかなと思います。
また、googlebotはchrome41といってもブラウザの表示と全く同じではなく、
- WebSQLやService Worker、WebGL
- は無効 ローカルストレージやCookieはクリアされる
- 許可が必要なものは許可しない(Notificationsなど)
などの違いがあります。
このようにブラウザの表示と違いがあるため、googlebotがどのようにページを取得しているかちゃんと確認する必要があります。
search consoleの
・Fetch as Google
https://www.google.com/webmasters/tools/googlebot-fetch
・(スマホの場合)モバイルフレンドリーテスト
https://search.google.com/test/mobile-friendly
などで確認でき、エラーがあった場合もエラー内容が返却されるためわかりやすいです。
javascriptで画面を作成した後は、googlebotで正常に動くか確かめた方がよいかもしれません。