Next.js 13で始めるApp Router時代のフロントエンド構築術 コラム#127

コラムタイトル127

1. App Routerって何が違うの?

Next.js 13で大きな話題になった「App Router」。これは従来のPages Routerから進化した新しいルーティングシステムで、React Server Components(RSC)を前提に設計されています。従来はpages/ディレクトリでルーティング管理をしていましたが、App Routerではapp/ディレクトリをベースに、より柔軟でスケーラブルな設計が可能になりました。たとえば、レイアウトの共通化やネストされたルートに対するコード分割がシンプルに書けるのが特徴です。

2. ディレクトリ構成の変化に注目!

App Routerでは、URLとディレクトリ構造が密接に結びついています。たとえば、以下のような構成が一般的です。

app/
├── layout.tsx
├── page.tsx
└── dashboard/
    ├── layout.tsx
    └── page.tsx

ここで重要なのが、layout.tsx がそれぞれの階層で共通のレイアウトを提供すること。これにより、親コンポーネントの再描画を抑えつつ、子コンポーネントだけ差し替えるUIが実現できます。UXの向上にもつながるポイントですね。

3. 構築例:簡易ダッシュボードを作ってみよう

実際にApp Routerを使って、ログイン後に表示されるダッシュボードを構築した例を紹介します。認証後にユーザー情報とグラフを表示するシンプルなUIです。

tsx

// app/dashboard/page.tsx
import { getUserData } from '@/lib/user'
import Chart from '@/components/Chart'

export default async function DashboardPage() {
  const user = await getUserData()

  return (
    <div>
      <h1>こんにちは、{user.name}さん</h1>
      <Chart data={user.activity} />
    </div>
  )
}

このように、page.tsx はサーバーコンポーネントとして動作するため、getUserData のような非同期処理もシンプルに書けます。API呼び出しの処理がクライアント側に露出しないので、セキュリティ面でもメリットがあります。

4. クライアント側のインタラクションもスマートに

Next.js 13では"use client"ディレクティブでクライアントコンポーネントを明示します。たとえば、ボタンのクリックでモーダルを開くようなインタラクションは、次のように記述します。

tsx

// app/components/ModalButton.tsx
'use client'

import { useState } from 'react'

export default function ModalButton() {
  const [open, setOpen] = useState(false)

  return (
    <>
      <button onClick={() => setOpen(true)}>詳細を見る</button>
      {open && <div>モーダルの中身です</div>}
    </>
  )
}

このように、必要な箇所だけクライアント化することで、全体のパフォーマンスを維持しつつリッチな体験を実現できます。

5. 実運用で気をつけるべきポイント

App Routerは強力ですが、現状ではライブラリ側の対応が追いついていないこともあります。たとえば、フォームバリデーションやSEOの記述が若干複雑になるケースも。とはいえ、それ以上に恩恵の多い新機能が魅力ですので、段階的な移行やチームでの検証を進めながら導入していくのがおすすめです。

App RouterはNext.jsを新しいレベルに引き上げる進化です。慣れるまでに少し時間はかかりますが、構築の自由度やパフォーマンス面のメリットを考えれば、今から取り組む価値は大いにあります。これからフロントエンド開発を始めるなら、ぜひApp Routerでの構築を試してみてください!

お問い合わせバナー
IAJlogo

<<IAJってどんな会社?>>
創業以来24年、専門知識が少ないジャンルでもお客様とお話ししながら伴走していくようなスタイルで、必要であればコード解析から行い、最新技術を取り入れながら、お客様のご要望(課題)を限りなく近い形で実現してまいりました。
おかげさまで、得意ジャンルはこれ、といった特化型な開発会社ではありませんが、 様々な業界のシステム開発を任せていただき、月間ユーザー200万人以上規模のポイント制度を用いたアプリ開発や1000万人規模のシステム開発をはじめ、多数のiOSやAndroidのアプリ開発や規模の大きなシステム開発などの実績を積んでまいりました。
私たちの強みは、実際に今後も時代に沿ってサービスも成長させていけるようなインフラ面も考慮した開発を行っている点で、実際にリプレイスを行いながら十数年にわたって運用しているサービスもございます。
 他にも、元々は他社で構築したサービスのリプレイスについても実績はございますので、ぜひ一度、私たちに検討されているシステムについてご相談してみませんか?

関連記事

  1. コラムタイトル 0050

    ITインフラの未来を支える!システム監視とメンテナンス、AIエージェン…

  2. コラムタイトル0065

    次に来るフロントエンドフレームワークは?最新トレンド予測 コラム#65…

  3. コラムタイトル0013

    位置情報を活用したシステム開発の可能性 コラム#13

  4. コラムタイトル0073

    ITエンジニアたちのエイプリルフール事件簿:嘘かホントか、笑いの境界線…

  5. コラムタイトル0029

    DDoS攻撃とシステム障害のレイヤー構造を理解し、適切に備える方法 …

  6. コラムタイトル0114

    AIによる感情認識技術のマーケティング活用 コラム#114