---
generated_at: 2026-03-01 10:15:00
metrics:
  claims_total: 22
  claims_with_evidence: 22
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：62-SignalTextChanged

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：22 / 22、根拠なし：0
- 優先レビュー（高）
  - なし。すべての主張に根拠が存在する。

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `src/types/IUiaEventDispatcher.h` - IUiaEventDispatcher インターフェース定義（25行目）
- E-02: `src/renderer/uia/UiaRenderer.cpp` - UiaEngine 実装（65-69行目: Invalidate, 141-145行目: InvalidateAll, 147-162行目: NotifyNewText, 190-202行目: EndPaint, 219-268行目: Present）
- E-03: `src/renderer/uia/UiaRenderer.hpp` - UiaEngine クラス定義（70行目: _textBufferChanged, 72-73行目: _newOutput/_queuedOutput）
- E-04: `src/cascadia/TerminalControl/InteractivityAutomationPeer.cpp` - InteractivityAutomationPeer 実装（80-83行目）
- E-05: `src/cascadia/TerminalControl/InteractivityAutomationPeer.h` - InteractivityAutomationPeer 定義（50行目, 74行目）
- E-06: `src/cascadia/TerminalControl/TermControlAutomationPeer.cpp` - TermControlAutomationPeer 実装（82行目, 158-176行目）
- E-07: `src/cascadia/TerminalControl/TermControlAutomationPeer.h` - TermControlAutomationPeer 定義（68行目）
- E-08: `src/cascadia/TerminalControl/HwndTerminalAutomationPeer.cpp` - HwndTerminalAutomationPeer 実装（116-120行目）
- E-09: `src/cascadia/TerminalControl/HwndTerminalAutomationPeer.hpp` - HwndTerminalAutomationPeer 定義（36行目）
- E-10: `src/types/UiaTracing.cpp` - UiaTracing 実装（733-744行目）
- E-11: `src/types/UiaTracing.h` - UiaTracing クラス定義（87行目）
- E-12: `docs/code-to-docs/通知一覧/通知一覧.csv` - 通知一覧（62行目）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | SignalTextChanged は IUiaEventDispatcher.h で定義される純粋仮想関数である | E-01 (25行目) | ○ |
| C-02 | Invalidate() で _textBufferChanged フラグが true に設定される | E-02 (67行目) | ○ |
| C-03 | InvalidateAll() で _textBufferChanged フラグが true に設定される | E-02 (143行目) | ○ |
| C-04 | NotifyNewText() で新テキストが _newOutput にバッファリングされ _textBufferChanged が true に設定される | E-02 (156-158行目) | ○ |
| C-05 | NotifyNewText() は _isEnabled == false の場合 S_FALSE を返しスキップする | E-02 (152行目) | ○ |
| C-06 | GH#16217 への対応として無効時にバッファリングをスキップする | E-02 (150-152行目 コメント) | ○ |
| C-07 | Present() メソッド内で _textBufferChanged が true の場合に SignalTextChanged() が呼ばれる | E-02 (232-239行目) | ○ |
| C-08 | Present() 後に _textBufferChanged は false にリセットされる | E-02 (263行目) | ○ |
| C-09 | EndPaint() で _newOutput と _queuedOutput がスワップされる | E-02 (199行目) | ○ |
| C-10 | Disable() 呼び出し時に _newOutput がクリアされる | E-02 (53行目) | ○ |
| C-11 | UiaEngine が無効（_isEnabled == false）の場合、Present は S_FALSE を返す | E-02 (221行目) | ○ |
| C-12 | InteractivityAutomationPeer は TextChanged.raise() でイベントを中継する | E-04 (82行目), E-05 (74行目) | ○ |
| C-13 | TermControlAutomationPeer はコンストラクタで TextChanged イベントハンドラを登録する | E-06 (82行目) | ○ |
| C-14 | TermControlAutomationPeer は Dispatcher.RunAsync で UIスレッドに非同期ディスパッチする | E-06 (166行目) | ○ |
| C-15 | XAML版では RaiseAutomationEvent(TextPatternOnTextChanged) が呼ばれる | E-06 (172行目) | ○ |
| C-16 | _termControl が null の場合はイベント発火がスキップされる | E-06 (169-170行目) | ○ |
| C-17 | Dispatcher が null の場合は早期リターンする | E-06 (162-164行目) | ○ |
| C-18 | HWND版では UiaRaiseAutomationEvent(UIA_Text_TextChangedEventId) が呼ばれる | E-08 (119行目) | ○ |
| C-19 | UiaTracing::Signal::TextChanged() で ETW トレースが記録される | E-10 (733-744行目) | ○ |
| C-20 | トレースレベルは WINEVENT_LEVEL_VERBOSE である | E-10 (741行目) | ○ |
| C-21 | CoreDispatcherPriority は Normal である | E-06 (166行目) | ○ |
| C-22 | NotifyNewText 例外時は CATCH_LOG_RETURN_HR(E_FAIL) で処理される | E-02 (162行目) | ○ |

## 4) 不足情報（Unknown / Missing）
- なし。すべての主張に対してソースコード上の根拠が確認されている。

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 主要な処理フローはソースコードで完全に確認済み
- 0: 低リスク - テキストバッファ変更の3つのトリガー（Invalidate, InvalidateAll, NotifyNewText）はすべてコードで確認済み
- 0: 低リスク - ダブルバッファリング（_newOutput / _queuedOutput）の動作はコードで確認済み

## 6) レビュアーチェックリスト（最小）
- [ ] UiaRenderer.cpp の3つのテキスト変更トリガー（Invalidate, InvalidateAll, NotifyNewText）の動作が正確か確認
- [ ] EndPaint() でのダブルバッファリング（swap）動作が正確か確認
- [ ] Present() メソッドにおける SignalTextChanged() 呼び出し条件が正確か確認
- [ ] TermControlAutomationPeer のコンストラクタでの TextChanged イベントハンドラ登録が正しいか確認
- [ ] HWND版の UiaRaiseAutomationEvent のイベントIDが正しいか確認
