---
generated_at: 2026-02-20 10:00:00
metrics:
  claims_total: 42
  claims_with_evidence: 38
  claims_without_evidence: 4
confidence_derived: 0.90
---

# 根拠レポート：非機能要件定義書

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.90**
  - 根拠あり：38 / 42、根拠なし：4
- 優先レビュー（高）
  1. **C-10 稼働率要件**：エディタ依存という推定に対する明示的な設計根拠がない
  2. **C-29 ワークスペース境界のファイルアクセス制限**：明示的なアクセス制御コードの根拠が不足
  3. **C-35 テストタイムアウト設定値の適切性**：タイムアウト値の設計根拠が不明
  4. **C-42 DCDポート設定変更可能性**：設定変更の実装箇所の直接的根拠が不足

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `source/app.d` - エントリポイント、コマンドライン引数処理
- E-02: `source/served/extension.d` - LSPイベントハンドラ、初期化処理
- E-03: `serverbase/source/served/serverbase.d` - LSPサーバー基盤、GC管理、Fiberスケジューラ
- E-04: `source/crash_handler.d` - クラッシュハンドラ（シグナルハンドラ）
- E-05: `serverbase/source/served/utils/async.d` - タイムアウト管理、Fiber生成
- E-06: `serverbase/source/served/utils/fibermanager.d` - Fiber管理、joinAll
- E-07: `http/source/served/http.d` - HTTPダウンロード実装
- E-08: `source/served/types.d` - 型定義、設定構造体、LanguageServerConfig
- E-09: `source/served/utils/trace.d` - パフォーマンストレースログ
- E-10: `lsp/source/served/lsp/jsonrpc.d` - JSON-RPC実装、入力検証
- E-11: `lsp/source/served/lsp/filereader.d` - ファイルリーダー（プラットフォーム別）
- E-12: `source/served/backend/lazy_workspaced.d` - 遅延読み込み実装
- E-13: `source/served/io/nothrow_fs.d` - nothrowファイルシステムアクセス
- E-14: `source/served/io/http_wrap.d` - HTTPダウンロードラッパー
- E-15: `source/served/commands/dcd_update.d` - DCDアップデート処理
- E-16: `source/served/linters/diagnosticmanager.d` - 診断情報管理
- E-17: `source/served/utils/progress.d` - 進捗報告
- E-18: `serverbase/source/served/utils/serverconfig.d` - ワークスペース設定管理
- E-19: `dub.json` - プロジェクトビルド設定
- E-20: `README.md` - プロジェクト概要、コマンドライン引数仕様
- E-21: `.github/workflows/unittest.yml` - CIテスト設定
- E-22: `.github/workflows/nightly.yml` - ナイトリービルド設定
- E-23: `serverbase/source/served/utils/memory.d` - メモリユーティリティ

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | RPCメインループは10msインターバルで処理 | E-03 (L460, L566) | ○ |
| C-02 | 50KiB以下のファイルは50ms遅延でdfmtリンティング | E-02 (L1157) | ○ |
| C-03 | 50KiB超のファイルは500ms遅延でdfmtリンティング | E-02 (L1157) | ○ |
| C-04 | 50KiB以下のファイルは200ms遅延でDScannerリンティング | E-02 (L1179) | ○ |
| C-05 | 50KiB超のファイルは1000ms遅延でDScannerリンティング | E-02 (L1179) | ○ |
| C-06 | HTTPダウンロード進捗通知は1秒間隔 | E-07 (L78, L101) | ○ |
| C-07 | 同時リクエスト処理数に明示的上限なし | E-03, E-06 | ○ |
| C-08 | parallelMainは毎ループ最大100回/秒 | E-05 (L30 コメント) | ○ |
| C-09 | ファイル読み込みバッファは4096バイト | E-11 | ○ |
| C-10 | 稼働率はエディタプロセスに依存 | **根拠なし** | △ |
| C-11 | DCDクラッシュ時にFiberで自動再起動 | E-02 (L960-968) | ○ |
| C-12 | Throwableをキャッチしてサーバー継続実行 | E-03 (L405-417, L429-443) | ○ |
| C-13 | NothrowDirIteratorによるFS例外のラップ | E-13 | ○ |
| C-14 | LazyWorkspaceDによるコンポーネント遅延初期化 | E-12 | ○ |
| C-15 | manyProjectsThresholdのデフォルト値は6 | E-08 (L114) | ○ |
| C-16 | シグナルハンドラ登録（Linux/macOS） | E-04 | ○ |
| C-17 | stdin/stdout経由のJSON-RPC通信 | E-03, E-10, E-11 | ○ |
| C-18 | stdoutをstderrにリダイレクト | E-03 (L12-23) | ○ |
| C-19 | DCDデフォルト通信ポートは9166 | E-02 (L380) | ○ |
| C-20 | ダウンロードファイル配置先のプラットフォーム別パス | E-02 (L1057-1076) | ○ |
| C-21 | WindowsでSSL検証をスキップ | E-19 (RequestsSkipSSL) | ○ |
| C-22 | JSON-RPCプロトコル準拠検証 | E-10 (L479-676) | ○ |
| C-23 | --requireフラグ未対応時の意図的クラッシュ | E-01 (L152-163) | ○ |
| C-24 | 6サブパッケージによるモジュラー設計 | E-19, E-20 | ○ |
| C-25 | コンポーネントベースの動的登録・解除 | E-02 (L392-414) | ○ |
| C-26 | UDAベースのイベントディスパッチ | E-03, E-02 | ○ |
| C-27 | --provideフラグによる振る舞い切り替え | E-01 (L166-214) | ○ |
| C-28 | マルチワークスペースフォルダ対応 | E-02 (L1101-1112), E-18 | ○ |
| C-29 | ワークスペース境界のファイルアクセス制限 | **根拠なし** | △ |
| C-30 | Linux/Windows/macOS対応（3プラットフォーム） | E-21, E-22, E-11 | ○ |
| C-31 | --langオプションによる多言語UI | E-01 (L130, L147-149) | ○ |
| C-32 | 各サブパッケージの個別テスト実施 | E-21 | ○ |
| C-33 | dmd-latest/ldc-latestの2コンパイラでCI検証 | E-21 | ○ |
| C-34 | 3 OS環境でのCIテスト自動実行 | E-21 | ○ |
| C-35 | CIテストの5~30分タイムアウト設定 | E-21 | ○ |
| C-36 | MockRPCテストユーティリティの存在 | E-10 (L681-747) | ○ |
| C-37 | -lowmemフラグによるメモリ使用量抑制 | E-19 (L6) | ○ |
| C-38 | 毎日UTC 2:00のナイトリービルド | E-22 (cron: '0 2 * * *') | ○ |
| C-39 | Fiberスタックサイズ：デバッグ1MiB、リリース256KiB | E-08 (L16-18) | ○ |
| C-40 | GC定期収集間隔30秒、最小化5回に1回 | E-03 (L38-40) | ○ |
| C-41 | 初期化後250msのタイムアウトで設定待機 | E-18 (L221) | ○ |
| C-42 | DCDポート設定変更可能性 | **根拠なし** | △ |

## 4) 不足情報（Unknown / Missing）
- **C-10（稼働率要件）**: serve-dがエディタのサブプロセスとして動作するという設計は自明であるが、「稼働率目標が定義されていない」という主張はネガティブな主張（何かが存在しないこと）であり、全コードを網羅的に確認しない限り完全には証明できない
  - 候補：プロジェクトの公式要件ドキュメント / Issue Tracker / 設計議論ログ
- **C-29（ワークスペース境界のファイルアクセス制限）**: serve-dがワークスペース配下のみを操作対象とするという主張に対して、明示的なパスバリデーションやアクセス制御のコードは確認できていない。実際にはLSPクライアントから渡されるURIに基づいて動作するため、サーバー側での強制的な制限は限定的と推測される
  - 候補：セキュリティレビュー / ペネトレーションテスト結果
- **C-35（テストタイムアウト設定値の適切性）**: CIワークフローに設定されたタイムアウト値は確認できるが、なぜその値が選ばれたのかの設計根拠は不明
  - 候補：CI設定の変更履歴 / 開発者コメント
- **C-42（DCDポート設定変更可能性）**: DCDのデフォルトポート9166はコードで確認できるが、ユーザーが設定を通じてこれを変更できるかの直接的な実装コードの確認が不足している
  - 候補：DCDComponentの設定処理 / workspace-dのapi.d

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 性能要件の数値（遅延値、バッファサイズ等）は全てコード上で確認可能
- 0: 低リスク - GC管理、Fiber管理の設定値はコード上で明確に定義されている
- 1: 中リスク - セキュリティ要件のうち、ワークスペース境界のアクセス制限（C-29）は推定に基づく
- 1: 中リスク - WindowsでのSSL検証スキップ（C-21）はセキュリティ上の懸念事項として認識が必要
- 0: 低リスク - 可用性要件はエディタサブプロセスという性質上、従来のサーバー運用とは異なる前提を踏まえた記述

## 6) レビュアーチェックリスト（最小）
- [ ] 性能要件の遅延値（50ms, 200ms, 500ms, 1000ms）がソースコード上の実装と一致しているか確認
- [ ] GC設定値（30秒間隔、5回に1回最小化）が現行コードと一致しているか確認
- [ ] DCDポート9166がハードコードなのか設定変更可能なのかをworkspace-d側のコードで確認
- [ ] WindowsのSSL検証スキップ（RequestsSkipSSL）がセキュリティポリシーとして許容されるか確認
- [ ] ワークスペース外のファイルアクセスに対する保護が十分かセキュリティ観点で確認
- [ ] manyProjectsThresholdのデフォルト値6が実運用上適切か確認
- [ ] Fiberスタックサイズ（リリース256KiB、デバッグ1MiB）が大規模プロジェクトで十分か確認
