N.N. LLC. ロゴ - 千葉県船橋市のIT企業N.N. LLC.
技術ブログ

SPAのSEO対策 — Next.js・Nuxt.jsによるSSR/SSGの活用

6分で読めます
SPAのSEO対策 — Next.js・Nuxt.jsによるSSR/SSGの活用

SPAがSEOに不利とされる理由

SPA(Single Page Application)は、ページ遷移時にサーバーへの完全なリクエストを行わず、JavaScriptで動的にコンテンツを書き換えるWebアプリケーションのアーキテクチャです。React、Vue.js、Angularなどのフレームワークで構築されるSPAは、滑らかなユーザー体験を提供できる一方、SEOにおいていくつかの課題を抱えています。

Googlebotは現在JavaScriptのレンダリングに対応していますが、そのプロセスには課題があります。まず、Googlebotがページをクロールした時点ではHTMLに最小限のコンテンツしか含まれておらず、JavaScriptを実行して初めてコンテンツが生成されます。このレンダリング処理は「WRS(Web Rendering Service)」と呼ばれる別のキューで実行されるため、インデックスまでに遅延が生じます。また、JavaScriptの実行エラーやAPIの応答遅延によりコンテンツが正しくレンダリングされないリスクもあります。

レンダリング戦略の比較

CSR(Client-Side Rendering)

ブラウザ側でJavaScriptを実行してコンテンツを生成する方式です。初回ロード時のHTMLにはコンテンツが含まれず、SEOに最も不利な方式です。管理画面やログイン後の画面など、SEOが不要なページに適しています。

SSR(Server-Side Rendering)

サーバー側でJavaScriptを実行し、完全なHTMLをレスポンスとして返す方式です。Googlebotは通常のHTMLページと同じようにコンテンツを認識できるため、SEOに有利です。リクエストのたびにサーバーでレンダリング処理が実行されるため、動的コンテンツの配信に適しています。

  • メリット:常に最新のコンテンツを提供可能、動的データの反映が容易
  • デメリット:サーバー負荷が高い、TTFB(Time to First Byte)が長くなりやすい

SSG(Static Site Generation)

ビルド時にすべてのページを静的HTMLとして事前生成する方式です。CDNから静的ファイルを配信するため、最も高速なレスポンスが可能であり、SEOの観点からも最良の選択肢です。

  • メリット:最速のTTFBとLCP、サーバー負荷が極めて低い、CDN配信との相性が抜群
  • デメリット:ビルド時間がページ数に比例して増大する、コンテンツの更新にリビルドが必要

ISR(Incremental Static Regeneration)

Next.jsが提供するハイブリッド方式で、静的生成の高速性とSSRの動的性を組み合わせたアプローチです。初回リクエスト時は事前生成された静的ページを配信し、バックグラウンドで指定した間隔で再生成を行います。大規模サイトでSSGのビルド時間問題を解決する手段として注目されています。

Next.jsでのSEO最適化実装

Next.jsは、ReactベースのフレームワークでSSR、SSG、ISRをページ単位で使い分けられる柔軟性が特徴です。SEO対策に必要な機能が豊富に組み込まれています。

メタデータの設定

Next.js 13以降のApp Routerでは、metadataオブジェクトまたはgenerateMetadata関数でメタ情報を設定します。動的なメタデータ生成により、ページごとに最適化されたtitle、description、OGP情報を設定できます。

主要なSEO機能

  1. 自動サイトマップ生成sitemap.tsファイルを配置するだけでXMLサイトマップが自動生成される
  2. robots.txt管理robots.tsファイルで動的にrobots.txtを生成可能
  3. Image最適化:next/imageコンポーネントが画像のレスポンシブ化、WebP変換、遅延読み込みを自動処理
  4. 構造化データ:JSON-LDをページコンポーネント内でScript要素として出力可能

Nuxt.jsでのSEO最適化実装

Nuxt.jsは、Vue.jsベースのフレームワークで、同様にSSRとSSGをサポートしています。Nuxt 3では、useHead コンポーザブルによるメタデータ管理、自動ルーティングによるURL設計、nuxt-seoモジュールによる包括的なSEO機能などが提供されています。

  • useHead:各ページのhead要素をリアクティブに管理するコンポーザブル
  • useSeoMeta:SEO関連のメタタグをタイプセーフに設定するヘルパー
  • nuxt-simple-sitemap:サイトマップの自動生成モジュール
  • nuxt-og-image:OGP画像の動的生成モジュール

SPAのSEO対策は、適切なレンダリング戦略の選択とフレームワークのSEO機能の活用により、従来のサーバーサイドレンダリングと遜色ないSEOパフォーマンスを実現できます。プロジェクトの要件(コンテンツの更新頻度、ページ数、パーソナライゼーションの有無)を考慮して最適な戦略を選択することが成功の鍵です。

SPA
Next.js
Nuxt.js
SSR
SSG
SEO

関連記事