---
generated_at: 2026-01-28 11:45:00
metrics:
  claims_total: 30
  claims_with_evidence: 30
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート: 28-メディア挿入

## 概要

本レポートは「機能設計書 28-メディア挿入」に記載された内容の根拠を示す。各記述がソースコードのどの部分に基づいているかを明示する。

## 根拠一覧

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

| 主張 | 根拠ファイル | 該当行 | 根拠内容 |
|------|-------------|--------|----------|
| Wikimedia Commons画像検索 | InsertMediaSearchViewController.swift | L99 | `searchFetcher.fetchFiles(forSearchTerm:...)` |
| 画像情報取得 | InsertMediaSearchViewController.swift | L88-96 | `imageInfoFetcher.fetchGalleryInfo(...)` |
| 画像選択と設定 | InsertMediaSettingsViewController.swift | L37-145 | `Settings` 構造体定義 |
| Wikitext記法生成 | InsertMediaSettingsViewController.swift | L389-433 | `imageInsertInfo(...)` メソッド |
| マジックワードローカライズ | InsertMediaSettingsViewController.swift | L435-509 | ローカライズ関数群 |

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

| パラメータ | 根拠ファイル | 該当行 | 根拠内容 |
|-----------|-------------|--------|----------|
| articleTitle | InsertMediaViewController.swift | L16 | `init(articleTitle: String?, siteURL: URL)` |
| siteURL | InsertMediaViewController.swift | L14 | `private let siteURL: URL` |
| image | InsertMediaSettingsViewController.swift | L27, L243 | `private let image: UIImage` |
| searchResult | InsertMediaSettingsViewController.swift | L29, L245 | `let searchResult: InsertMediaSearchResult` |

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

| 項目 | 根拠ファイル | 該当行 | 根拠内容 |
|-----|-------------|--------|----------|
| InsertMediaViewControllerDelegate | InsertMediaViewController.swift | L3-6 | プロトコル定義 |
| didTapCloseButton | InsertMediaViewController.swift | L4 | メソッド定義 |
| didPrepareWikitextToInsert | InsertMediaViewController.swift | L5 | メソッド定義 |
| InsertMediaSettingsViewControllerDelegate | InsertMediaSettingsViewController.swift | L8-10 | プロトコル定義 |

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

| ルールNo | 根拠ファイル | 該当行 | 根拠内容 |
|---------|-------------|--------|----------|
| BR-001 | InsertMediaSearchViewController.swift | L34-36 | `if let articleTitle = articleTitle { search(for: articleTitle, ...) }` |
| BR-002 | InsertMediaSearchViewController.swift | L100-115 | 結果数による全文検索フォールバック |
| BR-003 | InsertMediaSettingsViewController.swift | L132 | `imageType: ImageType = .thumbnail` |
| BR-004 | InsertMediaSettingsViewController.swift | L132 | `imagePosition: ImagePosition = .right` |
| BR-005 | InsertMediaSettingsViewController.swift | L128-129 | `defaultWidth = 220`, `defaultHeight = 124` |
| BR-006 | InsertMediaSettingsViewController.swift | L435-509 | ローカライズ関数群（MagicWordUtils使用） |

### 5. UI構成に関する根拠

| 処理 | 根拠ファイル | 該当行 | 根拠内容 |
|------|-------------|--------|----------|
| 3つの子VC | InsertMediaViewController.swift | L9-11 | selectedImageVC, searchVC, searchResultsVC |
| viewDidLoad配置 | InsertMediaViewController.swift | L38-76 | 子VCのAutoLayout設定 |
| nextButton | InsertMediaViewController.swift | L31-35 | Nextボタン定義と初期無効化 |
| 検索バー設定 | InsertMediaSearchViewController.swift | L37-43 | searchBar設定 |

### 6. 検索処理に関する根拠

| 処理 | 根拠ファイル | 該当行 | 根拠内容 |
|------|-------------|--------|----------|
| search | InsertMediaSearchViewController.swift | L46-116 | 検索メインメソッド |
| キャンセル処理 | InsertMediaSearchViewController.swift | L47-48 | `cancelAllFetches()` |
| 検索結果マッピング | InsertMediaSearchViewController.swift | L59-76 | `searchResults` クロージャ |
| タイトル検索→全文検索 | InsertMediaSearchViewController.swift | L99-115 | 条件分岐ロジック |

### 7. 設定画面に関する根拠

| 処理 | 根拠ファイル | 該当行 | 根拠内容 |
|------|-------------|--------|----------|
| TextViewType | InsertMediaSettingsViewController.swift | L217-220 | caption, alternativeText |
| viewModels | InsertMediaSettingsViewController.swift | L222-226 | キャプション・代替テキストVM |
| settings計算プロパティ | InsertMediaSettingsViewController.swift | L147-153 | 設定値取得 |
| tappedProgress | InsertMediaSettingsViewController.swift | L300-311 | Insert/Nextボタン処理 |

### 8. Wikitext生成に関する根拠

| 処理 | 根拠ファイル | 該当行 | 根拠内容 |
|------|-------------|--------|----------|
| imageInsertInfo | InsertMediaSettingsViewController.swift | L389-433 | Wikitext生成メソッド |
| localizedFileTitle | InsertMediaSettingsViewController.swift | L435-448 | ファイル名ローカライズ |
| localizedImageTypeName | InsertMediaSettingsViewController.swift | L450-472 | 画像タイプローカライズ |
| localizedImagePositionName | InsertMediaSettingsViewController.swift | L474-496 | 画像位置ローカライズ |
| localizedAltTextFormat | InsertMediaSettingsViewController.swift | L498-509 | alt=フォーマットローカライズ |

### 9. エラー処理に関する根拠

| エラー | 根拠ファイル | 該当行 | 根拠内容 |
|--------|-------------|--------|----------|
| ネットワークエラー判定 | InsertMediaViewController.swift | L179 | `nserror.wmf_isNetworkConnectionError()` |
| キャンセル判定 | InsertMediaViewController.swift | L181 | `nserror.code == NSURLErrorCancelled` |
| emptyViewType設定 | InsertMediaViewController.swift | L168, L186 | `emptyViewType = .noSearchResults` |
| オフラインアラート | InsertMediaSettingsViewController.swift | L371-378 | `showOfflineAlertIfNeeded()` |

## 根拠なし項目

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

## 信頼度評価

- **claims_total**: 30（処理概要5、入力4、デリゲート4、ビジネスルール6、UI4、検索4、設定4、Wikitext5、エラー4 - 重複除外後）
- **claims_with_evidence**: 30
- **claims_without_evidence**: 0
- **confidence_derived**: 30/30 = 1.00

## 検証方法

1. 各根拠ファイルの該当行を確認し、記述内容と一致することを検証
2. Wikitext生成ロジックがimageInsertInfoメソッドで正確に実装されていることを確認
3. マジックワード変換がMagicWordUtilsを使用して言語別に行われることを確認
