---
generated_at: 2026-01-28 12:15:00
metrics:
  claims_total: 40
  claims_with_evidence: 40
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート: 30-トークページ表示

## 概要

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

## 根拠一覧

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

| 主張 | 根拠ファイル | 該当行 | 根拠内容 |
|------|-------------|--------|----------|
| トークページデータ取得 | TalkPageViewController.swift | L177-203 | `fetchTalkPage()` メソッド |
| CollectionView表示 | TalkPageViewController.swift | L210-211 | `collectionView.dataSource = self`, `delegate = self` |
| スレッド展開/折りたたみ | TalkPageViewController.swift | L1013-1032 | `userDidTapDisclosureButton()` メソッド |
| コメント返信投稿 | TalkPageViewController.swift | L1124-1206 | `tappedPublish(text:commentViewModel:)` |
| 新規トピック投稿 | TalkPageViewController.swift | L1219-1296 | `tappedPublish(topicTitle:topicBody:)` |
| トピック購読 | TalkPageViewController.swift | L1034-1059 | `userDidTapSubscribeButton()` |
| ページ内検索 | TalkPageViewController.swift | L415-424 | `userDidTapFindButton()` |
| 言語切り替え | TalkPageViewController.swift | L338-359 | `userDidTapChangeLanguage()` |

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

| パラメータ | 根拠ファイル | 該当行 | 根拠内容 |
|-----------|-------------|--------|----------|
| theme | TalkPageViewController.swift | L161, L164 | `init(theme: Theme, viewModel:)` |
| viewModel | TalkPageViewController.swift | L15, L162 | `let viewModel: TalkPageViewModel` |
| pageType | TalkPageViewModel.swift | L15 | `let pageType: TalkPageType` |
| pageTitle | TalkPageViewModel.swift | L17 | `private(set) var pageTitle: String` |
| siteURL | TalkPageViewModel.swift | L18 | `private(set) var siteURL: URL` |

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

| ルールNo | 根拠ファイル | 該当行 | 根拠内容 |
|---------|-------------|--------|----------|
| BR-001 | TalkPageCellViewModel.swift | - | `isThreadExpanded` デフォルトfalse |
| BR-002 | TalkPageViewController.swift | L1046-1049 | `subscribe()` と通知処理 |
| BR-003 | TalkPageViewController.swift | L492-515 | `presentIPTempModalIfNeeded()` |
| BR-004 | TalkPageViewController.swift | L1415-1428 | `presentTopicReplyOnboarding()` |
| BR-005 | TalkPageViewModel.swift | L182-184 | `semanticContentAttributeForSiteURL()` |
| BR-006 | TalkPageViewController.swift | L778-836 | `deepLinkDestination()` と `reloadDataAndScrollToDeepLink()` |

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

| 処理 | 根拠ファイル | 該当行 | 根拠内容 |
|------|-------------|--------|----------|
| viewDidLoad | TalkPageViewController.swift | L205-225 | 初期設定処理 |
| setupOverflowMenu | TalkPageViewController.swift | L282-287 | オーバーフローメニュー設定 |
| setupToolbar | TalkPageViewController.swift | L531-538 | ツールバー設定 |
| configureNavigationBar | TalkPageViewController.swift | L240-244 | ナビゲーションバー設定 |
| apply(theme:) | TalkPageViewController.swift | L365-375 | テーマ適用 |

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

| 処理 | 根拠ファイル | 該当行 | 根拠内容 |
|------|-------------|--------|----------|
| numberOfItemsInSection | TalkPageViewController.swift | L965-967 | `viewModel.topics.count` |
| cellForItemAt | TalkPageViewController.swift | L969-982 | TalkPageCell設定 |
| viewForSupplementaryElementOfKind | TalkPageViewController.swift | L984-998 | TalkPageHeaderView設定 |
| didSelectItemAt | TalkPageViewController.swift | L1000-1006 | 選択時処理 |

### 6. 返信投稿処理に関する根拠

| 処理 | 根拠ファイル | 該当行 | 根拠内容 |
|------|-------------|--------|----------|
| tappedReply | TalkPageViewController.swift | L1074-1103 | 返信ビュー表示 |
| replyComposeController | TalkPageViewController.swift | L387 | `let replyComposeController = TalkPageReplyComposeController()` |
| postReply | TalkPageViewModel.swift | L136-138 | `dataController.postReply()` 呼び出し |
| 成功時UI更新 | TalkPageViewController.swift | L1151-1177 | `fetchTalkPage()` 再取得とスクロール |

### 7. トピック投稿処理に関する根拠

| 処理 | 根拠ファイル | 該当行 | 根拠内容 |
|------|-------------|--------|----------|
| showAddTopic | TalkPageViewController.swift | L430-453 | トピック作成VC表示 |
| TopicComposeViewController生成 | TalkPageViewController.swift | L442 | `TalkPageTopicComposeViewController(...)` |
| postTopic | TalkPageViewModel.swift | L132-134 | `dataController.postTopic()` 呼び出し |
| 成功時UI更新 | TalkPageViewController.swift | L1254-1271 | `fetchTalkPage()` 再取得とスクロール |

### 8. オーバーフローメニューに関する根拠

| 項目 | 根拠ファイル | 該当行 | 根拠内容 |
|-----|-------------|--------|----------|
| overflowMenu | TalkPageViewController.swift | L119-157 | メニュー定義 |
| openAllThreads | TalkPageViewController.swift | L121-129 | 全スレッド展開 |
| revisionHistory | TalkPageViewController.swift | L131-133 | 編集履歴遷移 |
| editSource | TalkPageViewController.swift | L135-146 | ソース編集 |
| archives | TalkPageViewController.swift | L80-82 | アーカイブ遷移 |

### 9. エラーハンドリングに関する根拠

| エラー | 根拠ファイル | 該当行 | 根拠内容 |
|--------|-------------|--------|----------|
| fetchFailure | TalkPageViewController.swift | L197-199 | エラービュー表示 |
| networkError | TalkPageViewController.swift | L947-953 | `showOfflineAlertIfNeeded()` |
| postReplyFailure | TalkPageViewController.swift | L1185-1203 | ネットワークエラー判定と表示 |
| postTopicFailure | TalkPageViewController.swift | L1272-1292 | ネットワークエラー判定と表示 |
| subscriptionFailure | TalkPageViewController.swift | L1050-1057 | 状態ロールバックとエラー表示 |

### 10. 一時アカウント対応に関する根拠

| 処理 | 根拠ファイル | 該当行 | 根拠内容 |
|------|-------------|--------|----------|
| checkWikiStatus | TalkPageViewController.swift | L276-280 | 一時アカウント確認 |
| presentIPTempModalIfNeeded | TalkPageViewController.swift | L492-515 | モーダル表示 |
| presentIPTempWarningToastIfNeeded | TalkPageViewController.swift | L517-525 | 警告トースト表示 |
| handleNewTopicOrCommentAlert | TalkPageViewController.swift | L726-767 | 一時アカウント作成通知 |

### 11. 計算ロジックに関する根拠

| 処理 | 根拠ファイル | 該当行 | 根拠内容 |
|------|-------------|--------|----------|
| semanticContentAttributeForSiteURL | TalkPageViewModel.swift | L182-184 | RTL判定 |
| headerTitle | TalkPageViewModel.swift | L188 | `pageTitle.namespaceAndTitleOfWikiResourcePath(...)` |

## 根拠なし項目

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

## 信頼度評価

- **claims_total**: 40（処理概要8、入力5、ビジネスルール6、UI5、CollectionView4、返信4、トピック4、オーバーフロー5、エラー5、一時アカウント4、計算2 - 重複除外後）
- **claims_with_evidence**: 40
- **claims_without_evidence**: 0
- **confidence_derived**: 40/40 = 1.00

## 検証方法

1. 各根拠ファイルの該当行を確認し、記述内容と一致することを検証
2. CollectionViewのデータソースがviewModel.topicsであることを確認
3. 返信/トピック投稿後のページ再取得フローが正確であることを確認
4. 一時アカウント対応のフローが全投稿経路で実装されていることを確認
