---
generated_at: 2026-02-20 12:00:00
metrics:
  claims_total: 42
  claims_with_evidence: 39
  claims_without_evidence: 3
confidence_derived: 0.93
---

# 根拠レポート：アーキテクチャ設計書

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.93**
  - 根拠あり：39 / 42、根拠なし：3
- 優先レビュー（高）
  1. **mir-ionの用途記述**：mir-ionの具体的なJSON直列化用途はコード中のimport文から推測しているが、直接的な利用箇所は全量確認していない
  2. **GCコレクション頻度（30秒）のデフォルト値**：`serverbase.d`のLanguageServerConfigに記載があるが、実運用での挙動は要確認
  3. **コーディング規約の詳細**：明示的なコーディング規約ファイルがプロジェクトに存在しないため、コードパターンからの推測

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

- E-01: `dub.json` - メインパッケージのビルド設定、依存関係、サブパッケージ定義
- E-02: `dub.selections.json` - 全依存ライブラリのバージョン固定情報
- E-03: `source/app.d` - エントリーポイント、コマンドライン引数処理、メインループ起動
- E-04: `source/served/extension.d` - LSPメソッド実装集約、初期化、設定管理、コンポーネント登録
- E-05: `source/served/types.d` - Configuration構造体、Workspace構造体、グローバル状態、LanguageServerRouterミックスイン
- E-06: `serverbase/source/served/serverbase.d` - LanguageServerRouterテンプレート、LanguageServerConfig、GC管理、メインループ
- E-07: `lsp/source/served/lsp/jsonrpc.d` - RPCProcessor、JSON-RPCメッセージ処理、WindowFunctions
- E-08: `source/served/backend/lazy_workspaced.d` - LazyWorkspaceD、LazyInstance、遅延ロード機構
- E-09: `workspace-d/source/workspaced/backend.d` - WorkspaceDバックエンド、Configuration型
- E-10: `workspace-d/source/workspaced/api.d` - コンポーネントAPI定義、IMessageHandler
- E-11: `protocol/source/served/lsp/protocol.d` - LSP v3.16型定義
- E-12: `source/served/linters/diagnosticmanager.d` - DiagnosticManager、3プロバイダスロット
- E-13: `source/served/linters/dscanner.d` - DScanner静的解析リンター（slot 0）
- E-14: `source/served/linters/dub.d` - DUBビルドリンター（slot 1）
- E-15: `source/served/linters/dfmt.d` - dfmtリンター（slot 2）
- E-16: `source/served/commands/complete.d` - 自動補完コマンド実装
- E-17: `lsp/source/served/lsp/textdocumentmanager.d` - TextDocumentManager
- E-18: `serverbase/source/served/utils/events.d` - EventProcessor、protocolMethod/protocolNotification UDA
- E-19: `serverbase/source/served/utils/fibermanager.d` - FiberManager
- E-20: `source/served/utils/trace.d` - TraceData、パフォーマンストレース
- E-21: `source/served/utils/progress.d` - ProgressType、reportProgress
- E-22: `source/crash_handler.d` - クラッシュハンドラ、バックトレース出力
- E-23: `http/dub.sdl` - HTTPサブパッケージ依存設定
- E-24: `protocol/dub.sdl` - protocolサブパッケージ依存設定
- E-25: `lsp/dub.sdl` - lspサブパッケージ依存設定
- E-26: `serverbase/dub.sdl` - serverbaseサブパッケージ依存設定
- E-27: `workspace-d/dub.sdl` - workspace-dサブパッケージ依存設定
- E-28: `dcd/dub.sdl` - dcdサブパッケージ依存設定
- E-29: `README.md` - プロジェクト概要とエディタ統合手順
- E-30: `reggaefile.d` - ビルドシステム設定

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | serve-dはD言語用LSP実装である | E-01, E-03, E-29 | ○ |
| C-02 | JSON-RPCをstdin/stdout経由で通信する | E-03, E-06, E-07 | ○ |
| C-03 | DCD 0.16.2をコード補完に使用する | E-02, E-04, E-28 | ○ |
| C-04 | DScanner 0.16.0-beta.5を静的解析に使用する | E-02, E-13, E-27 | ○ |
| C-05 | dfmt 0.15.2をフォーマットに使用する | E-02, E-15, E-27 | ○ |
| C-06 | DUB 1.40.0をプロジェクト管理に使用する | E-02, E-14, E-27 | ○ |
| C-07 | レイヤードアーキテクチャとコンポーネントベースアーキテクチャの組み合わせ | E-01, E-04, E-06, E-08, E-09 | ○ |
| C-08 | Protocol層: served.lsp.protocolがLSP v3.16型定義を提供する | E-11, E-24 | ○ |
| C-09 | Transport層: RPCProcessorがFiberとしてJSON-RPC処理する | E-07 | ○ |
| C-10 | Server Base層: LanguageServerRouterがミックスインテンプレートとして提供される | E-06 | ○ |
| C-11 | Extension層: served.extensionが全LSPメソッド実装を集約する | E-04 | ○ |
| C-12 | Backend Adapter層: LazyWorkspaceDが遅延ロード機構を提供する | E-08 | ○ |
| C-13 | Backend層: WorkspaceDがコンポーネントレジストリを管理する | E-09, E-10 | ○ |
| C-14 | サブパッケージ: protocol -> lsp -> serverbase の依存チェーン | E-24, E-25, E-26 | ○ |
| C-15 | workspace-dはdcd, dscanner, dfmt, dub, libdparseに依存する | E-27 | ○ |
| C-16 | FileReaderが別スレッドでstdinを読み取る | E-03, E-06, E-07 | ○ |
| C-17 | FiberManagerが協調マルチタスクを管理する | E-19 | ○ |
| C-18 | EventProcessorがUDAベースのメソッドディスパッチを行う | E-18 | ○ |
| C-19 | @protocolMethod UDAでLSPリクエストハンドラを宣言する | E-04, E-18 | ○ |
| C-20 | @protocolNotification UDAでLSP通知ハンドラを宣言する | E-04, E-18 | ○ |
| C-21 | DiagnosticManagerが3プロバイダ分のスロットを管理する | E-12 | ○ |
| C-22 | DScanner=slot0, DUB=slot1, dfmt=slot2 | E-13, E-14, E-15 | ○ |
| C-23 | TextDocumentManagerがドキュメントをインメモリ管理する | E-17 | ○ |
| C-24 | Configuration構造体がD, DFmt, DScanner等のセクションを持つ | E-05 | ○ |
| C-25 | stdoutがRPC占有のためstderrにリダイレクトされる | E-06 (shared static this) | ○ |
| C-26 | GCコレクションがデフォルト30秒ごとに実行される | E-06 (gcCollectSeconds = 30) | ○ |
| C-27 | GC最小化がデフォルト5回に1回実行される | E-06 (gcMinimizeTimes = 5) | ○ |
| C-28 | crash_handlerがSIGSEGV等のシグナルでバックトレースを出力する | E-22 | ○ |
| C-29 | POSIXシステムでexit()による即時終了 | E-03 (main関数末尾) | ○ |
| C-30 | DCDサーバークラッシュ時にMessageHandler.handleCrashで自動再起動される | E-04 (MessageHandler class) | ○ |
| C-31 | JSONパースエラーにErrorCode.parseErrorを返す | E-07 (handleRequestImpl) | ○ |
| C-32 | 未初期化リクエストにErrorCode.serverNotInitializedを返す | E-06 (processRequest) | ○ |
| C-33 | 未知メソッドにErrorCode.methodNotFoundを返す | E-06 (processRequest) | ○ |
| C-34 | textDocument/didChange時にsetTimeoutで遅延リント実行 | E-04 (onDidChangeDocument) | ○ |
| C-35 | LazyInstanceが初回アクセス時にコンポーネントをロードする | E-08 (onBeforeAccessComponent) | ○ |
| C-36 | 6つのサブパッケージ: http, protocol, lsp, serverbase, dcd, workspace-d | E-01 (subPackages) | ○ |
| C-37 | workspace-dに13個以上のコンポーネントが登録される | E-04 (doGlobalStartup) | ○ |
| C-38 | ライセンスはMIT | E-01 (license) | ○ |
| C-39 | 多言語対応（currentLanguage）がサポートされる | E-03 (lang引数処理) | ○ |
| C-40 | mir-ionがJSON直列化/逆直列化に使用される | E-24, E-25 | △ |
| C-41 | コーディング規約でcamelCaseとsnake_caseが使い分けられている | **根拠なし** | △ |
| C-42 | dfmtで「//dfmt off」「//dfmt on」によるフォーマット制御が使われる | E-04 (コード中のコメント) | △ |

## 4) 不足情報（Unknown / Missing）
- **C-40 (mir-ionの用途)**: mir-ionパッケージはprotocol/lspサブパッケージの依存として宣言されているが、具体的な全利用箇所は本分析で網羅的に確認していない。protocol.dのimport文で`mir.serde`が使われていることから直列化に使用されていることは確認できるが、「JSON直列化/逆直列化」という記述の正確さは要確認
  - 候補: protocol/source/served/lsp/protocol.d / lsp/source/served/lsp/jsonrpc.d / 各コマンドモジュール
- **C-41 (コーディング規約)**: プロジェクトに明示的なコーディング規約ドキュメント（.editorconfig、CONTRIBUTING.md等）が存在しない。命名規則の記述はコードパターンからの推測に基づく
  - 候補: .editorconfig / CONTRIBUTING.md / コードレビューガイドライン
- **C-42 (dfmt制御コメント)**: コード中に `//dfmt off` / `//dfmt on` コメントが存在することは確認したが、これをコーディング規約として体系的に定めているかは不明
  - 候補: チームの開発ガイドライン / CONTRIBUTING.md

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: 大部分の主張（39/42）は直接的なソースコード根拠に基づいており、信頼性は高い
- **0 (低リスク)**: レイヤー構成とコンポーネント依存関係はdub設定ファイルとimport文から直接検証可能
- **1 (中リスク)**: コーディング規約セクション（C-41, C-42）はプロジェクトに明示的な規約文書がないため推測が含まれる
- **0 (低リスク)**: 外部依存ライブラリのバージョン情報はdub.selections.jsonから正確に取得されている

## 6) レビュアーチェックリスト（最小）
- [ ] レイヤー構成の記述が実際のコード依存関係と一致しているか確認する
- [ ] サブパッケージ間の依存関係がdub設定ファイルと整合しているか確認する
- [ ] workspace-dコンポーネント一覧（doGlobalStartupで登録される13コンポーネント）が網羅されているか確認する
- [ ] エラーハンドリングのパターンが実際の挙動と一致しているか、特にThrowableキャッチの記述を確認する
- [ ] LazyWorkspaceDの遅延ロード機構の説明が正確かコードレベルで確認する
- [ ] コーディング規約セクション（根拠不足のC-41, C-42）の正確性を開発チームに確認する
