# 画面設計書 23-メールフッター

## 概要

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

### 本画面の処理概要

本コンポーネントは、HTMLメールの下部に表示されるフッター領域を構成する部品である。著作権情報、免責事項、連絡先情報などの補足的な情報を表示するために使用される。

**業務上の目的・背景**：メールのフッターは、法的要件（CAN-SPAM法、GDPR等）への準拠や、企業の信頼性を示すために重要な役割を果たす。著作権表示、配信停止リンク、プライバシーポリシーへのリンクなど、必要な情報を一貫して表示することで、コンプライアンスを確保しつつ、ユーザーに必要な情報を提供する。

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

**主要な操作・処理内容**：
1. テーブルレイアウトでフッター領域を構成
2. $slotの内容をMarkdown::parse()でパースしてHTMLに変換
3. 変換されたHTMLをフッターセル内に表示
4. 中央揃えのテーブルセルとして配置

**画面遷移**：フッター自体には遷移機能はない。ただし、フッターコンテンツ内にリンクが含まれる場合（例：プライバシーポリシー、配信停止など）、それらのリンクをクリックすると該当ページに遷移する。

**権限による表示制御**：フッターコンポーネント自体には権限制御はない。表示内容はスロットとして渡されるコンテンツによって決定される。

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 28 | メール管理 | 主機能 | HTMLメールフッター部品の表示 |

## 画面種別

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

## URL/ルーティング

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

コンポーネント名: `mail::footer`

## 入出力項目

| 項目名 | 型 | 必須 | 説明 |
|--------|------|------|------|
| $slot | string | Yes | フッターコンテンツ（Markdown形式対応） |

## 表示項目

| 要素 | 表示内容 | 備考 |
|------|---------|------|
| フッターテキスト | $slotの内容（Markdownパース済み） | 中央揃え |

## イベント仕様

### 1-フッター内リンククリック

フッターコンテンツ内にリンクが含まれている場合、クリックすると該当URLに遷移する。

**典型的なリンク例**:
- 著作権ページ
- プライバシーポリシー
- 利用規約
- 配信停止リンク

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

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

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

## メッセージ仕様

message.blade.phpでの使用例：
| 種別 | メッセージ | 備考 |
|------|----------|------|
| 著作権 | (c) {年} {アプリ名}. All rights reserved. | 動的生成 |

## 例外処理

| 状態 | 処理内容 |
|------|---------|
| $slot未指定 | 空のフッターとして出力 |
| Markdownパースエラー | そのままテキストとして出力（推測） |

## 備考

- Markdown::parse()を使用してスロット内容をパースするため、Markdown形式のコンテンツに対応
- テーブル幅は570pxに固定され、メール本体と同じ幅で表示
- `role="presentation"`属性によりテーブルがレイアウト目的であることを示す
- CSSクラス`footer`および`content-cell`はlayout.blade.phpのスタイルで定義

---

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

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

### 推奨読解順序

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

まず、コンポーネントで受け取るスロットとMarkdownパースの関係を理解する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | Markdown.php | `src/Illuminate/Mail/Markdown.php` | parse()メソッドの実装（行142-172） |

**読解のコツ**: `Markdown::parse()`は静的メソッドとして呼び出され、CommonMarkライブラリを使用してMarkdownをHTMLに変換する。

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

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

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

**主要処理フロー**:
1. **message.blade.php 行22**: `<x-slot:footer>`でフッタースロット定義開始
2. **message.blade.php 行23**: `<x-mail::footer>`でコンポーネント呼び出し
3. **message.blade.php 行24**: 著作権テキストをスロットとして渡す

#### Step 3: テンプレート実装を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | footer.blade.php | `src/Illuminate/Mail/resources/views/html/footer.blade.php` | テーブル構造とMarkdownパース（行1-11） |

**主要処理フロー**:
- **行1**: テーブル行開始
- **行2-3**: ネストしたテーブルでfooterクラスを適用、幅570px、中央揃え
- **行4-5**: テーブル行とcontent-cellクラスのセル開始
- **行6**: `{{ Illuminate\Mail\Markdown::parse($slot) }}`でMarkdownパース・出力
- **行7-11**: 各タグの閉じ処理

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

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

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

```
message.blade.php
    │
    └─ x-slot:footer
           │
           └─ x-mail::footer ($slot)
                  │
                  └─ footer.blade.php
                         │
                         └─ Illuminate\Mail\Markdown::parse($slot)
                                │
                                └─ League\CommonMark\MarkdownConverter
                                       │
                                       └─ HTML出力
```

### データフロー図

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

著作権テキスト ───▶ $slot として受け取り ───▶ Markdown::parse()
(Markdown形式)                                    │
                                                  ▼
                                         CommonMarkConverter
                                                  │
                                                  ▼
                                         HTML変換結果
                                                  │
                                                  ▼
                                         <td class="content-cell">
                                                内に出力
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| footer.blade.php | `src/Illuminate/Mail/resources/views/html/footer.blade.php` | テンプレート | フッター部品本体 |
| message.blade.php | `src/Illuminate/Mail/resources/views/html/message.blade.php` | テンプレート | フッターの呼び出し元 |
| layout.blade.php | `src/Illuminate/Mail/resources/views/html/layout.blade.php` | テンプレート | フッタースロットの配置先 |
| Markdown.php | `src/Illuminate/Mail/Markdown.php` | ソース | Markdownパース処理 |
| Mailable.php | `src/Illuminate/Mail/Mailable.php` | ソース | メール送信の基底クラス |
