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

Next.js ISR(Incremental Static Regeneration)を初心者でもわかるように徹底解説!SSGを強化する最新技術

Next.js ISRとは?SSGを増強する最新仕組みをわかりやすく解説
Next.js ISRとは?SSGを増強する最新仕組みをわかりやすく解説

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

生徒

「先生、Next.jsのISRって聞いたんですけど、何のことですか?」

先生

「ISRはIncremental Static Regenerationの略で、Next.jsの新しい仕組みのひとつです。静的サイト生成(SSG)を使いながら、ページを必要に応じて自動で更新できる技術です。」

生徒

「静的サイト生成って、作ったページはずっと同じままじゃないんですか?」

先生

「その通りです。通常のSSGはビルド時にページを生成するので、新しいデータに対応するには再ビルドが必要です。ISRを使うと、ページを必要なときに自動で更新してくれます。」

生徒

「なるほど!じゃあ、ユーザーはいつでも最新の情報が見られるんですね?」

先生

「そうです。例えばブログやニュースサイトで、新しい記事がすぐに反映されるような仕組みを作れます。」

1. Next.js ISRとは?基本の仕組みを理解しよう

1. Next.js ISRとは?基本の仕組みを理解しよう
1. Next.js ISRとは?基本の仕組みを理解しよう

Next.js ISR(Incremental Static Regeneration)は、静的サイト生成(SSG)と動的サイト生成(SSR)のいいとこ取りの技術です。通常のSSGでは、ビルド時にHTMLが生成され、サーバーに配置されます。しかし、ISRでは、ビルド後でもページの再生成を設定した時間ごとに行うことができます。

これにより、最新情報を反映した静的ページを効率よく配信でき、ユーザー体験が向上します。

2. ISRを使うメリットは何ですか?

2. ISRを使うメリットは何ですか?
2. ISRを使うメリットは何ですか?

ISRの最大のメリットは次の通りです。

  • 最新情報を自動で反映できる
  • サーバー負荷を抑えつつ高速表示が可能
  • ビルドの時間を短縮できる

例えば、ニュースサイトやECサイトの商品一覧ページなど、頻繁に更新される情報を扱う場合に非常に便利です。

3. ISRの基本的な使い方

3. ISRの基本的な使い方
3. ISRの基本的な使い方

ISRを使うには、Next.jsのページでgetStaticProps関数を使用し、revalidateというオプションを設定します。これにより、指定した秒数ごとにページが再生成されます。


export async function getStaticProps() {
  const data = await fetch("https://api.example.com/posts").then(res => res.json());

  return {
    props: { posts: data },
    revalidate: 10, // 10秒ごとに再生成
  };
}

function Posts({ posts }) {
  return (
    <div>
      <h1>最新記事一覧</h1>
      <ul>
        {posts.map(post => (
          <li key={post.id}>{post.title}</li>
        ))}
      </ul>
    </div>
  );
}

export default Posts;
(画面に最新記事一覧が表示され、APIのデータが更新されると10秒ごとに自動で新しい内容に変わります)

4. ISRと通常のSSGの違い

4. ISRと通常のSSGの違い
4. ISRと通常のSSGの違い

通常のSSGはビルド時にしかページが生成されません。したがって、データが変更されても再ビルドを行うまで反映されません。ISRを使うと、再生成タイミングを設定できるため、最新データを静的ページで提供しつつ高速表示も実現できます。

5. ISRで便利な活用例

5. ISRで便利な活用例
5. ISRで便利な活用例

ISRは様々なシーンで活用できます。例えば:

  • ブログの投稿一覧や詳細ページ
  • ECサイトの商品一覧や在庫情報
  • ニュース速報やイベント情報のページ

これらのページでは、ユーザーに常に最新情報を提供しながら、ページ表示の高速化も可能です。


export async function getStaticProps() {
  const products = await fetch("https://api.example.com/products").then(res => res.json());

  return {
    props: { products },
    revalidate: 60, // 1分ごとに再生成
  };
}

function ProductList({ products }) {
  return (
    <div>
      <h1>商品一覧</h1>
      {products.map(p => (
        <div key={p.id}>{p.name} - {p.price}円</div>
      ))}
    </div>
  );
}

export default ProductList;
(商品情報が更新されると、1分ごとに自動で最新情報が表示されます)

6. ISRを使うときの注意点

6. ISRを使うときの注意点
6. ISRを使うときの注意点

ISRを使用する際にはいくつかの注意点があります。

  • 再生成の間隔(revalidate)は短すぎるとサーバー負荷が高くなる
  • 大規模サイトではキャッシュ戦略も考慮する
  • APIのレスポンスが遅い場合、ページ生成が遅延することがある

適切な間隔を設定し、キャッシュやCDNを活用することでISRを最大限活かせます。

7. ISRとSSG/SSRの違いを図でイメージしよう

7. ISRとSSG/SSRの違いを図でイメージしよう
7. ISRとSSG/SSRの違いを図でイメージしよう

簡単にイメージすると:

  • SSG: ビルド時に全ページ生成 → データ更新には再ビルド
  • SSR: リクエストごとにページ生成 → 常に最新だが表示が遅くなる場合あり
  • ISR: ビルド時に生成+設定時間ごとに再生成 → 高速表示+最新情報提供

この仕組みにより、ISRは高速性と最新性を両立できるNext.jsの画期的な技術です。

8. ISRのまとめ的ポイント

8. ISRのまとめ的ポイント
8. ISRのまとめ的ポイント

Next.jsのISRは、SSGを強化するための技術で、静的ページを高速に表示しつつ、最新データを定期的に反映できます。

  • getStaticPropsとrevalidateを使って設定する
  • ブログ、ECサイト、ニュースサイトに特に有効
  • キャッシュや再生成間隔を工夫してパフォーマンス最適化
これにより、ユーザーに快適な体験を提供しつつ、開発者も効率よくページを管理できます。


export async function getStaticProps() {
  const news = await fetch("https://api.example.com/news").then(res => res.json());

  return {
    props: { news },
    revalidate: 30, // 30秒ごとに再生成
  };
}

function NewsList({ news }) {
  return (
    <div>
      <h1>最新ニュース</h1>
      {news.map(n => (
        <div key={n.id}>{n.title}</div>
      ))}
    </div>
  );
}

export default NewsList;
(最新ニュースが30秒ごとに自動で更新され、ユーザーに常に最新情報を表示します)

まとめ

まとめ
まとめ

本記事ではNext.jsのISR(Incremental Static Regeneration)について、初心者でも理解できるように徹底的に解説しました。ISRは静的サイト生成(SSG)の利便性を活かしつつ、ページを必要なタイミングで自動更新できる仕組みで、ブログやニュースサイト、ECサイトなど、頻繁にデータが変わるページで特に有効です。従来のSSGではページ更新に再ビルドが必要で時間や手間がかかりましたが、ISRを使うことで最新情報を効率的に配信できます。

ISRを導入する際にはgetStaticProps関数とrevalidateオプションを活用することが基本で、再生成の間隔を適切に設定することでサーバー負荷を抑えつつ高速表示が可能です。ニュース速報や商品情報のようにリアルタイム性が求められるデータも、ISRなら静的ページとして高速に提供しつつ最新情報を反映できます。また、キャッシュやCDNを併用することでさらにパフォーマンスを向上させることができます。

本記事で紹介した活用例やポイントをまとめると以下の通りです。

  • 静的ページの高速表示と最新情報の自動更新を両立できる
  • ブログやニュース、ECサイトなど頻繁に更新が必要なページに最適
  • getStaticPropsとrevalidateで再生成のタイミングを柔軟に設定可能
  • サーバー負荷やパフォーマンスを考慮した再生成間隔の設定が重要
  • キャッシュやCDNと組み合わせることで最適化できる

サンプルプログラム


export async function getStaticProps() {
  const posts = await fetch("https://api.example.com/posts").then(res => res.json());

  return {
    props: { posts },
    revalidate: 15, // 15秒ごとに自動再生成
  };
}

function PostList({ posts }) {
  return (
    <div>
      <h1>最新記事一覧</h1>
      <ul>
        {posts.map(post => (
          <li key={post.id}>{post.title}</li>
        ))}
      </ul>
    </div>
  );
}

export default PostList;
(画面に最新記事一覧が表示され、APIデータが更新されると15秒ごとに自動で新しい内容に変わります)
先生と生徒の振り返り会話

生徒

「先生、ISRを使うと毎回サーバーにリクエストが行くSSRと何が違うんですか?」

先生

「SSRはリクエストがあるたびにページを生成するので、常に最新の情報が表示されますが、その分表示速度が遅くなる場合があります。ISRは一度静的ページとして生成した後、設定した時間ごとに再生成するので、最新情報を反映しつつ高速表示を実現できます。」

生徒

「なるほど。じゃあブログの一覧ページやECサイトの商品一覧もISRで効率的に更新できるんですね。」

先生

「その通りです。再生成間隔を適切に設定すれば、ユーザーは常に最新情報を見られますし、サーバーの負荷も抑えられます。さらにキャッシュやCDNを併用すれば、パフォーマンスを最大化できます。」

生徒

「再生成間隔を短くしすぎると問題はありますか?」

先生

「はい、あまりに短く設定するとサーバーに負荷がかかる場合があります。適切な時間を設定することが重要です。また、データが重いAPIを使う場合は、レスポンス時間によってページ生成が遅れる可能性もあるので注意が必要です。」

生徒

「まとめると、ISRは静的生成と自動更新を組み合わせて高速かつ最新情報を提供する技術で、ブログやニュース、ECサイトに最適ということですね。」

先生

「その通りです。Next.js ISRを使いこなせば、ユーザー体験を向上させながら効率的に開発・運用できます。」

カテゴリの一覧へ
新着記事
New1
React
Reactでキーボードイベントを活用する方法!onKeyDown, onKeyUp, onKeyPressを初心者向けに解説
New2
React
React useReducerとContext APIを組み合わせた本格的な状態管理ガイド
New3
React
ReactでPropsとStateを組み合わせてTodoアプリを作ろう!初心者でもできるReact入門
New4
React
Reactの条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐
人気記事
No.1
Java&Spring記事人気No1
React
Reactの子コンポーネントから親コンポーネントへデータを渡す方法を徹底解説!初心者にもわかるReactのイベントとデータの流れ
No.2
Java&Spring記事人気No2
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.3
Java&Spring記事人気No3
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.4
Java&Spring記事人気No4
React
Reactの学習ロードマップ!初心者が最短で習得する流れを完全ガイド
No.5
Java&Spring記事人気No5
React
React Context APIの値を更新する方法!useStateと組み合わせてデータを動かす初心者ガイド
No.6
Java&Spring記事人気No6
React
ReactのContext APIでログイン状態を管理する方法を完全解説!初心者でもわかる認証機能の実装
No.7
Java&Spring記事人気No7
React
React Context APIのレンダリング問題を解決!初心者でもわかるパフォーマンス最適化ガイド
No.8
Java&Spring記事人気No8
React
ReactのState管理ベストプラクティス!初心者でもわかる再レンダリング最適化の考え方