Webアプリケーションのレンダリング方式は、検索エンジンからの評価を大きく左右します。SPA(Single Page Application)で構築したサイトが検索結果に表示されない、SSR(Server Side Rendering)を導入したのにCore Web Vitalsが悪化した――こうした問題の多くは、レンダリング方式ごとのSEO特性を正しく把握していないことが原因です。

2025年12月にはGoogleがJavaScript SEOに関するドキュメントを3件更新し、SPAにおけるcanonical URLやエラーページの扱いに新たな注意点が追加されました。さらに、GPTBotやClaudeBotといったAIクローラーはJavaScriptを実行できないため、SSR/SSGの重要性は従来以上に高まっています。

レンダリング方式の全体像

Webページをブラウザに表示するまでの処理をどこで・いつ実行するかによって、レンダリング方式は大きく4つに分類されます。

方式正式名称HTMLの生成場所生成タイミング
CSR(SPA)Client Side Renderingブラウザユーザーアクセス時
SSRServer Side Renderingサーバーユーザーアクセス時
SSGStatic Site Generationサーバービルド時(事前)
ISRIncremental Static Regenerationサーバービルド時+一定間隔で再生成

CSRとSSRは「リクエストのたびにHTMLを生成する」点で共通しますが、その処理主体がブラウザかサーバーかで異なります。SSGとISRは「事前にHTMLを生成しておく」アプローチですが、ISRはコンテンツの鮮度を保つ仕組みを備えています。

CSR(SPA)の仕組みとSEOへの影響

CSRでは、サーバーはほぼ空のHTMLファイルとJavaScriptバンドルを返します。ブラウザがJavaScriptを実行し、DOMを構築してページの内容を画面に表示します。

<!-- CSR/SPAの場合、サーバーが返すHTML -->
<!DOCTYPE html>
<html>
<head><title>My App</title></head>
<body>
  <div id="root"></div>  <!-- 中身は空 -->
  <script src="/bundle.js"></script>
</body>
</html>

このアプローチではページ遷移時にHTMLの再読み込みが不要なため、操作感はネイティブアプリに近くなります。一方、SEOの観点では以下の問題が発生します。

Googlebotの処理遅延

Googlebotは2段階でページを処理します。まずHTMLをクロールし、次にヘッドレスChromiumでJavaScriptをレンダリングします。GoogleのMartin Splitt氏がChrome Dev Summit 2019で明らかにしたデータによると、クロールからレンダリング完了までの中央値は約5秒です(出典: Onely)。Google公式ドキュメントでは「数秒かかる場合があるが、それ以上かかることもある」と記載されています(出典: Google Developers)。

ただし、これはレンダリングキューの待ち時間であり、実際のインデックス完了までにはさらに時間がかかります。SEO調査会社Onelyの検証では、JavaScriptに依存するページの5〜50%が、サイトマップ送信から2週間後もインデックスされないままだったと報告されています(出典: Onely)。

AIクローラーはJavaScriptを実行しない

2025年以降、検索体験に大きな変化をもたらしているのがAIクローラーの台頭です。Vercelの調査によると、GPTBotの月間リクエスト数は約5億6,900万件、ClaudeBotは約3億7,000万件に達しています(出典: Vercel)。

GPTBotやClaudeBotはJavaScriptを実行する能力を持っていません。CSR/SPAで構築されたサイトでは、これらのクローラーは空の<div id="root"></div>しか取得できず、コンテンツをまったく認識できません。AI検索(ChatGPT検索、Claude検索など)からの流入を獲得するためには、サーバー側でHTMLを生成する方式が不可欠です。

2025年12月 Google公式ドキュメントの更新

2025年12月15日〜18日にかけて、GoogleはJavaScript SEOに関する3つの重要なドキュメント更新を行いました。

1. canonical URLの扱い SPAでJavaScriptによりcanonical URLを書き換える場合、初期HTMLにはcanonicalタグを記述しないことが推奨されるようになりました。クロール時とレンダリング後でcanonical URLが異なると、Googleが誤ったURLをインデックスする可能性があるためです(出典: Search Engine Journal)。

2. エラーページのHTTPステータスコード SPAのクライアントサイドルーティングで404ページを表示する場合でも、HTTPステータスコードとして200を返すのではなく、正しく404を返す必要があります。200ステータスで返されたページは「レンダリングキューに送られない可能性がある」とGoogleは明記しています。

3. noindexディレクティブの挙動 Googlebotがnoindexタグを検出した場合、レンダリングとJavaScriptの実行をスキップすることがあります。JavaScriptでnoindexを解除する実装は「期待どおりに動作しない可能性がある」と警告されています。

SSR(サーバーサイドレンダリング)の仕組みとSEO特性

SSRでは、ユーザーのリクエストごとにサーバー上でReactやVueのコンポーネントを実行し、完成したHTMLをブラウザに返します。ブラウザはまず静的なHTMLを表示し、その後JavaScriptを読み込んでインタラクティブな機能を有効化します(この処理をハイドレーションと呼びます)。

ユーザー → サーバー → HTMLを生成 → ブラウザに送信
                              HTMLを表示(即座に閲覧可能)
                              JSを読み込み → ハイドレーション
                              インタラクティブに操作可能

SEOにおける強み

  • クローラーが完成したHTMLを直接取得できる:Googlebotのレンダリングキュー待ちが不要になり、インデックス速度が向上します
  • AIクローラーにもコンテンツを配信できる:JavaScriptを実行しないGPTBotやClaudeBotにも完全なHTMLが提供されます
  • 動的なメタ情報をページごとに生成できる<title>タグやOGPタグをリクエスト時にサーバー側で挿入するため、ページごとに最適化された検索結果の表示が可能です

考慮すべき点

  • サーバー負荷が高い:リクエストごとにHTML生成を行うため、アクセス数に比例してサーバーリソースが必要になります。CDNエッジでSSRを実行するエッジレンダリングで負荷を分散する方法もあります
  • TTFB(Time to First Byte)が長くなりやすい:サーバーの処理時間がレスポンスに直結するため、重い計算や外部API呼び出しがあるとTTFBが悪化します
  • ハイドレーション不一致:サーバーで生成したHTMLとクライアント側のJavaScriptが生成するDOMにずれがあると、画面のちらつきやエラーが発生します

SSG(静的サイト生成)の仕組みとSEO特性

SSGでは、ビルド時にすべてのページのHTMLを事前に生成し、CDNから配信します。ユーザーのリクエスト時にはサーバーサイドの処理が一切発生しないため、最も高速なレスポンスを実現できます。

SEOにおける強み

  • LCP(Largest Contentful Paint)が最も良好:事前生成された静的HTMLをCDNから配信するため、レスポンス速度が非常に速く、Core Web VitalsのLCPスコアが有利になります
  • サーバー負荷がほぼゼロ:CDNキャッシュからの配信のため、大量アクセスにも耐えられます
  • クローラーとの相性が最も良い:完全なHTMLが常に存在するため、Googlebot・AIクローラーの両方に最適です

考慮すべき点

  • コンテンツの更新にビルドが必要:記事の修正やデータの変更を反映するたびにビルドを実行する必要があります
  • ページ数が多いとビルド時間が長大化する:数万ページ規模のサイトでは、ビルドに数十分〜数時間かかる場合があります
  • リアルタイム性のあるコンテンツには不向き:在庫数やユーザーごとのパーソナライズなど、リクエスト時点のデータを反映する必要がある場合には適しません

ISR(インクリメンタル静的再生成)

ISRは、SSGの高速配信とSSRの動的更新を組み合わせた方式です。ビルド時に静的HTMLを生成しつつ、一定の再検証間隔(revalidate)を設けることで、バックグラウンドで最新コンテンツへの再生成を行います。

// Next.js App RouterでのISR設定例
// app/blog/[slug]/page.tsx
export const revalidate = 3600; // 1時間ごとに再検証

export default async function BlogPost({ params }) {
  const post = await getPost(params.slug);
  return <article>{post.content}</article>;
}

ユーザーはキャッシュ済みの静的ページにアクセスするため表示は高速で、次のリクエストをトリガーにバックグラウンドで再生成が実行されます。ECサイトの商品ページやニュースサイトのように「頻繁に更新されるが、数分〜数時間の遅延は許容できる」コンテンツに適しています。

React Server Components(RSC)の登場とSEOへの影響

2025年以降のフロントエンド開発で注目されているのが、React Server Components(RSC)です。従来のSSRとは異なるアプローチでサーバーサイド処理を実現します。

SSRとRSCの違い

項目従来のSSRReact Server Components
レンダリング対象コンポーネントツリー全体サーバーコンポーネントのみ
クライアントへのJS送信全コンポーネントのJSを送信サーバーコンポーネントのJSは送信しない
ハイドレーションツリー全体をハイドレーションクライアントコンポーネントのみ
ストリーミング対応(フレームワーク依存)React Suspenseと統合

RSCでは、データ取得やレイアウトなどの処理をサーバーコンポーネントとして実装し、ボタンやフォームなどのインタラクティブな部分だけをクライアントコンポーネントとして実装します。サーバーコンポーネントのJavaScriptはブラウザに送信されないため、バンドルサイズが削減され、INP(Interaction to Next Paint)スコアの改善につながります(出典: react.dev)。

現時点でRSCをプロダクション環境で安定して利用できるフレームワークはNext.jsのApp Routerが事実上の主要な選択肢です。

レンダリング方式のSEO比較

各レンダリング方式のSEO関連特性を整理します。

評価軸CSR(SPA)SSRSSGISR
Googlebotの認識レンダリング後に認識(遅延あり)即座に認識即座に認識即座に認識
AIクローラーの認識不可可能可能可能
LCP(初期表示速度)遅い中程度最速最速(キャッシュ有効時)
TTFB速い(空HTMLのため)遅くなりやすい最速最速(キャッシュ有効時)
コンテンツの鮮度リアルタイムリアルタイムビルド時点で固定再検証間隔で更新
サーバー負荷低い高い最も低い低い
ページ単位のmeta最適化困難(JS依存)容易容易容易

Core Web VitalsとRenderingの関係

Googleはページエクスペリエンスの指標としてCore Web Vitalsを検索ランキングに反映しています。2024年3月にFID(First Input Delay)がINP(Interaction to Next Paint)に置き換わり、現在の3指標と基準値は以下のとおりです。

指標意味良好要改善不良
LCP最大コンテンツの表示時間2.5秒以下2.5〜4.0秒4.0秒超
INP操作に対する応答時間200ms以下200〜500ms500ms超
CLSレイアウトのずれ量0.1以下0.1〜0.250.25超

出典: web.dev

レンダリング方式によって各指標への影響が異なります。

  • LCP: SSGとISRが最も有利です。静的HTMLをCDNから配信するため、サーバーの応答時間がほぼゼロになります。SSRはサーバー処理時間が加算されるため、API呼び出しが多いページではLCPが悪化する可能性があります
  • INP: CSR/SPAは大量のJavaScriptをクライアントで実行するため、メインスレッドが長時間ブロックされ、INPが悪化しやすい傾向があります。RSCを採用するとクライアントに送信するJavaScript量が削減されるため、INPの改善が期待できます
  • CLS: SSRやSSGでは初期HTMLに正しいレイアウト情報が含まれるため、後からコンテンツが読み込まれて画面がずれるCLSの問題が起きにくくなります。CSR/SPAではデータ取得後にDOMが大きく変化するため、CLSが悪化しやすくなります

主要フレームワークのレンダリング対応状況

2026年2月時点の主要フレームワークの対応状況を比較します。

フレームワークベースライブラリCSRSSRSSGISRRSC特徴
Next.js 15React対応対応対応対応対応全方式をルート単位で切替可能。Turbopackによる高速ビルド
Nuxt 4Vue対応対応対応対応(ISG)非対応@nuxtjs/seoモジュールでSEO設定を一括管理
Astro 5非依存対応対応デフォルト非対応非対応ゼロJSがデフォルト。Islands Architectureで必要な部分だけ動的化
SvelteKitSvelte対応対応対応非対応非対応コンパイル時最適化によるバンドルサイズ最小化
RemixReact非対応デフォルト非対応非対応非対応SSR特化。ネストルーティングでデータ・CSS・モジュールを並列プリフェッチ

出典: Next.js公式ブログNuxt公式ドキュメントAstro 5リリースノート

フレームワーク選定のポイント

Reactベースのアプリケーションを構築する場合、Next.js 15がRSC対応も含めて最も選択肢が広くなります。Reactエコシステムとの親和性も高く、ルートごとにCSR・SSR・SSG・ISRを使い分けられる柔軟性があります。

Vueベースで開発する場合はNuxt 4が標準的な選択です。useSeoMetaコンポーザブルにより、型安全なメタデータ管理が組み込みで提供されています。

コンテンツ中心のサイト(ブログ、ドキュメント、コーポレートサイト)で、JavaScriptの使用を最小限に抑えたい場合はAstro 5が適しています。デフォルトでゼロJavaScriptの静的HTMLを生成し、インタラクティブな部分だけを「Island」として個別にハイドレーションするアプローチを取ります。

サイトの種類から選ぶレンダリング方式

サイトの特性に応じた推奨レンダリング方式を整理します。

サイトの種類推奨方式選定理由
ブログ・メディアサイトSSG or ISRコンテンツの更新頻度が低〜中程度。SEO最重要。ISRなら更新も自動反映
ECサイト(商品一覧・詳細)ISR or SSR在庫・価格の反映が必要。ISRの再検証間隔で多くのケースに対応可能
ECサイト(カート・決済)CSRログイン後の操作でありSEO不要。リアルタイムな状態管理が必要
コーポレートサイトSSG更新頻度が低くSEOを重視。ビルド時間も短い
ダッシュボード・管理画面CSR検索インデックス不要。リアルタイムデータの操作が中心
SNS・コミュニティSSRユーザー投稿が頻繁に更新される。パーソナライズされた表示が必要
ドキュメントサイトSSG(Astro推奨)大量のページを高速配信。JavaScriptは最小限で済む
ニュースサイトISR速報性とSEO両立。5〜60分程度の再検証間隔で運用

1つのサイト内でも、公開ページはSSG/ISR、管理画面はCSRというように、ルートごとに方式を使い分けるのが現在の主流です。Next.jsやNuxtではこのハイブリッドアプローチが標準的にサポートされています。

ダイナミックレンダリングの廃止とその代替策

以前はSPA向けのSEO対策として、クローラーにだけサーバーレンダリング済みHTMLを返す「ダイナミックレンダリング」が推奨されていました。Googleは現在、このアプローチを非推奨と明確に位置づけています。

Googleの公式ドキュメントでは「ダイナミックレンダリングは回避策であり、JavaScriptで生成されたコンテンツの問題に対する長期的な解決策ではない」と記載されています。エラーが発生しやすく、サーバーの複雑性を増加させ、インデックスの不整合を招くリスクがあるためです(出典: Google Developers)。

代わりに推奨されているのは以下の3つです。

  1. SSR:サーバーサイドでHTMLを生成し、すべてのクライアントに同一のコンテンツを配信する
  2. SSG:ビルド時にHTMLを生成し、CDNから配信する
  3. ハイドレーション:静的HTMLとクライアントサイドJavaScriptを組み合わせる

いずれもクローラーと一般ユーザーに同じHTMLを配信するため、クローキングのリスクがなく、メンテナンスコストも低く抑えられます。

よくある疑問

SPAでもGoogleにインデックスされますか?

Googlebotはヘッドレスchromiumを搭載しており、JavaScriptを実行してSPAのコンテンツを認識できます。ただし、レンダリングキューでの待ち時間が発生するため、インデックスまでの時間がSSR/SSGと比べて遅くなります。また、GPTBotなどのAIクローラーはJavaScriptを実行できないため、AIベースの検索サービスには表示されません。

SSRを導入すればSEOは万全ですか?

SSR自体はクローラビリティを確保する手段であり、SEOの一要素に過ぎません。コンテンツの品質、内部リンク構造、構造化データ、ページ速度(Core Web Vitals)など、他の要因も総合的に評価されます。SSRを導入したうえで、サーバーの応答速度やハイドレーションの整合性にも注意を払う必要があります。

SSGとISRはどちらを選ぶべきですか?

更新頻度が月に数回程度であればSSG、日に数回〜数時間ごとの更新があるならISRが適しています。SSGは手動でビルドを実行する運用が必要ですが、ISRは再検証間隔を設定すればバックグラウンドで自動的にコンテンツが更新されます。ページ数が数万を超える大規模サイトでは、ビルド時間の観点からもISRが実用的です。

まとめ

レンダリング方式の選択は、サイトのSEOパフォーマンスに直結します。押さえるべきポイントは3つです。

  1. CSR/SPAは検索エンジン対策には不利:Googlebotのレンダリング遅延に加え、AIクローラーにはコンテンツがまったく見えません。公開ページにCSRを使用する場合は、SSRまたはSSGへの移行を検討する価値があります
  2. SSG/ISRがSEOには最も有利:事前に完成したHTMLをCDNから配信するため、クローラー認識・表示速度の両面で優れています。コンテンツの更新頻度に応じてSSGかISRを使い分けてください
  3. 1サイト内で方式を使い分けるのが現在の標準:公開ページはSSG/ISR、動的な機能はSSR、ログイン後の画面はCSRといったハイブリッド構成が、Next.js 15やNuxt 4では標準的にサポートされています

2025年12月のGoogle公式ドキュメント更新やAIクローラーの急増を踏まえると、JavaScriptに依存した描画を公開ページで使い続けることのリスクは高まる一方です。フレームワークの選定とレンダリング方式の設計を、SEO戦略の初期段階から組み込むことが検索流入の確保に直結します。