# 画面設計書 30-テキストメールヘッダー

## 概要

本ドキュメントは、Laravelフレームワークのテキストメールテンプレートにおけるヘッダーコンポーネント（text/header.blade.php）の設計仕様を定義するものである。

### 本画面の処理概要

本コンポーネントは、プレーンテキストメールの上部に表示されるヘッダー領域を構成する部品である。HTML版のheader.blade.phpと対になるテキスト版であり、スロットコンテンツとURLをシンプルなテキスト形式で出力する。

**業務上の目的・背景**：テキストメールにおいても、メールの送信元を明示することは重要である。HTMLメールではロゴ画像やスタイリングされたリンクを表示できるが、テキストメールでは「アプリ名: URL」という形式でシンプルに表現する。これにより、ユーザーはメールの送信元を即座に認識でき、URLをコピーしてブラウザでアクセスすることも可能。

**画面へのアクセス方法**：本コンポーネントは直接アクセスするものではなく、text/message.blade.phpから`<x-mail::header>`として呼び出される。テキスト版メールのレンダリング時に自動的に使用される。

**主要な操作・処理内容**：
1. $slotと$urlプロパティを受け取る
2. 「$slot: $url」形式でシンプルにテキスト出力
3. 改行やフォーマットは含まない1行出力

**画面遷移**：テキストメールのため画面遷移の概念は適用されない。URLはテキストとして表示され、ユーザーがコピーして使用する。

**権限による表示制御**：ヘッダーコンポーネント自体には権限制御はない。表示内容はプロパティとして渡される情報によって決定される。

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 28 | メール管理 | 主機能 | テキストメールヘッダー部品の表示 |

## 画面種別

コンポーネント（メールテンプレート部品）

## URL/ルーティング

該当なし（Bladeコンポーネントとして使用）

コンポーネント名: `mail::header`（テキスト版）

## 入出力項目

| 項目名 | 型 | 必須 | 説明 |
|--------|------|------|------|
| $slot | string | Yes | 表示テキスト（通常はアプリケーション名） |
| $url | string | Yes | アプリケーションURL |

## 表示項目

| 要素 | 表示内容 | 形式 |
|------|---------|------|
| ヘッダー | $slot: $url | 1行テキスト |

## イベント仕様

該当なし（テキストメールのため）

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

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

該当なし（表示専用コンポーネント）

## メッセージ仕様

該当なし

## 例外処理

| 状態 | 処理内容 |
|------|---------|
| $slot未指定 | 空文字として出力 |
| $url未指定 | コロンの後が空として出力 |

## 備考

- HTML版と比較して非常にシンプルな実装（1行のみ）
- ロゴ画像の条件分岐（Laravel判定）はテキスト版には存在しない
- コロンとスペースで区切る形式：「アプリ名: https://example.com」
- layout.blade.phpでstrip_tags()が適用されるため、HTMLタグがあっても除去される

---

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

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

### 推奨読解順序

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

まず、HTML版との構造の違いを理解する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | header.blade.php | `src/Illuminate/Mail/resources/views/text/header.blade.php` | 1行のみの超シンプル実装（行1） |
| 1-2 | html/header.blade.php | `src/Illuminate/Mail/resources/views/html/header.blade.php` | HTML版との比較（行1-12） |

**読解のコツ**: テキスト版は`{{ $slot }}: {{ $url }}`の1行のみ。HTML版の複雑なテーブル構造やLaravel判定ロジックは不要。

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

処理の起点となる呼び出し元を特定する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | message.blade.php | `src/Illuminate/Mail/resources/views/text/message.blade.php` | x-mail::headerの呼び出し（行3-7） |

**主要処理フロー**:
1. **message.blade.php 行4**: `<x-mail::header :url="config('app.url')">`でコンポーネント呼び出し
2. **message.blade.php 行5**: `{{ config('app.name') }}`でアプリ名をスロットとして渡す
3. **header.blade.php 行1**: `{{ $slot }}: {{ $url }}`で出力

#### Step 3: レイアウトとの関係を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | layout.blade.php | `src/Illuminate/Mail/resources/views/text/layout.blade.php` | headerスロットの配置（行1） |

**主要処理フロー**:
- **layout.blade.php 行1**: `{!! strip_tags($header ?? '') !!}`でヘッダー出力
- strip_tags()によりHTMLタグが除去されるが、テキスト版ヘッダーは元々タグを含まない

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

```
text/message.blade.php
    │
    └─ x-slot:header
           │
           └─ x-mail::header (:url, slot)
                  │
                  └─ text/header.blade.php
                         │
                         └─ {{ $slot }}: {{ $url }}
                                │
                                └─ "アプリ名: https://example.com"
```

### データフロー図

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

config('app.name') ──▶ $slot ─────────────────▶ "アプリ名"
                                                    │
config('app.url') ───▶ $url ──────────────────▶ "https://..."
                                                    │
                                                    ▼
                                           "アプリ名: https://..."
                                                    │
                                         layout.blade.php
                                                    │
                                              strip_tags()
                                                    │
                                                    ▼
                                           最終出力（変更なし）
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| header.blade.php | `src/Illuminate/Mail/resources/views/text/header.blade.php` | テンプレート | テキストヘッダー部品本体 |
| html/header.blade.php | `src/Illuminate/Mail/resources/views/html/header.blade.php` | テンプレート | HTML版ヘッダー（比較用） |
| message.blade.php | `src/Illuminate/Mail/resources/views/text/message.blade.php` | テンプレート | ヘッダーの呼び出し元 |
| layout.blade.php | `src/Illuminate/Mail/resources/views/text/layout.blade.php` | テンプレート | ヘッダースロットの配置先 |
| Markdown.php | `src/Illuminate/Mail/Markdown.php` | ソース | renderText()メソッド |
