# 画面設計書 33-テキストメールパネル

## 概要

本ドキュメントは、Laravelフレームワークのテキストメールにおけるパネル部品（panel.blade.php）の画面設計書である。プレーンテキスト形式メールでパネルコンテンツをテキスト表現するコンポーネントテンプレートについて記述する。

### 本画面の処理概要

テキストメールパネル部品は、HTMLメールにおけるパネルUI（背景色で囲まれた強調エリア）をプレーンテキスト形式で表現するためのBladeコンポーネントである。HTMLでのスタイリングが適用できないため、単純にコンテンツをそのまま出力する。

**業務上の目的・背景**：HTMLメールではパネルUIを使用して重要な情報や補足情報を視覚的に区別するが、テキストメールではこのような視覚的区別が困難である。本部品は、パネル内のコンテンツをそのままテキストとして出力し、HTMLメールとの構造的な一貫性を保ちながらテキストメールでも同じ情報を提供する。

**画面へのアクセス方法**：この部品は直接アクセスされるものではなく、テキストメールテンプレート内で`<x-mail::panel>`コンポーネントとして呼び出される。Markdownクラスの`renderText()`メソッドがテキスト用コンポーネントパスを参照してレンダリングする。

**主要な操作・処理内容**：
1. `$slot`変数に渡されたパネルコンテンツを取得
2. HTMLタグを含まない純粋なテキストとして出力
3. 視覚的な区切りは行わず、内容のみを出力

**画面遷移**：本部品は画面遷移の概念を持たない。メール本文の一部として表示される。

**権限による表示制御**：特になし。メール送信時に全ての受信者に対して同一のパネル表示が行われる。

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 28 | メール管理 | 主機能 | テキストメールのパネル表現 |

## 画面種別

部品（テキストメールコンポーネント）

## URL/ルーティング

N/A（メールテンプレート部品のため、URLルーティングは存在しない）

## 入出力項目

| 項目名 | 種別 | データ型 | 必須 | 説明 |
|--------|------|----------|------|------|
| $slot | 入力 | string | Yes | パネル内に表示するテキストコンテンツ |

## 表示項目

| 項目名 | 説明 | 表示形式 |
|--------|------|----------|
| パネルコンテンツ | パネル内に表示するテキスト | プレーンテキスト |

## イベント仕様

### 1-レンダリング処理

Bladeコンポーネントとしてレンダリングされる際、`$slot`変数の内容がそのままテキスト出力される。特別なイベントハンドラやユーザー操作は存在しない。

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

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

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

## メッセージ仕様

本部品はメッセージを出力しない。パネルコンテンツとして補足情報や重要情報を表示する用途で使用される。

## 例外処理

| 例外 | 条件 | 対応 |
|------|------|------|
| テンプレート未発見 | 部品ファイルが存在しない場合 | Bladeエンジンが例外をスロー |

## 備考

- HTML版のメールパネル（html/panel.blade.php）とは異なり、背景色やボーダーなどのスタイリングは一切含まれない
- プレーンテキストとしてシンプルに`$slot`の内容を出力するのみ
- テキストメールでは視覚的な区切りを表現できないため、HTML版と同じ構造を維持しつつ、内容のみを出力する設計

---

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

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

### 推奨読解順序

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

テキストメールパネルで使用される変数とその流れを理解する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | panel.blade.php | `src/Illuminate/Mail/resources/views/text/panel.blade.php` | `$slot`変数がそのまま出力される単純な構造（1行目） |

**読解のコツ**: `{{ $slot }}`という単純な出力で、HTML版のパネルスタイリングが完全に省略されていることを確認する。

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

メールレンダリングの起点となるクラスを特定する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | Markdown.php | `src/Illuminate/Mail/Markdown.php` | `renderText()`メソッド（122-133行目）がテキストメールのレンダリング起点 |

**主要処理フロー**:
1. **122行目**: `renderText()`メソッドが呼び出される
2. **126-128行目**: テキスト用コンポーネントパスに名前空間を置き換えてビューをレンダリング

#### Step 3: HTML版との比較

HTML版パネルとの違いを理解する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | panel.blade.php (HTML) | `src/Illuminate/Mail/resources/views/html/panel.blade.php` | HTML版はテーブルベースの視覚的なパネルUI |
| 3-2 | panel.blade.php (Text) | `src/Illuminate/Mail/resources/views/text/panel.blade.php` | テキスト版は$slotのみの単純出力 |

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

```
Markdown::renderText()
    │
    ├─ textComponentPaths()
    │      │
    │      └─ componentPaths() + '/text'
    │
    └─ ViewFactory::make()
           │
           └─ テンプレート内で <x-mail::panel>
                  │
                  └─ panel.blade.php
                         │
                         └─ {{ $slot }}
```

### データフロー図

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

パネルコンテンツ ───▶ panel.blade.php ───▶ プレーンテキスト
                     ($slot出力)
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| panel.blade.php | `src/Illuminate/Mail/resources/views/text/panel.blade.php` | テンプレート | テキストメールパネル部品 |
| panel.blade.php | `src/Illuminate/Mail/resources/views/html/panel.blade.php` | テンプレート | HTMLメールパネル部品（比較用） |
| Markdown.php | `src/Illuminate/Mail/Markdown.php` | ソース | メールMarkdownレンダラー |
| message.blade.php | `src/Illuminate/Mail/resources/views/text/message.blade.php` | テンプレート | テキストメール本体構成 |
