概要
ナビゲーション(Navigation)は、ユーザーが Web サイト・アプリケーション・3D 空間内を移動・探索するための仕組み全般を指す。広義には UI(ヘッダーメニュー・ハンバーガーメニュー・パンくず・ステップウィザード等)と内部実装(ルーティング・State 管理・History API)の両面を含む。2026 年現在、Next.js 16 App Router・TanStack Router・React Router v7 が Web フレームワーク世代の主流、ブラウザネイティブの Navigation API も Chrome / Edge で実装され、UI ライブラリは Radix UI / Headless UI / Shadcn UI 等の Headless 設計が主流である。
Web ナビゲーション主要ライブラリ(2026 年)
React 系
| ライブラリ | 形態 | 特徴 |
|---|
| Next.js 16 App Router | OSS | ファイルベースルーティング、業界標準 |
| TanStack Router 1.x | OSS | TypeScript 完全型安全、Vercel に依存しない |
| React Router v7 | OSS | Remix 統合、SSR / CSR 両対応 |
| Wouter | OSS | 軽量(1.5KB)、シンプル |
| Reach Router(廃止) | OSS | React Router v6 に統合 |
Vue 系
| ライブラリ | 用途 |
|---|
| Vue Router 4 | Vue 公式 |
| Nuxt 3 Routing | Nuxt 内蔵、ファイルベース |
その他フレームワーク
| ライブラリ | フレームワーク |
|---|
| SvelteKit Routes | Svelte 5 |
| Astro Routes | Astro 5 |
| Solid Router | Solid |
主要 UI パターン
Web サイト
| パターン | 用途 |
|---|
| ヘッダーメニュー(横並び) | デスクトップ Web、5-7 項目以下 |
| ハンバーガーメニュー | モバイル Web、項目数多い |
| サイドバー(Drawer) | アプリケーション、ダッシュボード |
| Bottom Tab Bar | モバイルアプリ、3-5 タブ |
| パンくず(Breadcrumb) | 階層深い Web、現在位置表示 |
| ステップウィザード | フォーム / オンボーディング |
| メガメニュー | EC サイト、カテゴリ多階層 |
| Command Palette(⌘K) | プロ向けアプリ、Linear / Vercel 採用 |
3D / VR / AR
| パターン | 用途 |
|---|
| WASD + マウス | FPS / TPS ゲーム標準 |
| テレポート | VR、酔い対策 |
| Smooth Locomotion | VR、自然移動 |
| クリック移動 | RPG / 戦略ゲーム |
| ジェスチャー | AR、Apple Vision Pro |
ブラウザ標準 API
Web Navigation API(Chrome 102+ / Edge)
// Single Page App でのページ遷移
navigation.navigate('/dashboard');
// イベント監視
navigation.addEventListener('navigate', (event) => {
if (event.canIntercept) {
event.intercept({
handler: async () => {
// カスタム遷移処理
}
});
}
});
History API(全ブラウザ標準)
window.history.pushState({}, '', '/about');
window.history.back();
window.history.forward();
Next.js 16 App Router の例
// app/posts/[slug]/page.tsx
import Link from 'next/link';
import { useRouter } from 'next/navigation';
export default function PostPage({ params }: { params: Promise<{ slug: string }> }) {
const router = useRouter();
return (
<article>
<Link href="/posts">← 一覧へ</Link>
<button onClick={() => router.push('/related')}>関連へ</button>
</article>
);
}
自作.com(jisaku.com)でのナビ構成
- ヘッダー: ロゴ + 主要 8 カテゴリ(PC パーツ / 商品 / 記事 / 用語集 / etc)
- モバイル: ハンバーガー → 全カテゴリ + 検索
- 記事ページ: 自動内部リンク(link-dictionary.json)
- パンくず: ホーム > カテゴリ > 記事タイトル
- 検索: ⌘K Command Palette(Meilisearch 連動)
アクセシビリティ要件
- キーボード操作: Tab / Enter / Escape の一貫した動作
- スクリーンリーダー: aria-label / aria-current / nav 要素
- フォーカス可視: focus-visible で強調
- Skip to Content: スクリーンリーダー用ジャンプリンク
- ランドマーク:
<nav>, <main>, <aside>, <header>, <footer>
関連用語との違い
| 用語 | 違い |
|---|
| ルーティング | URL→ページマッピング、ナビの実装側 |
| メニュー | UI 要素、ナビの一形態 |
| サイトマップ | サイト全体の地図、ナビは個別動線 |
| ブレッドクラム | パンくず、ナビの一形態 |
よくある質問
Q1: Next.js App Router の Pages Router 互換性は?
A: 段階的移行可能。1 つのプロジェクトに pages/ と app/ を共存させ、新規ページは app/、既存は pages/ から段階移行。Next.js 16 でも Pages Router は引き続き動作。
Q2: TanStack Router と React Router v7、選ぶ基準は?
A: TypeScript 完全型安全 / Vercel に依存しないなら TanStack Router。Remix の SSR + Loader を活用するなら React Router v7。Next.js なら built-in App Router 一択。
Q3: 個人開発でハンバーガーメニューは必須?
A: モバイル対応では事実上必須。ただし PC 大画面では「ハンバーガー強制」より、横並び 5-7 項目 + 「More」ドロップダウンが UX 良い。
まとめ
- ユーザーが サイト / アプリ / 3D 空間を移動する仕組み
- 2026 年は Next.js App Router / TanStack Router / Web Navigation API が主軸
- UI は ヘッダー / ハンバーガー / Command Palette が現代的