# 画面設計書 50-ルーティングパラメータ

## 概要

本ドキュメントは、Laravelフレームワークの例外レンダラーにおけるルーティングパラメータコンポーネント（routing-parameter.blade.php）の画面設計書である。例外発生時のルートパラメータ（URLセグメントにバインドされた値やモデルバインディング）をJSON形式でシンタックスハイライト付きで表示するBladeコンポーネントについて定義する。

### 本画面の処理概要

**業務上の目的・背景**：Laravelのルーティングでは、URLセグメントに変数をバインドしたり、モデルバインディングでEloquentモデルを直接取得することができる。デバッグ時にこれらのパラメータの値を確認することは、リクエストの状態を理解するために重要である。このコンポーネントは、ルートパラメータをJSON形式で整形表示し、開発者がリクエストコンテキストを把握しやすくする。

**画面へのアクセス方法**：例外表示画面（show.blade.php）から直接呼び出される。例外発生時に自動的にレンダリングされ、ルートパラメータがある場合はJSON形式で表示される。

**主要な操作・処理内容**：
1. ルートパラメータのJSON文字列を受け取る
2. syntax-highlightコンポーネントでJSONとしてシンタックスハイライト表示
3. パラメータがない場合は空状態コンポーネントを表示

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

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

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 36 | ビューファクトリ | 主機能 | ルートパラメータの描画処理 |
| 16 | ルーター | 補助機能 | ルートパラメータ情報の取得 |

## 画面種別

詳細 / コンポーネント

## URL/ルーティング

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

## 入出力項目

| 項目名 | 属性名 | 型 | 必須 | 説明 |
|--------|--------|-----|------|------|
| routeParameters | $routeParameters | string/null | 任意 | ルートパラメータのJSON文字列 |

## 表示項目

| 項目名 | 説明 | 表示形式 |
|--------|------|----------|
| セクションタイトル | "Routing parameters" の固定文字列 | テキスト（h2要素） |
| パラメータJSON | ルートパラメータをJSON形式で整形 | シンタックスハイライト付きコード |

## イベント仕様

本コンポーネントにはユーザーインタラクションイベントはない。表示専用のコンポーネントである。

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

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

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

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

## メッセージ仕様

| 種別 | メッセージ | 表示条件 |
|------|----------|----------|
| 見出し | Routing parameters | 常時表示 |
| 空状態 | No routing parameters | ルートパラメータがない場合 |

## 例外処理

| 例外状況 | 処理内容 |
|----------|----------|
| routeParametersがnull | empty-stateコンポーネントで「No routing parameters」を表示 |
| routeParametersが空文字 | empty-stateコンポーネントで「No routing parameters」を表示 |

## 備考

- JSON形式でシンタックスハイライト表示（language="json"）
- モデルバインディングの場合、モデルのリレーションは除外される（withoutRelations()）
- パネル形式でコードを表示
- ダークモード対応のスタイリング

---

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

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

### 推奨読解順序

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

ルートパラメータコンテキストデータの取得と処理を理解する。

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

**読解のコツ**:
- `applicationRouteParametersContext()` はリクエストからルートパラメータを取得
- `$route->parameters()` で全パラメータを取得
- Modelの場合は `withoutRelations()` でリレーションを除外
- JSON_PRETTY_PRINTで整形してJSON文字列として返す

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

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

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | routing-parameter.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/routing-parameter.blade.php` | @if条件分岐、syntax-highlightコンポーネントの使用 |

**主要処理フロー**:
1. **1行目**: @props(['routeParameters'])でJSON文字列を受け取る
2. **4行目**: h2でセクションタイトル「Routing parameters」を表示
3. **5行目**: @if ($routeParameters) で存在チェック
4. **6行目**: パネルスタイルのコンテナ
5. **7行目**: syntax-highlightコンポーネントでJSON表示
6. **9-11行目**: @elseでempty-stateコンポーネントを表示

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

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

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

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

```
show.blade.php
    │
    └─ routing-parameter.blade.php
           │
           ├─ syntax-highlight.blade.php (パラメータがある場合)
           │
           └─ empty-state.blade.php (パラメータがない場合)
```

### データフロー図

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

Request                         Exception::applicationRouteParametersContext()
    │                                  │
    └─ route() ────────────▶   parameters()取得
                               withoutRelations()適用
                               json_encode(PRETTY_PRINT)   ───▶   JSON文字列
                                       │
                                       ▼
                               routing-parameter.blade.php
                               (JSON シンタックスハイライト表示)
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| routing-parameter.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/routing-parameter.blade.php` | テンプレート | ルートパラメータの表示 |
| Exception.php | `src/Illuminate/Foundation/Exceptions/Renderer/Exception.php` | ソース | ルートパラメータコンテキストの取得 |
| show.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/show.blade.php` | テンプレート | 親コンポーネント |
| syntax-highlight.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/syntax-highlight.blade.php` | テンプレート | JSONのシンタックスハイライト |
| empty-state.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/empty-state.blade.php` | テンプレート | 空状態の表示 |
