カテゴリ: Next.js 更新日: 2026/03/28

Next.jsのSSR(Server Side Rendering)入門!Pages Routerとの違いを初心者向けに解説

Next.js Pages RouterでのSSRとの違い
Next.js Pages RouterでのSSRとの違い

先生と生徒の会話形式で理解しよう

生徒

「先生、Next.jsでSSRって何ですか?」

先生

「SSRはServer Side Renderingの略で、サーバー側でWebページを作ってからブラウザに送る仕組みです。」

生徒

「えっと、ブラウザで作るのとどう違うんですか?」

先生

「普通のブラウザで作る方法はCSR(Client Side Rendering)と言って、画面に何もない状態でデータを取ってきて表示します。SSRは最初からHTMLを作って送るので、ページが早く表示されます。」

生徒

「Pages Routerっていうのもあると聞きました。SSRとどう違うんですか?」

先生

「Next.jsのPages Routerはページごとにファイルを作ってルーティングする方法です。SSRもPages Routerと一緒に使えますが、データの取得方法やタイミングが少し違います。」

1. SSRとは?サーバーでページを作る仕組み

1. SSRとは?サーバーでページを作る仕組み
1. SSRとは?サーバーでページを作る仕組み

SSR(Server Side Rendering)は、サーバー側でHTMLを生成してブラウザに送る仕組みです。これにより、ページがすぐに表示されるのでユーザー体験が向上します。例えばニュースサイトやブログのトップページで、最初から記事が見えるようになるイメージです。

SSRを使うとSEOにも強くなります。検索エンジンがサーバーから送られてきたHTMLを直接読むことができるためです。

2. Next.js Pages Routerの基本

2. Next.js Pages Routerの基本
2. Next.js Pages Routerの基本

Next.jsでは「pages」フォルダにファイルを作るだけでルーティングが自動で設定されます。例えば


pages/index.js
pages/about.js

のように作ると、ブラウザで「/」や「/about」にアクセスできるようになります。

3. Pages RouterとSSRの組み合わせ

3. Pages RouterとSSRの組み合わせ
3. Pages RouterとSSRの組み合わせ

Pages Routerでは、サーバーサイドでデータを取得してからページを生成するには、特別な関数を使います。具体的にはgetServerSidePropsという関数です。


export async function getServerSideProps() {
  const res = await fetch("https://jsonplaceholder.typicode.com/posts/1");
  const data = await res.json();
  return { props: { post: data } };
}

function PostPage({ post }) {
  return (
    <div>
      <h1>{post.title}</h1>
      <p>{post.body}</p>
    </div>
  );
}

export default PostPage;
(ページにアクセスするとサーバーが記事データを取得して、タイトルと本文がすぐに表示されます)

4. CSRとの違いを体感しよう

4. CSRとの違いを体感しよう
4. CSRとの違いを体感しよう

CSR(Client Side Rendering)は、最初にHTMLはほとんど空で、ブラウザがJavaScriptでデータを取得して表示します。SSRはサーバーで作ったHTMLを送るので、ページが最初から表示されます。


import { useEffect, useState } from "react";

function PostCSR() {
  const [post, setPost] = useState(null);

  useEffect(() => {
    fetch("https://jsonplaceholder.typicode.com/posts/1")
      .then(res => res.json())
      .then(data => setPost(data));
  }, []);

  if (!post) return <p>読み込み中...</p>;

  return (
    <div>
      <h1>{post.title}</h1>
      <p>{post.body}</p>
    </div>
  );
}

export default PostCSR;
(最初は「読み込み中…」と表示され、データを取得してから記事が表示されます)

5. getServerSidePropsの仕組みと注意点

5. getServerSidePropsの仕組みと注意点
5. getServerSidePropsの仕組みと注意点

getServerSidePropsはページアクセスのたびにサーバーで実行されます。これにより常に最新のデータを取得できますが、サーバーの処理時間が長いとページ表示も遅くなる可能性があります。


export async function getServerSideProps() {
  const res = await fetch("https://api.example.com/data");
  const data = await res.json();
  return { props: { data } };
}

function DataPage({ data }) {
  return (
    <div>
      <h2>データ一覧</h2>
      <ul>
        {data.map(item => (
          <li key={item.id}>{item.name}</li>
        ))}
      </ul>
    </div>
  );
}

export default DataPage;

6. Pages RouterだけでSSRを使わない場合

6. Pages RouterだけでSSRを使わない場合
6. Pages RouterだけでSSRを使わない場合

Pages Routerだけでもページを作ることは可能ですが、SSRを使わない場合はCSRとして動作します。つまりブラウザがデータを取得して描画するため、最初の表示が遅くなることがあります。


function About() {
  return <h1>Aboutページです</h1>;
}

export default About;
(ページにアクセスするとすぐに「Aboutページです」と表示されますが、データ取得が必要な場合は後で表示されます)

7. SSRを使うとSEOに強くなる理由

7. SSRを使うとSEOに強くなる理由
7. SSRを使うとSEOに強くなる理由

SSRはサーバーが作ったHTMLを送るので、検索エンジンのクローラーが内容をすぐに読み取れます。CSRではJavaScriptで動的に生成される部分が多いため、検索エンジンが正しく内容を読み取れない場合があります。

8. SSRとPages Routerを使った簡単まとめ

8. SSRとPages Routerを使った簡単まとめ
8. SSRとPages Routerを使った簡単まとめ

まとめると、Next.jsのPages Routerはページごとにルーティングを作る仕組みで、SSRはサーバーでHTMLを生成して送る仕組みです。getServerSidePropsを使うことでPages RouterでもSSRを活用できます。CSRよりも初期表示が速く、SEOに有利です。

まとめ

まとめ
まとめ

今回の記事では、Next.jsのSSR(Server Side Rendering)とPages Routerの基本的な使い方、そしてCSR(Client Side Rendering)との違いについて詳しく解説しました。SSRはサーバー側でページを生成しブラウザに送る仕組みであり、ユーザーがページを開いた瞬間にコンテンツが表示されるため、初期表示速度が速くユーザー体験が向上します。また、検索エンジンがサーバーから送られてきたHTMLを直接クロールできるため、SEOに強いのも大きなメリットです。Pages Routerはページごとのルーティングを簡単に設定できる仕組みで、getServerSidePropsを組み合わせることで、ページアクセス時にサーバーで最新データを取得し表示するSSRの機能を簡単に活用できます。

一方でCSRは、ブラウザ側でJavaScriptを使ってデータを取得して表示する仕組みです。初期表示は遅くなる場合がありますが、ユーザー操作に応じた動的更新が得意です。Next.jsでは、必要に応じてCSRとSSRを使い分けることができるため、用途やページの特性に応じて最適なレンダリング方式を選択することが重要です。また、SSRを使う際にはサーバー処理時間が長くなるとページ表示も遅くなるため、パフォーマンスへの配慮も必要です。getServerSidePropsを使う際には、API呼び出しやデータ取得の最適化も意識すると良いでしょう。

さらに、Pages Routerだけを使った場合はデフォルトでCSRとして動作します。つまり、HTMLは最初に空の状態で表示され、データ取得後に内容が描画されるため、データ量が多いページや初期表示速度が求められるページではSSRの活用を検討することが推奨されます。SEOやUXを考慮する場合、特に記事一覧やニュースページ、商品一覧ページなどはSSRを使用することで、検索エンジンによるインデックスやユーザーの満足度を高めることが可能です。

実際のReactコンポーネントでは、SSRで取得したデータをpropsとして受け取り、画面に表示することができます。以下のようにgetServerSidePropsを使ってサーバーサイドでデータを取得し、コンポーネントに渡すことで、常に最新の情報をユーザーに提供できます。


export async function getServerSideProps() {
  const res = await fetch("https://jsonplaceholder.typicode.com/posts/1");
  const data = await res.json();
  return { props: { post: data } };
}

function PostPage({ post }) {
  return (
    <div>
      <h1>{post.title}</h1>
      <p>{post.body}</p>
    </div>
  );
}

export default PostPage;
(ページにアクセスするとサーバーが記事データを取得して、タイトルと本文がすぐに表示されます)

まとめとして、Next.jsで効率的にSSRを活用するには、Pages Routerでのルーティング設計とgetServerSidePropsを組み合わせることが基本です。また、CSRとSSRの特性を理解し、ページごとの最適なレンダリング方式を選択することで、ユーザー体験とSEOの両方を向上させることが可能です。SSRのメリットは初期表示の高速化とSEOへの対応、CSRのメリットはインタラクティブなUIの実現と動的更新の柔軟性です。この二つのレンダリング方式を適切に組み合わせることで、より高品質なWebアプリケーションを構築できます。

先生と生徒の振り返り会話

生徒

「先生、SSRとCSRの違いがよくわかりました。SSRはサーバーでページを作るので早く表示されて、SEOにも強いんですね。」

先生

「そうです。CSRはブラウザでデータを取得して表示するので、初期表示は少し遅くなりますが、動的な更新が得意です。状況に応じて使い分けることが大切です。」

生徒

「getServerSidePropsってどういう場合に使うのですか?」p>

先生

「ページアクセス時に常に最新のデータを表示したい場合に使います。例えばニュース記事や商品情報など、更新頻度が高い情報に適しています。ただし、サーバー処理が長くなると表示速度が落ちるので注意が必要です。」

生徒

「Pages Routerだけでもページは作れますが、SSRを使わないと初期表示が遅くなるんですね。」

先生

「その通りです。必要に応じてCSRとSSRを組み合わせることで、ユーザー体験とSEOの両方を改善できます。」

生徒

「なるほど、Next.jsではSSRとCSRの特性を理解して使い分けることが重要なんですね。」

先生

「そうです。どのページで高速表示やSEOが必要かを考えて設計すると、より良いWebアプリケーションを作れます。」

カテゴリの一覧へ
新着記事
New1
React
React Context APIで多言語対応(i18n)を実装!初心者でもわかるサイト翻訳の仕組み
New2
React
Reactの環境構築とは?初心者でもできるセットアップ手順まとめ
New3
React
Reactでできること一覧!初心者でもわかるWebアプリ・スマホアプリ・PWAの活用方法
New4
Next.js
Next.jsのSSR(Server Side Rendering)入門!Pages Routerとの違いを初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
React
React開発におすすめのVSCode拡張機能まとめ!初心者でもすぐ使える便利ツール紹介
No.2
Java&Spring記事人気No2
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.3
Java&Spring記事人気No3
React
Reactでネストしたコンポーネントにデータを渡す方法を完全解説!Context APIで深い階層も簡単に
No.4
Java&Spring記事人気No4
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.5
Java&Spring記事人気No5
React
React(TypeScript)で学ぶStateの型推論と型指定の違い!型安全なState管理を初心者向けにやさしく解説
No.6
Java&Spring記事人気No6
React
ReactのPresentational Componentを完全ガイド!初心者でもわかるStateを持たないコンポーネントの特徴
No.7
Java&Spring記事人気No7
Next.js
Next.jsのダッシュボード構造におけるLayout設計を徹底解説!初心者でも理解できるLayoutとTemplateの使い方
No.8
Java&Spring記事人気No8
Next.js
Next.jsとReactの役割の違いを完全解説!初心者でもわかるNext.jsとReactの基本