# 画面設計書 34-テキストメールテーブル

## 概要

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

### 本画面の処理概要

テキストメールテーブル部品は、HTMLメールにおける表形式UIをプレーンテキスト形式で表現するためのBladeコンポーネントである。HTMLでの表構造が適用できないため、コンテンツをそのままテキストとして出力する。

**業務上の目的・背景**：HTMLメールでは表形式でデータを整理して表示できるが、テキストメールでは視覚的な表構造を再現することが困難である。本部品は、表のコンテンツをそのままテキストとして出力し、HTMLメールとの構造的な一貫性を保ちながらテキストメールでも同じ情報を提供する。Markdownで記述された表は、プレーンテキストとして読みやすい形式で表現される。

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

**主要な操作・処理内容**：
1. `$slot`変数に渡された表コンテンツを取得
2. HTMLタグを含まない純粋なテキストとして出力
3. Markdown形式の表がそのまま出力される

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

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

## 関連機能

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

## 画面種別

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

## URL/ルーティング

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

## 入出力項目

| 項目名 | 種別 | データ型 | 必須 | 説明 |
|--------|------|----------|------|------|
| $slot | 入力 | string | Yes | 表形式で表示するテキストコンテンツ（Markdown形式可） |

## 表示項目

| 項目名 | 説明 | 表示形式 |
|--------|------|----------|
| テーブルコンテンツ | 表形式データ | プレーンテキスト（Markdown表形式） |

## イベント仕様

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

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

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

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

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

## メッセージ仕様

本部品はメッセージを出力しない。表形式データを表示する用途で使用される。

## 例外処理

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

## 備考

- HTML版のメールテーブル（html/table.blade.php）とは異なり、`<table>`タグなどのHTML要素は含まれない
- プレーンテキストとしてシンプルに`$slot`の内容を出力するのみ
- Markdown形式の表（パイプ`|`とハイフン`-`で構成）をそのまま出力可能
- メールクライアントによってはMarkdown表が読みやすく表示されない場合がある

---

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

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

### 推奨読解順序

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

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

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

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

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

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

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

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

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

HTML版テーブルとの違いを理解する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | table.blade.php (HTML) | `src/Illuminate/Mail/resources/views/html/table.blade.php` | HTML版は`<table>`タグでマークアップ |
| 3-2 | table.blade.php (Text) | `src/Illuminate/Mail/resources/views/text/table.blade.php` | テキスト版は$slotのみの単純出力 |

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

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

### データフロー図

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

Markdown表形式 ───▶ table.blade.php ───▶ プレーンテキスト
| A | B |           ($slot出力)            | A | B |
|---|---|                                  |---|---|
| 1 | 2 |                                  | 1 | 2 |
```

### 関連ファイル一覧

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