Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Next.js 入門解説: Reactとの決定的な違いとApp Routerに基づくモダンWeb開発

Avatar for MIKIO KUBO MIKIO KUBO
November 19, 2025

Next.js 入門解説: Reactとの決定的な違いとApp Routerに基づくモダンWeb開発

# Next.js 入門解説
## Reactとの決定的な違いとApp Routerに基づくモダンWeb開発

Avatar for MIKIO KUBO

MIKIO KUBO

November 19, 2025
Tweet

More Decks by MIKIO KUBO

Other Decks in Programming

Transcript

  1. 現代のWeb 開発に求められる要件とReact の課題 「React だけ」では解決できない課題があります 現代のWeb アプリの必須要件: 初期表示の高速化、SEO対策、堅牢なインフラ React (

    ライブラリ) の限界: Reactは「UI構築」に特化しており、これだけでは不足 ルーティング、SEO、APIなどを個別に設定する必要がある 設定の沼 (Configuration Hell): 数多くの外部ライブラリを組み合わせる複雑さが開発の負担に 2
  2. 比較:React ( ライブラリ) vs Next.js ( フレームワーク) 項目 React (

    ライブラリ) Next.js ( フレームワーク) 役割 UIパーツの構築 フルスタック開発基盤 ルーティング 外部ライブラリが必要 ファイルベースで内蔵 レンダリング 基本的にCSR (遅い) SSR / SSG ( 高速・SEO) API 別途サーバー構築 API ルート内蔵 画像最適化 手動設定 <Image> で自動化 4
  3. Next.js のレンダリング戦略:ハイブリッドアプローチ コンテンツに応じて最適なレンダリング手法を選択可能 CSR (Client-Side Rendering): ブラウザで描画。インタラクティブなUI向け。 SSR (Server-Side Rendering):

    サーバーで都度描画。頻繁に更新されるデータ向け。 SSG (Static Site Generation): ビルド時にHTML生成。ブログや概要ページ向け(最速)。 ハイブリッドの強み: ページごとにこれらを使い分け、パフォーマンスとSEOを最大化 5
  4. 新しい基盤:App Router のアーキテクチャ ファイルシステムとURL が直感的に対応 フォルダ構造 = URL パス: app

    ディレクトリ内のフォルダ名がそのままURLになる 安全な設計: フォルダを作っただけでは公開されない page.tsx を作成して初めてアクセス可能になる 動的ルーティング: [slug] のようにフォルダ名をつけるだけでパラメータ取得可能 複雑な設定コードが不要に 7
  5. App Router における主要ファイルの役割 ファイル名によって役割が明確に定義されています ファイル名 役割 説明 page.tsx ルートUI そのURLで表示されるメインコンテンツ

    layout.tsx レイアウト ヘッダーなど、ページ遷移しても維持されるUI loading.tsx 読み込み中 データ取得中のローディング表示 error.tsx エラー処理 エラー発生時のフォールバック表示 route.ts API定義 Web APIのエンドポイントを作成 8
  6. 革新技術:Server Components (RSC) サーバーとクライアントの役割を明確に分離 Server Components ( デフォルト): サーバー側でレンダリングし、結果のHTMLだけを送信 JS

    バンドルサイズ削減: クライアントの読み込みが劇的に高速化 セキュリティ: データベース接続情報などを安全に扱える できないこと: useState や onClick などの対話機能は使えない → インタラクティブな部分のみ Client Components を使う 9
  7. Client Components の使い所 必要な部分だけを「クライアント」にする 役割: ユーザーとの対話(クリック、入力)、状態管理(Hooks)を担当 実装方法: ファイル先頭に 'use client'

    を記述 ベストプラクティス: アプリの大部分は Server Components (RSC) で構成 インタラクティブな「末端のUI」だけを Client Components にする 10
  8. モダンなデータフェッチング Server Components なら、データ取得が直感的かつシンプルに // app/page.tsx (Server Component) export default

    async function Page() { // サーバー側で直接APIを叩ける let data = await fetch('[https://api.vercel.app/blog](https://api.vercel.app/blog)'); let posts = await data.json(); return ( <ul> {posts.map((post) => ( <li key={post.id}>{post.title}</li> ))} </ul> ); } useEffect やローディング管理が不要になり、コードが激減。 11
  9. 標準搭載された最適化機能 (Optimization) 開発者が意識せずとも、ベストプラクティスが適用される 画像最適化 ( <Image> ): デバイスに応じたサイズ変更、WebP変換、遅延ロードを自動化 レイアウトのズレ (CLS)

    を自動で防止 ナビゲーション最適化 ( <Link> ): リンクが画面に入ると、リンク先をバックグラウンドで先読み ユーザーがクリックした瞬間、即座に遷移完了 12
  10. まとめ:Next.js を学ぶ価値 「UI ライブラリ」から「プロダクション環境」への架け橋 Next.js = React + インフラストラクチャ Reactの良さを活かしつつ、Web開発の複雑な課題を一挙に解決

    習得するスキル: サーバー機能、レンダリング戦略、パフォーマンス最適化 結論: インフラ管理から解放され、 ユーザー体験とビジネスロジックに集中でき る最強のツール 14