ウェブエンジニア問題集
第1章

Next.jsとは何か — 誕生の背景・Reactとの違い・なぜ今学ぶべきかを解説

11
この章の目次開く

Next.jsは、ReactをベースにしたフルスタックWebフレームワークです。ルーティング、サーバーサイドレンダリング(SSR)、静的サイト生成(SSG)、API処理など、Webアプリケーション開発に必要な機能が最初から組み込まれています。

学習者学習者

Reactを勉強したばかりなのに、もうNext.js?この2つって何が違うの?

ざっくり言うと、Reactは「UIを作るためのライブラリ」、Next.jsは「Reactを使って実際のWebアプリを作るために必要なもの(ルーティング、サーバー処理、ビルド、最適化)を全部揃えたフレームワーク」です。Reactだけだと自分で揃えなければならないピースを、Next.jsが最初から用意してくれます。

複雑な設定から解放されるイメージ

Next.jsが生まれた背景 — なぜReactだけでは足りなかったのか

Next.jsは2016年10月、Guillermo Rauch(ギジェルモ・ラウチ)によって公開されました。Guillermoは、リアルタイム通信ライブラリ Socket.IO の開発者としても知られるアルゼンチン出身のエンジニアで、当時は自身が創業した Zeit(現Vercel)のCEOでした。

当時のReact開発の課題

2016年当時、Reactは画面を描画するライブラリとしては非常に強力でしたが、「実際にWebアプリを作って公開する」ためには多くの追加設定が必要でした。

  • ルーティングがない → react-router を自分で導入・設定する
  • **サーバーサイドレンダリング(SSR)**の仕組みがない → SEOや初回表示速度のために自前でNode.jsサーバーを構築する
  • コード分割を自分で設定する必要がある → ページごとに適切にバンドルを分ける
  • ビルド設定(Webpack)が複雑 → create-react-app はあったが、SSR非対応

Guillermoの考え

Guillermoは当時のブログで、Next.jsのコンセプトを次のような方針で説明しています。

  • ゼロ設定(Zero Config):設定ファイルを書かなくても、賢いデフォルトで動く
  • ファイルシステムベースのルーティング:ディレクトリにファイルを置くだけでページができる
  • 自動的なサーバーレンダリング:SSRが特別な設定なしにデフォルトで有効
  • 自動コード分割:各ページに必要なJavaScriptだけを配信する

「Reactで優れたWebアプリを作るための最短経路を提供する」——これがNext.jsの出発点でした。


ReactとNext.jsの違い

学習者学習者

Reactだけでもアプリは作れるよね?あえてNext.jsを使うメリットって何なの?

観点React単体Next.js
種類UIライブラリフルスタックフレームワーク
ルーティング自分で追加(react-router等)ファイルベースで自動
レンダリングクライアントサイドのみ(CSR)SSR / SSG / ISR / CSR を選択可
SEOCSRは検索エンジンに弱いSSR/SSGで最初からHTMLがある
サーバー処理なし(別途API構築が必要)API Routes / Server Actions
画像最適化自分で実装next/image で自動最適化
コード分割手動設定ページ単位で自動
初期設定Webpack等の設定が必要npx create-next-app ですぐ開始
先生先生

React公式ドキュメントでも「新しいプロジェクトを始めるならNext.jsなどのフレームワークを使おう」と推奨しているよ。Reactチーム自身が「Reactだけでは足りない」と認めている、ということなんだ。

いつReact単体を使うか

Next.jsが万能というわけではありません。以下のケースではReact単体(+ Viteなど)の方が向いていることもあります。

  • Electron / React Nativeなど非Webプラットフォーム
  • SPAで十分な社内ツール・管理画面(SEOが不要)
  • 既存のバックエンドAPIがすでにあり、フロントだけ作りたい場合
Next.jsは、React単体では別途用意が必要なルーティング・レンダリング・サーバー処理までまとめて扱えるフレームワークです。

Hello World

もっともシンプルなNext.jsのページを見てみましょう。

// app/page.tsx
export default function Home() {
  return (
    <main>
      <h1>Hello, Next.js!</h1>
      <p>はじめてのNext.jsアプリケーション</p>
    </main>
  );
}
tsx

app/page.tsx というファイルを作るだけで、/ にアクセスしたときに表示されるページが完成します。ルーティング設定は不要です。これがNext.jsの「ファイルベースルーティング」の基本です。

最初のNext.jsページを確認するイメージ

App RouterとPages Router

Next.jsには2つのルーティング方式があります。

特徴App Router(推奨)Pages Router(従来)
ディレクトリapp/pages/
デフォルトServer ComponentsClient Components
レイアウトネストレイアウト対応_app.tsx で一括
データ取得async コンポーネント内で直接getServerSideProps 等の専用関数
登場時期Next.js 13(2022年〜、13.4で安定版)Next.js 1〜12

本書ではApp Routerを前提に解説を進めます。 2023年のNext.js 13.4でApp Routerが安定版になり、2024年以降の新規プロジェクトではApp Routerが推奨されています。


Next.jsの主な機能

本書で学ぶ範囲を中心に、Next.jsの主要機能を整理しておきます。

機能内容扱う章
ファイルベースルーティングディレクトリ構成がそのままURLになる第4章
Server Componentsデフォルトでサーバー側レンダリング第3章
ネストレイアウトヘッダーなどの共通UIを宣言的に管理第5章
動的ルーティング[id] でパラメータ付きURL第6章
データ取得 + キャッシュfetch + revalidate でISR第7章
Route Handlersroute.ts でAPIエンドポイントを作る第8章
loading.tsx / error.tsxローディングとエラーの宣言的な処理第9章
メタデータSEO向けの <title> <meta> を型安全に管理第10章
Server Actions"use server" でフォーム送信・データ更新第11章
先生先生

全部を一度に覚える必要はないよ。まずは「ファイルを置くとページができる」「Server Componentでデータが取れる」の2つだけ掴めれば、あとは実際に作りながら身につく。


Next.jsの現在 — なぜ2024年以降も学ぶべきか

Next.jsは2016年のリリース以来、Webフロントエンド開発の事実上の標準フレームワークの一つになっています。

  • npm週間ダウンロード数はReactフレームワーク中トップクラス
  • Hulu、TikTok、Nike、Notionなど大規模サービスでの採用実績
  • React公式が「フレームワークを使おう」と推奨する中で、最も成熟した選択肢
  • Server ComponentsServer Actionsなど、React最新機能のいち早い実装

求人市場でもNext.jsのスキルは強く求められており、React開発者のキャリアパスとして自然な選択です。


次の章では、実際にNext.jsの開発環境を構築していきます。create-next-app で数分でプロジェクトが立ち上がる体験をしましょう。

Next.jsクイズに挑戦するこの章で学んだNext.jsの知識を、4択クイズでアウトプットして定着させよう