# 画面設計書 35-テキストメールサブコピー

## 概要

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

### 本画面の処理概要

テキストメールサブコピー部品は、HTMLメールにおけるサブコピーエリア（メール本文の下部に表示される補足情報）をプレーンテキスト形式で表現するためのBladeコンポーネントである。

**業務上の目的・背景**：HTMLメールでは、メール本文とは別に小さなフォントやグレーの文字色で補足情報を表示することがある。典型的な使用例として、「このリンクをクリックできない場合は、以下のURLをブラウザに貼り付けてください」といった補足説明がある。テキストメールでも同様の補足情報を提供するために本部品が使用される。

**画面へのアクセス方法**：この部品は直接アクセスされるものではなく、テキストメールテンプレート内で`<x-mail::subcopy>`コンポーネントとして呼び出される。layout.blade.phpのsubcopyスロットを通じて表示される。

**主要な操作・処理内容**：
1. `$slot`変数に渡されたサブコピーコンテンツを取得
2. HTMLタグを含まない純粋なテキストとして出力
3. 通常、本文下部に補足情報として表示される

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

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

## 関連機能

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

## 画面種別

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

## URL/ルーティング

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

## 入出力項目

| 項目名 | 種別 | データ型 | 必須 | 説明 |
|--------|------|----------|------|------|
| $slot | 入力 | string | Yes | サブコピーとして表示する補足テキスト |

## 表示項目

| 項目名 | 説明 | 表示形式 |
|--------|------|----------|
| サブコピーテキスト | 補足情報として表示するテキスト | プレーンテキスト |

## イベント仕様

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

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

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

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

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

## メッセージ仕様

本部品はメッセージを出力しない。補足情報（サブコピー）を表示する用途で使用される。

## 例外処理

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

## 備考

- HTML版のメールサブコピー（html/subcopy.blade.php）とは異なり、スタイリングは一切含まれない
- プレーンテキストとしてシンプルに`$slot`の内容を出力するのみ
- message.blade.phpでは`@isset($subcopy)`ディレクティブで条件付き表示される
- layout.blade.phpでは`strip_tags()`でHTMLタグを除去して出力される

---

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

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

### 推奨読解順序

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

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

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | subcopy.blade.php | `src/Illuminate/Mail/resources/views/text/subcopy.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: レイアウト構造を理解する

テキストメールの全体構造とサブコピーの位置づけを理解する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | layout.blade.php | `src/Illuminate/Mail/resources/views/text/layout.blade.php` | サブコピースロットの配置位置（4-7行目） |
| 3-2 | message.blade.php | `src/Illuminate/Mail/resources/views/text/message.blade.php` | サブコピーコンポーネントの呼び出し方法（13-19行目） |

**主要処理フロー**:
- **layout.blade.php 4-7行目**: `@isset($subcopy)`で条件付きで`strip_tags($subcopy)`を出力
- **message.blade.php 13-19行目**: `@isset($subcopy)`内で`<x-slot:subcopy>`と`<x-mail::subcopy>`を使用

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

```
Markdown::renderText()
    │
    ├─ ViewFactory::replaceNamespace('mail', textComponentPaths())
    │
    └─ View::make('mail::message')
           │
           └─ message.blade.php
                  │
                  ├─ <x-mail::layout>
                  │      │
                  │      └─ layout.blade.php
                  │             │
                  │             └─ @isset($subcopy) → strip_tags($subcopy)
                  │
                  └─ <x-mail::subcopy> (条件付き)
                         │
                         └─ subcopy.blade.php
                                │
                                └─ $slot 出力
```

### データフロー図

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

補足テキスト ───▶ message.blade.php ───▶ layout.blade.php
     │            (subcopyスロット設定)     (@isset条件チェック)
     │                   │                        │
     └─────────▶ subcopy.blade.php ───▶ strip_tags() ───▶ プレーンテキスト
                  ($slot出力)
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| subcopy.blade.php | `src/Illuminate/Mail/resources/views/text/subcopy.blade.php` | テンプレート | テキストメールサブコピー部品 |
| layout.blade.php | `src/Illuminate/Mail/resources/views/text/layout.blade.php` | テンプレート | テキストメール共通レイアウト |
| message.blade.php | `src/Illuminate/Mail/resources/views/text/message.blade.php` | テンプレート | テキストメール本体構成 |
| Markdown.php | `src/Illuminate/Mail/Markdown.php` | ソース | メールMarkdownレンダラー |
