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

Next.js ISR(Incremental Static Regeneration)が必要になるケースを初心者向けに解説

Next.js ISRが必要になる具体的なケースとは?
Next.js ISRが必要になる具体的なケースとは?

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

生徒

「先生、Next.jsで作ったページって、いつも同じ内容しか表示されないんですか?」

先生

「基本的に、Next.jsの静的生成(Static Generation)では、ビルドしたときの内容がずっと表示されます。でも、時間が経つと最新情報を表示したい場合もありますよね。」

生徒

「ああ、ニュースサイトやブログみたいに新しい情報が増えるときですね。」

先生

「そうです。そこでISR(Incremental Static Regeneration)が役立ちます。古いページはそのまま表示しつつ、指定した時間ごとに自動で最新情報に更新できます。」

生徒

「具体的にどんな場合にISRを使うんですか?」

先生

「それでは、具体例を交えて順番に見ていきましょう。」

1. ISRとは何かを初心者向けに解説

1. ISRとは何かを初心者向けに解説
1. ISRとは何かを初心者向けに解説

ISRとは「Incremental Static Regeneration」の略で、静的生成されたページを部分的に自動更新できる仕組みです。静的生成は高速ですが、一度生成すると内容が変わりません。ISRを使うと、生成済みのページをキャッシュしたまま、新しい情報が必要なタイミングで更新できます。

2. ISRが必要になるケース1:ニュースサイトやブログ

2. ISRが必要になるケース1:ニュースサイトやブログ
2. ISRが必要になるケース1:ニュースサイトやブログ

ニュースやブログ記事は、日々新しい情報が追加されます。全てのページを毎回サーバーサイドで生成するSSR(Server Side Rendering)もできますが、アクセスが多いとサーバーに負荷がかかります。ISRを使うと、古いページはキャッシュしつつ、一定時間ごとに新しい記事に更新できるため、表示速度と最新情報のバランスが取れます。


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

  return {
    props: { posts },
    revalidate: 60, // 60秒ごとにページを再生成
  };
}
(画面には最新の投稿一覧が表示され、60秒ごとに自動で最新情報に更新されます)

3. ISRが必要になるケース2:商品一覧やECサイト

3. ISRが必要になるケース2:商品一覧やECサイト
3. ISRが必要になるケース2:商品一覧やECサイト

ECサイトの商品在庫や価格は頻繁に変わることがあります。全てをリアルタイムでSSRするよりも、ISRでキャッシュを使いつつ更新する方がサーバー負荷が少なく効率的です。


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

  return {
    props: { products },
    revalidate: 300, // 5分ごとにページを再生成
  };
}
(画面には商品一覧が表示され、5分ごとに最新の在庫や価格に更新されます)

4. ISRが必要になるケース3:ランキングや人気記事の更新

4. ISRが必要になるケース3:ランキングや人気記事の更新
4. ISRが必要になるケース3:ランキングや人気記事の更新

ユーザーのアクセス数や人気度に応じてランキングを更新したい場合、ISRが便利です。ランキングデータをリアルタイムに取得するSSRよりも、キャッシュを使ったISRの方が高速で表示できます。


export async function getStaticProps() {
  const res = await fetch('https://example.com/top-articles');
  const topArticles = await res.json();

  return {
    props: { topArticles },
    revalidate: 120, // 2分ごとに再生成
  };
}
(画面には人気記事ランキングが表示され、2分ごとに最新のランキングに更新されます)

5. ISRが必要になるケース4:天気やイベント情報などの定期更新

5. ISRが必要になるケース4:天気やイベント情報などの定期更新
5. ISRが必要になるケース4:天気やイベント情報などの定期更新

天気予報やイベント情報など、数分ごとに情報が変わるものは、完全なSSRではなくISRを使うことで効率的に最新情報を表示できます。これにより、アクセスが集中しても高速に表示できます。


export async function getStaticProps() {
  const res = await fetch('https://example.com/weather');
  const weather = await res.json();

  return {
    props: { weather },
    revalidate: 600, // 10分ごとにページを再生成
  };
}
(画面には最新の天気情報が表示され、10分ごとに自動更新されます)

6. ISRを使うとSEOと表示速度の両方に効果的

6. ISRを使うとSEOと表示速度の両方に効果的
6. ISRを使うとSEOと表示速度の両方に効果的

ISRは静的生成のメリットである高速表示を維持しつつ、古くなった情報を自動で更新できます。そのため、検索エンジンにも最新情報を提供でき、SEOにも有利です。特にアクセスの多いページや更新頻度の高いページで有効です。


function Page({ data }) {
  return (
    <div>
      <h1>最新情報</h1>
      <ul>
        {data.map(item => (
          <li key={item.id}>{item.title}</li>
        ))}
      </ul>
    </div>
  );
}

export default Page;
(画面には最新情報の一覧が表示され、ISRで指定した間隔ごとに更新されます)

7. ISRとSSR、SSGの違いを簡単に理解する

7. ISRとSSR、SSGの違いを簡単に理解する
7. ISRとSSR、SSGの違いを簡単に理解する

Next.jsでは3つの生成方法があります。SSG(Static Generation)はビルド時に固定ページを作る方法、SSR(Server Side Rendering)はアクセス時に毎回ページを作る方法、そしてISRはSSGをベースにしつつ、指定間隔で自動更新する方法です。これにより、最新情報を効率的に配信できます。


export async function getStaticProps() {
  const res = await fetch('https://example.com/data');
  const data = await res.json();

  return {
    props: { data },
    revalidate: 180, // 3分ごとに再生成
  };
}
(画面にはデータ一覧が表示され、3分ごとに自動で更新されます)

まとめ

まとめ
まとめ

今回の記事では、Next.jsにおけるISR(Incremental Static Regeneration)の基本的な概念から、具体的にどのようなケースでISRが必要になるのかまで詳しく解説しました。ISRは、静的生成(SSG)されたページを効率的に更新できる仕組みであり、ニュースサイト、ブログ、ECサイト、ランキング、天気やイベント情報など、情報が頻繁に変化するウェブサイトに特に有効です。従来のSSR(Server Side Rendering)ではアクセスが集中した場合にサーバー負荷が大きくなりますが、ISRを利用することでキャッシュを活用しつつ、一定間隔で自動更新することが可能になります。これにより、ページの高速表示と最新情報の提供の両立が可能です。

具体的な例として、ニュース記事一覧では60秒ごとに更新、ECサイトの商品一覧では5分ごとに更新、人気ランキングでは2分ごとに更新、天気情報では10分ごとに更新と、更新間隔を状況に応じて設定することができます。このようにISRは、アクセスが多く更新頻度も高いページに最適化されており、SEOの観点からも検索エンジンに最新情報を提供できるというメリットがあります。

また、Next.jsにおける生成方法の比較も重要です。SSG(Static Generation)はビルド時に固定ページを生成するため高速表示が可能ですが、情報が古くなる可能性があります。SSRはアクセス時に毎回ページを生成するため常に最新情報を表示できますが、アクセスが多い場合はサーバー負荷が高くなります。ISRは、SSGをベースにしつつ、指定間隔で自動更新することで、高速表示と最新情報の提供を両立させる理想的な方法です。

実際の実装では、getStaticPropsrevalidateを設定することで、簡単にISRを導入できます。これにより、ページはキャッシュされつつも、指定時間が経過すると自動的に再生成され、最新データが反映されます。アクセス集中時でも高速表示が維持されるため、ユーザー体験を損なわずに最新情報を提供できます。

さらに、ISRは単に表示速度や最新情報の提供にとどまらず、SEOにも大きく寄与します。検索エンジンはページの内容を評価する際、更新頻度や最新性も判断材料にしています。そのため、ISRで定期的に更新されるページは、検索エンジンにとって価値のあるコンテンツと認識されやすく、検索順位向上にもつながります。

最後に、ISRを使う際のポイントとして、更新間隔の設定があります。更新頻度が高すぎるとサーバー負荷が増え、低すぎると情報が古くなります。アクセス状況やデータ更新頻度に応じて、最適なrevalidateの値を設定することが重要です。これにより、パフォーマンスと最新情報提供のバランスを最適化できます。

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

生徒

「先生、ISRって結局どんな場合に使うのがベストなんですか?」

先生

「基本的には、情報が頻繁に更新されるけれども、アクセスが多くてサーバー負荷も考えたいページです。ニュースやブログ、ECサイトの商品情報、人気ランキング、天気情報などですね。」

生徒

「なるほど。SSRは毎回作るから重くなるし、SSGだけだと情報が古くなる。でもISRなら両方のいいとこ取りなんですね。」

先生

「その通りです。ISRを使えば、古いページはキャッシュして高速表示、更新が必要なタイミングで自動再生成できます。しかもSEO的にも有利です。」

生徒

「実装もgetStaticPropsrevalidateを設定するだけで簡単にできるんですよね?」

先生

「はい、例えばニュース記事一覧なら60秒ごとに更新、商品一覧なら5分ごと、ランキングなら2分ごと、天気情報なら10分ごとに設定するなど、用途に応じて調整できます。簡単ですが効果は大きいですよ。」

生徒

「なるほど。これでユーザーにも最新情報を素早く届けられて、SEOも強化できるんですね。」

先生

「その通りです。ISRを正しく使えば、高速表示と最新情報提供の両立が可能になり、ユーザー体験もSEOも改善できます。」

カテゴリの一覧へ
新着記事
New1
React
React Context APIのパフォーマンス最適化を徹底解説!useMemoで無駄な描画を防ぐ方法
New2
React
ReactのProps必須・オプショナル指定を完全解説!初心者でもわかる型安全なProps管理
New3
React
Reactでデフォルト動作を止める!preventDefaultの使い方を初心者向けに解説
New4
Next.js
Next.js ISR(Incremental Static Regeneration)が必要になるケースを初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
React
Reactの子コンポーネントから親コンポーネントへデータを渡す方法を徹底解説!初心者にもわかるReactのイベントとデータの流れ
No.2
Java&Spring記事人気No2
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.3
Java&Spring記事人気No3
React
React開発におすすめのVSCode拡張機能まとめ!初心者でもすぐ使える便利ツール紹介
No.4
Java&Spring記事人気No4
React
ReactのContext APIとReduxの違いを初心者向けに徹底比較!どちらを使うべきか完全解説
No.5
Java&Spring記事人気No5
React
ReactのState管理ベストプラクティス!初心者でもわかる再レンダリング最適化の考え方
No.6
Java&Spring記事人気No6
React
React(TypeScript)で学ぶStateの型推論と型指定の違い!型安全なState管理を初心者向けにやさしく解説
No.7
Java&Spring記事人気No7
Next.js
Next.jsのSSR(Server Side Rendering)入門!Pages Routerとの違いを初心者向けに解説
No.8
Java&Spring記事人気No8
Next.js
Next.jsのServer ComponentsとClient Componentsの通信方法を完全解説!props渡しの基本と使い方