Next.js App Routerの基礎と導入メリットNext.js App Routerの基礎と導入メリット

Next.js App Routerの基礎と導入メリット

Next.js 13から導入され、今や標準となった「App Router」。従来のPages Routerから大きく概念が変わったため、まだ移行に足踏みしている方もいるかもしれません。 この記事では、App Routerを理解するための基礎をステップバイステップで解説します。

ステップ1:ディレクトリ構造の違いを理解する

従来のPages Routerでは、pagesディレクトリ内のファイル名がそのままURLルーティングになっていました(例:pages/about.tsx → /about)。

App Routerでは、appディレクトリを使用します。URLルーティングはフォルダ名で決定され、そのフォルダの中に必ずpage.tsxという名前のファイルを置くルールに変わりました(例:app/about/page.tsx → /about)。 一見面倒に見えますが、これによって「ルーティングに関係のないコンポーネントやテストファイルを、同じフォルダ内に共存させることができる」という大きなメリットが生まれました。

ステップ2:レイアウトの概念を掴む

App Routerの強力な機能が「Layout」です。 app/layout.tsxを作成すると、そのフォルダ以下のすべてのページに共通のUI(ヘッダーやフッターなど)を適用できます。 特筆すべきは、ページ遷移時にこのLayout部分は「再レンダリングされない」という点です。これにより、状態(State)を保持したままの滑らかな画面遷移が実現でき、アプリケーションのパフォーマンスが大きく向上します。

ステップ3:サーバーとクライアントの境界線を引く

これが最も重要な変更点です。App Router内のコンポーネントは、デフォルトで「React Server Components(サーバー側で実行されるコンポーネント)」になります。 サーバーコンポーネント内では、ブラウザのAPI(windowなど)や、Reactのフック(useStateやuseEffect)は使用できません。

もしボタンのクリックイベントなどが必要な場合は、ファイルの先頭に "use client" と記述し、明示的にクライアントコンポーネントに変換する必要があります。 「基本はサーバーで軽くレンダリングし、インタラクティブな部分だけをクライアントに任せる」という意識を持つことが、App Router攻略の鍵です。

ステップ4:データフェッチの簡略化

これまで必須だったgetServerSidePropsやgetStaticPropsといったNext.js独自の関数は廃止されました。 代わりに、標準のfetch APIをコンポーネント内で直接 await して使うだけです。Next.jsが内部でfetchを拡張しており、キャッシュの制御などもこのfetchのオプション引数だけで直感的に行えるようになりました。

段階を踏んで理解すれば、App Routerは決して怖いものではありません。より高度で高速なWebアプリ開発に向けて、ぜひ最初のステップを踏み出してみてください。

【PR / 関連おすすめサービス】

📌 Webサイト・ブログの構築に最適な高速レンタルサーバー