# 画面設計書 51-リクエストヘッダー

## 概要

本ドキュメントは、Laravel例外レンダラーにおけるHTTPリクエストヘッダー表示コンポーネントの画面設計書である。開発時のデバッグ画面において、例外発生時のHTTPリクエストヘッダー情報を一覧表示するためのUIコンポーネントを定義する。

### 本画面の処理概要

本コンポーネントは、Laravel例外レンダラーの一部として、例外発生時のHTTPリクエストに含まれるヘッダー情報を開発者に分かりやすく表示する役割を担う。

**業務上の目的・背景**：アプリケーション開発においてエラーが発生した場合、HTTPリクエストヘッダーの情報（認証トークン、Content-Type、Accept、Cookie等）は問題の原因特定に不可欠である。本コンポーネントにより、開発者はエラー発生時のリクエストコンテキストを即座に把握でき、デバッグ効率が大幅に向上する。特にAPI開発やセッション関連の問題解決において重要な情報源となる。

**画面へのアクセス方法**：開発環境（APP_DEBUG=true）でアプリケーション実行中に例外が発生すると、自動的に例外詳細画面（show.blade.php）が表示される。本コンポーネントは、その画面内のセクションとして「Headers」見出しとともに表示される。

**主要な操作・処理内容**：
1. HTTPリクエストヘッダー情報の一覧表示（キーと値のペア形式）
2. 長い値に対するツールチップ表示（data-tippy-content属性によるホバー表示）
3. ヘッダーキーの大文字表示による視認性向上
4. ダークモード対応のスタイリング

**画面遷移**：本コンポーネントは例外表示画面（show.blade.php）内に埋め込まれて表示される。単独での画面遷移は発生しない。

**権限による表示制御**：本コンポーネントはAPP_DEBUG=trueの開発環境でのみ表示される。本番環境では例外レンダラー自体が無効化されるため、セキュリティ上の問題はない。

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 53 | HTTPリクエスト | 補助機能 | HTTPリクエストヘッダー情報の取得 |
| 36 | ビューファクトリ | 主機能 | リクエストヘッダーの描画処理 |

## 画面種別

部品（UIコンポーネント）

## URL/ルーティング

本コンポーネントは直接ルーティングされるものではなく、例外発生時にExceptionHandlerを通じて表示される例外詳細画面の一部として描画される。

## 入出力項目

### 入力項目（Props）

| 項目名 | 属性名 | 型 | 必須 | 説明 |
|--------|--------|------|------|------|
| ヘッダー配列 | headers | array | 必須 | HTTPリクエストヘッダーのキー・値連想配列 |

### 出力項目

| 項目名 | 説明 |
|--------|------|
| ヘッダーキー | 大文字表示されたHTTPヘッダー名 |
| ヘッダー値 | 対応するヘッダーの値（長い場合はtruncate） |

## 表示項目

| 項目名 | 表示形式 | スタイル |
|--------|----------|----------|
| セクションタイトル | "Headers" | text-lg font-semibold |
| ヘッダーキー | 大文字 | uppercase text-neutral-500 |
| 区切り線 | 点線 | border-b-2 border-dotted |
| ヘッダー値 | テキスト | truncate（長い場合は省略） |

## イベント仕様

### 1-ホバー時ツールチップ表示

ヘッダー値が長い場合にマウスホバーすると、Tippy.jsによるツールチップで完全な値が表示される。

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

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

本コンポーネントはデータベース操作を行わない（読み取り専用の表示コンポーネント）。

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

## メッセージ仕様

本コンポーネントは固定メッセージを使用しない。

## 例外処理

| 状態 | 処理内容 |
|------|----------|
| ヘッダーが空の場合 | 空のリストが表示される（@foreach内で処理なし） |

## 備考

- Tailwind CSSを使用したスタイリング
- ダークモード完全対応（dark:プレフィックスによる切り替え）
- Tippy.jsによるツールチップ表示はlayout.blade.phpで読み込まれるRenderer::js()で提供

---

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

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

### 推奨読解順序

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

まず、プログラム間で受け渡されるデータ構造を理解することが重要。このコンポーネントはHTTPリクエストヘッダーの連想配列を受け取る。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | Exception.php | `src/Illuminate/Foundation/Exceptions/Renderer/Exception.php` | requestHeaders()メソッド（行201-206）でヘッダー配列を生成 |

**読解のコツ**: requestHeaders()メソッドは$this->request()->headers->all()から全ヘッダーを取得し、各ヘッダー値の配列をカンマ区切りの文字列に変換している。

#### Step 2: エントリーポイントを理解する

処理の起点となるファイル・関数を特定。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | show.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/show.blade.php` | 行23でrequest-headerコンポーネントを呼び出し |

**主要処理フロー**:
1. **行23**: `<x-laravel-exceptions-renderer::request-header :headers="$exception->requestHeaders()" />`でコンポーネント呼び出し

#### Step 3: コンポーネント本体を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | request-header.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/request-header.blade.php` | @propsでheadersを受け取り、@foreachでループ表示 |

**主要処理フロー**:
- **行1**: @props(['headers'])でプロパティ定義
- **行6-16**: @foreachでヘッダー配列をループし、各ヘッダーを表示
- **行11-13**: data-tippy-contentでツールチップ設定

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

```
show.blade.php
    │
    └─ request-header.blade.php
           │
           └─ Exception::requestHeaders()
                  │
                  └─ Request::headers->all()
```

### データフロー図

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

Request::headers ───▶ Exception::requestHeaders() ───▶ request-header.blade.php
                        (配列→文字列変換)                    (HTML表示)
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| request-header.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/request-header.blade.php` | テンプレート | ヘッダー表示UI |
| Exception.php | `src/Illuminate/Foundation/Exceptions/Renderer/Exception.php` | ソース | ヘッダーデータ取得ロジック |
| show.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/show.blade.php` | テンプレート | 例外詳細画面本体 |
| layout.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/layout.blade.php` | テンプレート | 共通レイアウト（CSS/JS読み込み） |
