0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Next.jsにおけるPre-rendering: SSRとSSGについて

Posted at

React 界隈でいま最も勢いのあるフレームワークは、Next.js です。Next.js は React に最適化されたルーティングやミドルウェア機能を標準搭載し、そして SSR 機能も提供してくれるフレームワークです。

Next.jsはReactのエコシステム内で急速に普及しているフレームワークであり、その強力なPre-rendering機能が大きな魅力となっています。この記事では、その2つの主要なPre-rendering手法、SSRとSSGの違いと実装方法について詳しく解説します。

1. Server Side Rendering (SSR)

定義:

SSRは、クライアントからのリクエストがあるたびにサーバー上でページをレンダリングする方法です。

実装方法:

Next.jsでのSSRの実装は非常にシンプルです。ページコンポーネント内でgetServerSideProps関数を定義するだけです。

1.ユーザーからのリクエストがサーバーに送信される。
2.サーバーはリクエストごとにページをレンダリングします。
3.レンダリングされたページがユーザーに返され、ブラウザで表示されます。

export async function getServerSideProps(context) {
  // データフェッチやDBのクエリをここで行う
  const data = await fetchData();

  return {
    props: { data }
  };
}

function MyPage({ data }) {
  return (
    <div>
      {/* レンダリングのロジック */}
    </div>
  );
}

export default MyPage;
特徴と利点:
  • リアルタイムのデータを表示するのに適しています。
  • SEOのメリットがあります。検索エンジンはサーバーから返されるHTMLを直接クロールできます。
  • クッキーやユーザーエージェントなどのサーバーサイドの情報にアクセスできます。
デメリット:
  • トラフィックが多い場合、サーバーに大きな負荷がかかります。
  • CDNの利用が難しくなります。

2. Static Site Generation (SSG)

定義:

SSGは、ビルド時にページのHTMLを一度だけ生成し、その後はそのHTMLを再利用する方法です。

実装方法:

Next.jsでのSSGの実装もSSRと同様に簡単です。ページコンポーネント内でgetStaticProps関数を定義するだけです。
1.ビルドプロセス中にページが一度レンダリングされ、その結果がサーバーに保存されます。
2.ユーザーからのリクエストが来るたびに、保存されたページが提供されます。
3.ユーザーのブラウザでページが表示されます。

export async function getStaticProps() {
  // ビルド時にデータフェッチやDBのクエリを行う
  const data = await fetchData();

  return {
    props: { data },
    revalidate: 60 // オプション: 60秒後に再生成
  };
}

function MyPage({ data }) {
  return (
    <div>
      {/* レンダリングのロジック */}
    </div>
  );
}

export default MyPage;
特徴と利点:
  • 高速なパフォーマンスを提供します。すでに生成されたHTMLが返されるため、サーバーのレンダリングが不要です。
  • CDNとの相性が非常に良く、世界中のエッジサーバーでコンテンツをキャッシュできます。
  • SEOのメリットもあります。
デメリット:
  • ビルド時にしかHTMLが生成されないため、リアルタイムの更新が難しいです。ただし、revalidateオプションを使用して、定期的に再生成を行うことができます。

どちらを選ぶべきか?

  • SSRは、リアルタイムのデータやサーバーサイドの情報が必要な場合に適しています。
  • SSGは、静的なコンテンツや更新頻度が低いページ、高速な読み込みを求めるページに適しています。

まとめ

Next.jsは、SSRとSSGの両方のメリットを活かすことができる強力なフレームワークです。プロジェクトの要件や特性に応じて、適切なPre-rendering手法を選択することが大切です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?