# 画面設計書 49-ルーティングコンポーネント

## 概要

本ドキュメントは、Laravelフレームワークの例外レンダラーにおけるルーティングコンポーネント（routing.blade.php）の画面設計書である。例外発生時にマッチしたルートのコントローラー、ルート名、ミドルウェアなどのルーティング情報を表示するBladeコンポーネントについて定義する。

### 本画面の処理概要

**業務上の目的・背景**：Webアプリケーションのデバッグにおいて、リクエストがどのルートにマッチし、どのコントローラーが処理を担当しているかを把握することは重要である。また、適用されているミドルウェアの確認も、認証や認可に関連する問題の特定に役立つ。このコンポーネントは、例外発生時のルーティングコンテキスト情報を一覧形式で表示し、デバッグ作業を支援する。

**画面へのアクセス方法**：例外表示画面（show.blade.php）から直接呼び出される。例外発生時に自動的にレンダリングされ、ルーティング情報がある場合は一覧として表示される。

**主要な操作・処理内容**：
1. ルーティング情報配列を受け取る
2. キー（controller, route name, middleware等）と値のペアで表示
3. 各値にツールチップを設定
4. ルーティング情報がない場合は空状態コンポーネントを表示

**画面遷移**：例外表示画面（show.blade.php）の一部として表示。ユーザー操作による遷移はない。

**権限による表示制御**：APP_DEBUGがtrueの場合のみ表示される。

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 36 | ビューファクトリ | 主機能 | ルーティング情報の描画処理 |
| 16 | ルーター | 補助機能 | マッチしたルート情報の取得 |

## 画面種別

詳細 / コンポーネント

## URL/ルーティング

直接のURLはなし（例外表示画面から呼び出されるコンポーネント）

## 入出力項目

| 項目名 | 属性名 | 型 | 必須 | 説明 |
|--------|--------|-----|------|------|
| routing | $routing | array | 必須 | ルーティング情報の連想配列（controller, route name, middleware等） |

## 表示項目

| 項目名 | 説明 | 表示形式 |
|--------|------|----------|
| セクションタイトル | "Routing" の固定文字列 | テキスト（h2要素） |
| ルーティングキー | controller, route name, middleware等のラベル | 大文字テキスト |
| ルーティング値 | 各キーに対応する値 | テキスト（ツールチップ付き） |
| 点線セパレーター | キーと値の間の装飾線 | 点線ボーダー |

## イベント仕様

### 1-ツールチップ表示

各ルーティング値にホバーすると、全文がツールチップで表示される。

## データベース更新仕様

### 操作別データベース影響一覧

| 操作（イベント） | 対象テーブル | 操作種別 | 概要 |
|----------------|-------------|---------|------|
| - | - | - | データベース操作なし |

本コンポーネントは表示専用であり、データベースへの更新処理は行わない。

## メッセージ仕様

| 種別 | メッセージ | 表示条件 |
|------|----------|----------|
| 見出し | Routing | 常時表示 |
| 空状態 | No routing context | ルーティング情報がない場合 |

## 例外処理

| 例外状況 | 処理内容 |
|----------|----------|
| ルーティング情報がない | empty-stateコンポーネントで「No routing context」を表示 |

## 備考

- シンプルなキー・値ペアの一覧表示
- 点線セパレーターでキーと値を視覚的に分離
- ダークモード対応のスタイリング
- 長い値はtruncateで省略、ツールチップで全文表示

---

## コードリーディングガイド

本画面を理解するために参照すべきファイルと、推奨する読み解き順序を以下に示す。

### 推奨読解順序

#### Step 1: データ構造を理解する

ルーティングコンテキストデータの取得と構造を理解する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | Exception.php | `src/Illuminate/Foundation/Exceptions/Renderer/Exception.php` | applicationRouteContext()メソッド（228-240行目） |

**読解のコツ**:
- `applicationRouteContext()` はリクエストからルート情報を取得
- controller: `$route->getActionName()`
- route name: `$route->getName()`
- middleware: `$route->gatherMiddleware()` の結果をカンマ区切りで結合

#### Step 2: テンプレートを理解する

ルーティングコンポーネントのテンプレート構造を確認する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | routing.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/routing.blade.php` | @foreachでのキー・値ペアの表示、点線セパレーター |

**主要処理フロー**:
1. **1行目**: @props(['routing'])でルーティング配列を受け取る
2. **4行目**: h2でセクションタイトル「Routing」を表示
3. **6-18行目**: @foreloopでキー・値ペアをループ表示
4. **7行目**: flexレイアウトで各行を構成
5. **8行目**: キーを大文字で表示（uppercase）
6. **9行目**: 点線のセパレーター（border-dotted）
7. **10-13行目**: 値をtruncateで表示、ツールチップ設定
8. **17行目**: @emptyでempty-stateコンポーネントを表示

#### Step 3: 親コンポーネントとの関係を理解する

show.blade.phpからの呼び出しを確認する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | show.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/show.blade.php` | routingコンポーネントの呼び出し（27行目） |

### プログラム呼び出し階層図

```
show.blade.php
    │
    └─ routing.blade.php
           │
           └─ empty-state.blade.php (ルーティング情報がない場合)
```

### データフロー図

```
[入力]                          [処理]                              [出力]

Request                         Exception::applicationRouteContext()
    │                                  │
    └─ route() ────────────▶   controller取得              ───▶   ['controller' => 'App\\...',
                               route name取得                        'route name' => 'users.show',
                               middleware取得                        'middleware' => 'web, auth']
                                       │
                                       ▼
                               routing.blade.php
                               (キー・値ペア一覧表示)
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| routing.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/routing.blade.php` | テンプレート | ルーティング情報の表示 |
| Exception.php | `src/Illuminate/Foundation/Exceptions/Renderer/Exception.php` | ソース | ルーティングコンテキストの取得 |
| show.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/show.blade.php` | テンプレート | 親コンポーネント |
| empty-state.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/empty-state.blade.php` | テンプレート | 空状態の表示 |
