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

Next.jsのRouting入門!React Routerとの違いを初心者でもわかる解説

Next.jsのRoutingとは?React Routerとの違いを理解しよう
Next.jsのRoutingとは?React Routerとの違いを理解しよう

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

生徒

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

先生

「Routingとは、ユーザーがブラウザでアクセスしたURLに応じて、どのページを表示するか決める仕組みのことです。Next.jsでは特にファイルベースで自動的に設定できるんですよ。」

生徒

「あ、Reactで使うReact Routerと何が違うんですか?」

先生

「React Routerは手動でルートを設定する必要がありますが、Next.jsではページファイルを作るだけでURLが自動で決まります。」

生徒

「なるほど、じゃあ簡単にページを追加できるんですね!」

1. Next.jsのRoutingはファイルベース

1. Next.jsのRoutingはファイルベース
1. Next.jsのRoutingはファイルベース

Next.jsでは、プロジェクトのpagesフォルダに作ったファイルがそのままURLになります。例えば、pages/about.jsを作ると、自動で/aboutというURLでアクセス可能です。


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

export default About;
(/about にアクセスすると「Aboutページです」と画面に表示されます)

2. 動的ルーティングでURLに変数を渡す

2. 動的ルーティングでURLに変数を渡す
2. 動的ルーティングでURLに変数を渡す

Next.jsではブラウザのURLに応じて内容を変える動的ルーティングも簡単にできます。例えば、pages/posts/[id].jsという名前にすると、/posts/1/posts/2に応じてページを切り替えられます。


import { useRouter } from "next/router";

function Post() {
  const router = useRouter();
  const { id } = router.query;
  return <h1>投稿ID: {id}</h1>;
}

export default Post;
(/posts/1 にアクセスすると「投稿ID: 1」と表示され、URLの数字に応じて変わります)

3. Linkコンポーネントでページ遷移

3. Linkコンポーネントでページ遷移
3. Linkコンポーネントでページ遷移

Next.jsでは、リンクをクリックしてページを遷移する際にLinkコンポーネントを使います。通常のHTMLの<a>タグよりも高速で遷移できる特徴があります。


import Link from "next/link";

function Home() {
  return (
    <div>
      <h1>ホームページ</h1>
      <Link href="/about">Aboutページへ移動</Link>
    </div>
  );
}

export default Home;
(リンクをクリックするとページ全体を再読み込みせずにAboutページに移動します)

4. React Routerとの違いを整理しよう

4. React Routerとの違いを整理しよう
4. React Routerとの違いを整理しよう

React Routerはルートを} />のように自分で設定します。Next.jsはファイルを作るだけでURLが決まるので設定の手間が少なく、初心者でも扱いやすいです。


// React Router例
import { BrowserRouter, Routes, Route } from "react-router-dom";
import About from "./About";

function App() {
  return (
    <BrowserRouter>
      <Routes>
        <Route path="/about" element={<About />} />
      </Routes>
    </BrowserRouter>
  );
}

export default App;

5. ネストされたページで階層的なURLを作る

5. ネストされたページで階層的なURLを作る
5. ネストされたページで階層的なURLを作る

Next.jsではフォルダを作ることでネストされたURLが自動で生成されます。例えば、pages/blog/first.jsを作ると、/blog/firstにアクセス可能です。


function FirstBlog() {
  return <h1>最初のブログ記事</h1>;
}

export default FirstBlog;
(/blog/first にアクセスすると「最初のブログ記事」と表示されます)

6. APIルートを作ってデータを取得する

6. APIルートを作ってデータを取得する
6. APIルートを作ってデータを取得する

Next.jsではpages/apiにファイルを作るとサーバー側のAPIとして動作します。これによりRoutingとデータ取得を簡単に組み合わせられます。


export default function handler(req, res) {
  res.status(200).json({ message: "Hello from API!" });
}
(/api/hello にアクセスすると「Hello from API!」というJSONデータが返ってきます)

7. getStaticPropsとgetServerSidePropsで事前データ取得

7. getStaticPropsとgetServerSidePropsで事前データ取得
7. getStaticPropsとgetServerSidePropsで事前データ取得

Next.jsでは静的生成とサーバーサイド生成を簡単に使えます。getStaticPropsはビルド時にデータを取得、getServerSidePropsはリクエスト時にデータを取得します。


export async function getStaticProps() {
  return { props: { title: "静的ページ" } };
}

function StaticPage({ title }) {
  return <h1>{title}</h1>;
}

export default StaticPage;
(ページを表示すると「静的ページ」と表示されます)

8. Routerイベントでページ遷移を監視する

8. Routerイベントでページ遷移を監視する
8. Routerイベントでページ遷移を監視する

Next.jsのuseRouterを使うとページ遷移のイベントを監視して、処理を追加できます。例えば、ロード中のスピナー表示などに使えます。


import { useRouter } from "next/router";
import { useEffect } from "react";

function App() {
  const router = useRouter();
  useEffect(() => {
    const handleRouteChange = (url) => {
      console.log("Navigating to:", url);
    };
    router.events.on("routeChangeStart", handleRouteChange);
    return () => {
      router.events.off("routeChangeStart", handleRouteChange);
    };
  }, [router.events]);

  return <h1>ページ遷移をコンソールで確認できます</h1>;
}

export default App;

まとめ

まとめ
まとめ

今回の記事では、Next.jsのRoutingの基本から応用までを詳しく解説しました。Next.jsのRoutingはファイルベースであるため、React Routerのように手動でルートを設定する必要がなく、初心者でも簡単にページ遷移を実装できます。

ファイルをpagesフォルダに作るだけで自動的にURLが割り当てられ、さらにフォルダ構造を工夫することでネストされた階層的なURLも簡単に生成できます。これにより、ブログやECサイトのカテゴリページなど、階層構造の多いサイト構築もスムーズに行えます。また、動的ルーティングではURLに応じてページ内容を切り替えられるので、投稿IDや商品IDの表示なども簡単に実装できます。

Linkコンポーネントを使用することで、ページ遷移時にブラウザ全体のリロードを避け、高速でユーザー体験を向上させることも可能です。さらに、getStaticPropsgetServerSidePropsを利用することで、事前にデータを取得した静的ページ生成や、リクエストに応じたサーバーサイド生成を簡単に行えます。これによりSEO対策やページ表示速度の最適化も可能になります。

APIルートをpages/apiに作成すれば、サーバー側でデータを取得する仕組みも同時に組み込めるため、フロントとバックエンドの統合が容易になります。さらに、useRouterを使ったRouterイベントの監視により、ページ遷移時の処理やスピナー表示、ログの記録など、ユーザー体験の向上にも貢献します。

Next.jsのRoutingはReact Routerと比べて設定の手間が少なく、ページ追加やURL管理が直感的でわかりやすいため、初心者でもすぐに活用できます。また、ネスト構造や動的ルーティング、Linkコンポーネントの使用法、APIルートの作成、静的生成とサーバーサイド生成の活用、Routerイベント監視など、豊富な機能を組み合わせることで、実務レベルのWebサイト構築が可能になります。

次に、簡単なサンプルプログラムを使って、Next.jsのRoutingの基本を確認してみましょう。

サンプルプログラム:基本ページ遷移


import Link from "next/link";

function Home() {
  return (
    <div>
      <h1>ホームページ</h1>
      <Link href="/about">Aboutページへ移動</Link>
    </div>
  );
}

export default Home;
(画面に「ホームページ」と表示され、リンクをクリックするとページ全体を再読み込みせずにAboutページに移動します)

サンプルプログラム:動的ルーティング


import { useRouter } from "next/router";

function Post() {
  const router = useRouter();
  const { id } = router.query;
  return <h1>投稿ID: {id}</h1>;
}

export default Post;
(/posts/1 にアクセスすると「投稿ID: 1」と表示され、URLに応じて内容が変わります)
先生と生徒の振り返り会話

生徒

「先生、Next.jsのRoutingって結局どういうときに便利なんですか?」

先生

「RoutingはユーザーがアクセスしたURLに応じてどのページを表示するか決める仕組みです。Next.jsではファイルを作るだけでURLが自動的に設定されるので、React Routerよりも初心者向けに簡単です。」

生徒

「動的ルーティングやネストされたページも簡単に作れるんですよね?」

先生

「そうです。例えばブログ記事や商品ページのIDをURLに渡したいときも、ファイル名に[ ]を使うだけで自動で切り替わりますし、フォルダを作れば階層的なURLも作れます。」

生徒

「LinkコンポーネントやgetStaticPropsも使うと、さらに便利にページ遷移やデータ取得ができますね。」

先生

「その通りです。Linkで高速に遷移でき、事前にデータを取得することでページ表示速度やSEOも最適化できます。Next.jsはRoutingからデータ取得まで一貫して扱いやすいフレームワークなんですよ。」

生徒

「わかりました!Next.jsのRoutingは初心者でもすぐに使えるし、実務にも応用できるんですね。」

カテゴリの一覧へ
新着記事
New1
React
React Context APIとカスタムフックの相性は抜群!初心者でもできる最強の実装例ガイド
New2
React
Reactの条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐
New3
React
Reactで学ぶuseStateの型指定完全ガイド!文字列・数値・真偽値を型安全に管理しよう
New4
Next.js
Next.js Routingの基本をわかりやすく解説!初心者でも理解できるフォルダ構造とページ遷移
人気記事
No.1
Java&Spring記事人気No1
React
Reactの子コンポーネントから親コンポーネントへデータを渡す方法を徹底解説!初心者にもわかるReactのイベントとデータの流れ
No.2
Java&Spring記事人気No2
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.3
Java&Spring記事人気No3
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.4
Java&Spring記事人気No4
React
Reactの学習ロードマップ!初心者が最短で習得する流れを完全ガイド
No.5
Java&Spring記事人気No5
React
React Context APIのレンダリング問題を解決!初心者でもわかるパフォーマンス最適化ガイド
No.6
Java&Spring記事人気No6
React
React Context APIのパフォーマンス最適化を徹底解説!useMemoで無駄な描画を防ぐ方法
No.7
Java&Spring記事人気No7
React
ReactのContext APIでログイン状態を管理する方法を完全解説!初心者でもわかる認証機能の実装
No.8
Java&Spring記事人気No8
React
React Context APIの値を更新する方法!useStateと組み合わせてデータを動かす初心者ガイド