[レベル: 中級]
ウェブページのコンテンツやリンクが JavaScript によって生成されたものであっても、きちんとレンダリングされていれば静的なコンテンツやリンクとまったく同じように評価されます。
ただし最終的な処理が完了するまでに、より長い時間がかかることがあります。
JS コンテンツも JS リンクも同等
Google の John Mueller(ジョン・ミューラー)氏が Twitter のフォロワーから次の質問を尋ねられました。
DOM の中で完全にレンダリングされれば、ほかのリンクのように JS リンクは PageRank を渡しますか?
ミューラー氏はこのように答えました。
渡す。どのようにして出現しようがリンクはリンクだ。もしそうじゃなかったら本当にはうまく機能しないだろう。
We've talked about this often :). Yes, a link is a link, regardless of how it comes to the page. It wouldn't really work otherwise :).
— John ☆.o(≧▽≦)o.☆ (@JohnMu) 2017年10月31日
ミューラー氏はまた、JavaScript と SEO をテーマにした Google グループでは、JS コンテンツの評価について次のように説明しています。
In the end, when we pull in content via JS from the rendered page, that content is treated exactly the same as other content on the page, so that should be equivalent.
同等になるように、JS 経由でレンダリングしたページからコンテンツを取得したときは、そのコンテンツはほかの(静的な)コンテンツと完全に同じように最終的には扱われる。
JavaScript で動的に生成されたコンテンツもリンクも、HTML に静的に存在しているコンテンツもリンクと何ら変わることなく評価されます。
もっとも、Googlebot が正常にレンダリングできていることが条件です。
ブラウザでは見えていても、Googlebot に見えていなければ認識されません。
Googlebot が正しくレンダリングできているかどうかは、Fetch as Google で検証できます。
JS コンテンツ/リンク の評価には時間がかかることも
JavaScript で生成されたコンテンツとリンクは、静的なコンテンツとリンクと同等の評価を受けるとしても、何から何まで 100% 同じということでもありません。
1つの違いは、評価が完了するまでにかかる時間です。
ミューラー氏は次のようにも補足しています。
There are some quirks still which do play a role (eg, it takes a bit longer to discover & crawl to links), but if it’s just content, you should be fine. Because of the links-thing, if you’re adding new pages and need them to be findable asap, I’d make sure to link them from static parts of your site, for example in a static sidebar or in a “news” section on your homepage.
それでも、得意な動きが(JavaScript リンクには)ある。リンクを発見してクロールするまでに、(静的リンクよりも)多少時間がかかる。
とはいえ、単にコンテンツであれば問題ない。
こうしたリンクに関する理由から、新しいページを追加してすぐにでも発見してもらう必要があるなら、静的なサイドバーやトップページの「新着」セクションなどサイトの静的な場所からリンクしたほうが絶対にいい。
Googlebot は JavaScript を認識し実行できます。
しかし、発見したと同時に実行するわけではありません。
HTML と、そのページで呼び出される JavaScript の実行は別プロセスです。
つまり HTML を取得した段階では、JS コンテンツや JS リンクをまだ Googlebot は処理していません。
しばらくしてからの処理になります。
クロール時点での JS の発見からその後の実行、そしてレンダリング後のページの最終的な評価までにどのくらいのタイムラグがあるのかは定かではありません。
ですが、初めから存在している静的なコンテンツとリンクに比べると時間がかかることは確かです。
JavaScript で生成されたコンテンツもリンクも、最終的な評価は静的なものと同等です。
そうであったとしても、最終的な評価の完了までに必要な時間という観点では、より長い時間がかかることがあります。
したがって、検索結果への反映も遅れることが可能性としては考えられます。