---
generated_at: 2026-03-01 10:00:00
metrics:
  claims_total: 25
  claims_with_evidence: 23
  claims_without_evidence: 2
confidence_derived: 0.92
---

# 根拠レポート：1-コンパイラ（Compiler）

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.92**
  - 根拠あり：23 / 25、根拠なし：2
- 優先レビュー（高）
  1. **パフォーマンス要件のSizeOnlySource最適化の詳細動作**：ソースコード確認済みだが全パスの検証は未完
  2. **セキュリティ考慮事項のrecordsファイル内容**：仕様書等の明示的な根拠なし

## 2) 参照した情報（Evidence一覧）

- E-01: `lib/Compiler.js` 163-346行目（コンストラクタ、フック定義、プロパティ）
- E-02: `lib/Compiler.js` 496-632行目（run()メソッド）
- E-03: `lib/Compiler.js` 480-490行目（watch()メソッド）
- E-04: `lib/Compiler.js` 699-1045行目（emitAssets()メソッド）
- E-05: `lib/Compiler.js` 1051-1145行目（emitRecords() / readRecords()メソッド）
- E-06: `lib/Watching.js` 28-82行目（Watchingコンストラクタ）
- E-07: `lib/NormalModuleFactory.js`（NormalModuleFactoryクラス）
- E-08: `lib/ContextModuleFactory.js`（ContextModuleFactoryクラス）
- E-09: `lib/ResolverFactory.js`（ResolverFactoryクラス）
- E-10: `docs/code-to-docs/機能一覧/機能一覧.csv` No.1行
- E-11: `lib/ConcurrentCompilationError.js`（エラークラス）

## 3) Claims と根拠の対応（レビューの主戦場）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Compilerはコンパイルライフサイクル全体を管理する | E-01, E-02, E-10 | ○ |
| C-02 | tapableフックによるプラグインシステムとの統合 | E-01 | ○ |
| C-03 | コンストラクタでフック定義とプロパティ初期化（163-346行目） | E-01 | ○ |
| C-04 | run()メソッドで単発コンパイルを実行 | E-02 | ○ |
| C-05 | running状態で二重実行防止（ConcurrentCompilationError） | E-02, E-11 | ○ |
| C-06 | watch()メソッドでWatchingインスタンスに委譲 | E-03, E-06 | ○ |
| C-07 | compile()でCompilation生成・makeフック呼び出し | E-02 | ○ |
| C-08 | emitAssets()でファイルシステムにアセット出力 | E-04 | ○ |
| C-09 | asyncLib.forEachLimitで並列度15のアセット出力 | E-04 (716行目) | ○ |
| C-10 | 大文字小文字の衝突検出 | E-04 (768-803行目) | ○ |
| C-11 | イミュータブルファイルのスキップ最適化 | E-04 (917-922行目) | ○ |
| C-12 | 既存ファイルとの内容比較によるスキップ | E-04 (924-948行目) | ○ |
| C-13 | shouldEmitフックでfalseが返った場合アセット出力スキップ | E-02 (537行目) | ○ |
| C-14 | needAdditionalPassで再コンパイル | E-02 (556-573行目) | ○ |
| C-15 | readRecords/emitRecordsでレコードファイルの読み書き | E-05 | ○ |
| C-16 | NormalModuleFactory / ContextModuleFactory の生成 | E-07, E-08 | ○ |
| C-17 | ResolverFactoryの生成 | E-01 (287行目), E-09 | ○ |
| C-18 | runAsChild()による子コンパイラのサポート | E-02 (638-686行目) | ○ |
| C-19 | beforeRun -> run -> readRecords -> compileの実行順序 | E-02 (606-620行目) | ○ |
| C-20 | キャッシュ機構（beginIdle / endIdle） | E-02 (510-514行目, 622-630行目) | ○ |
| C-21 | doWrite()でoutputFileSystem.writeFile呼び出し | E-04 (840-868行目) | ○ |
| C-22 | afterEmitフックの呼び出し | E-04 (1027行目) | ○ |
| C-23 | doneフック後にafterDoneフックが呼ばれる | E-02 (520行目) | ○ |
| C-24 | SizeOnlySourceによるメモリ最適化の全パス動作 | E-04 | △ |
| C-25 | recordsファイルにソースコードが含まれないこと | **根拠なし** | △ |

## 4) 不足情報（Unknown / Missing）
- C-24: SizeOnlySourceの生成・利用パスはemitAssets内で確認できるが、全てのエッジケースにおける動作は未検証
  - 候補：テストコード / webpack公式ドキュメント / webpack-sourcesパッケージのソースコード
- C-25: recordsファイルの内容にソースコードが含まれないことの確認は、_emitRecords()のJSON.stringify処理から推測しているが、明示的な仕様書は存在しない
  - 候補：webpack公式ドキュメント / テストケース

## 5) リスクフラグ（レビュー観点）
- 0: 全体的に低リスク。主要な主張はソースコードから直接確認可能
- 1: セキュリティ関連の主張（C-25）は中リスク。recordsファイルの内容について追加確認が望ましい

## 6) レビュアーチェックリスト（最小）
- [ ] フック一覧が網羅されているか（特にwebpack 5で追加・変更されたフック）
- [ ] emitAssetsの並列度15が現行コードと一致するか
- [ ] compile()メソッドの行番号が現行コードと一致するか（ファイル末尾付近のため、直接行番号を記載していない）
- [ ] watchモードの動作説明が十分か
- [ ] recordsファイルのセキュリティリスク評価が適切か
