---
generated_at: 2026-01-28 11:15:00
metrics:
  claims_total: 18
  claims_with_evidence: 18
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート: 26-要約編集

## 概要

本レポートは「機能設計書 26-要約編集」に記載された内容の根拠を示す。各記述がソースコードのどの部分に基づいているかを明示する。

## 根拠一覧

### 1. 処理概要に関する根拠

| 主張 | 根拠ファイル | 該当行 | 根拠内容 |
|------|-------------|--------|----------|
| 定型要約ボタンの表示 | EditSummaryViewController.swift | L9-26 | `enum EditSummaryViewCannedButtonType` 定義 |
| 自由入力テキストフィールドの提供 | EditSummaryViewController.swift | L40 | `@IBOutlet private weak var summaryTextField: ThemeableTextField!` |
| 最大文字数制限（255文字） | EditSummaryViewController.swift | L29 | `static let maximumSummaryLength = 255` |
| デリゲートを通じた変更通知 | EditSummaryViewController.swift | L88-90 | `notifyDelegateOfSummaryChange()` で `delegate?.summaryChanged()` |
| 多言語対応 | EditSummaryViewController.swift | L12-25 | `buttonTitle(for languageCode:)` メソッド |
| RTL言語対応 | EditSummaryViewController.swift | L70-78 | `setupSemanticContentAttibute()` メソッド |

### 2. 入力パラメータに関する根拠

| パラメータ | 根拠ファイル | 該当行 | 根拠内容 |
|-----------|-------------|--------|----------|
| languageCode | EditSummaryViewController.swift | L33 | `public var languageCode: String = "en"` |
| cannedSummaryTypes | EditSummaryViewController.swift | L34 | `public var cannedSummaryTypes: [EditSummaryViewCannedButtonType] = [.typo, .grammar, .link]` |
| delegate | EditSummaryViewController.swift | L36 | `public weak var delegate: EditSummaryViewDelegate?` |
| pageURL | EditSummaryViewController.swift | L105-109 | `setLanguage(for pageURL: URL?)` メソッド |

### 3. デリゲートプロトコルに関する根拠

| 項目 | 根拠ファイル | 該当行 | 根拠内容 |
|-----|-------------|--------|----------|
| EditSummaryViewDelegate | EditSummaryViewController.swift | L4-7 | プロトコル定義 |
| summaryChanged | EditSummaryViewController.swift | L5 | `func summaryChanged(newSummary: String)` |
| learnMoreButtonTapped | EditSummaryViewController.swift | L6 | `func learnMoreButtonTapped(sender: UIButton)` |

### 4. ビジネスルールに関する根拠

| ルールNo | 根拠ファイル | 該当行 | 根拠内容 |
|---------|-------------|--------|----------|
| BR-001 | EditSummaryViewController.swift | L154-157 | `newLength <= EditSummaryViewController.maximumSummaryLength` |
| BR-002 | EditSummaryViewController.swift | L130-133 | `guard cannedSummaryTypes.count <= cannedEditSummaryButtons.count` |
| BR-003 | EditSummaryViewController.swift | L70-78 | `setupSemanticContentAttibute()` でRTL対応 |
| BR-004 | EditSummaryViewController.swift | L137-140 | `if index >= cannedSummaryTypes.count { button.isHidden = true }` |

### 5. UI処理に関する根拠

| 処理 | 根拠ファイル | 該当行 | 根拠内容 |
|------|-------------|--------|----------|
| viewDidLoad | EditSummaryViewController.swift | L49-68 | UI初期設定処理 |
| プレースホルダー設定 | EditSummaryViewController.swift | L52 | `WMFLocalizedString("edit-summary-placeholder-text", ...)` |
| ラベル設定 | EditSummaryViewController.swift | L59 | `WMFLocalizedString("edit-summary-add-summary-text", ...)` |
| updateCannedSummaryButtons | EditSummaryViewController.swift | L128-146 | 定型ボタンの更新処理 |

### 6. イベントハンドリングに関する根拠

| イベント | 根拠ファイル | 該当行 | 根拠内容 |
|---------|-------------|--------|----------|
| cannedSummaryButtonTapped | EditSummaryViewController.swift | L92-98 | `@IBAction private func cannedSummaryButtonTapped(sender: UIButton)` |
| textFieldDidChange | EditSummaryViewController.swift | L84-86 | `@objc public func textFieldDidChange(textField: UITextField)` |
| learnMoreButtonTapped | EditSummaryViewController.swift | L80-82 | `@IBAction private func learnMoreButtonTapped(sender: UIButton)` |

### 7. テーマ適用に関する根拠

| 処理 | 根拠ファイル | 該当行 | 根拠内容 |
|------|-------------|--------|----------|
| apply(theme:) | EditSummaryViewController.swift | L112-126 | テーマ適用メソッド |

### 8. SummaryButtonScrollViewに関する根拠

| 項目 | 根拠ファイル | 該当行 | 根拠内容 |
|-----|-------------|--------|----------|
| クラス定義 | EditSummaryViewController.swift | L160-169 | `public class SummaryButtonScrollView: UIScrollView` |
| intrinsicContentSize | EditSummaryViewController.swift | L166-168 | 最も高いボタンの高さを返す |

## 根拠なし項目

なし - すべての主張にソースコードの根拠が確認できた。

## 信頼度評価

- **claims_total**: 18（処理概要6、入力4、デリゲート3、ビジネスルール4、UI4、イベント3、テーマ1、ScrollView2 - 重複除外後）
- **claims_with_evidence**: 18
- **claims_without_evidence**: 0
- **confidence_derived**: 18/18 = 1.00

## 検証方法

1. 各根拠ファイルの該当行を確認し、記述内容と一致することを検証
2. UITextFieldDelegateの文字数制限が正確であることを確認
3. 定型ボタンタイプとローカライズ文字列の対応を確認
