---
generated_at: 2026-02-19 18:45:00
metrics:
  claims_total: 100
  claims_with_evidence: 98
  claims_without_evidence: 2
confidence_derived: 0.98
---

# 根拠レポート：modules-lang-ruby.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：98 / 100、根拠なし：2
- 優先レビュー（高）
  1. **UT-RUB-002**：遅延評価動作の詳細確認
  2. **UT-RUB-100**：未ロード状態の境界条件

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

- E-01: `modules/lang/ruby/config.el` - メイン設定ファイル（204行）
- E-02: `modules/lang/ruby/packages.el` - パッケージ定義（38行）
- E-03: `modules/lang/ruby/doctor.el` - 診断スクリプト（25行）
- E-04: `modules/lang/ruby/.doommodule` - モジュール定義ファイル
- E-05: `modules/lang/ruby/README.org` - ドキュメント（存在確認済み）

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

### projectile設定（C-01〜C-02）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Gemfileがprojectile-project-root-filesに追加される | E-01 L4-5 `(add-to-list 'projectile-project-root-files "Gemfile")` | ○ |
| C-02 | projectile未ロード時の遅延評価 | E-01 L4 `(after! projectile ...)` | △ |

### ruby-mode設定（C-03〜C-22）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-03 | .rbファイルでruby-mode有効化 | E-01 L13 `:mode "\\.\\(?:a?rb\\|aslsx\\)\\'"` | ○ |
| C-04 | .arbファイルでruby-mode有効化 | E-01 L13 `:mode "\\.\\(?:a?rb\\|aslsx\\)\\'"` | ○ |
| C-05 | .aslsxファイルでruby-mode有効化 | E-01 L13 `:mode "\\.\\(?:a?rb\\|aslsx\\)\\'"` | ○ |
| C-06 | Brewfileでruby-mode有効化 | E-01 L14 `:mode "/\\(?:Brew\\|Fast\\)file\\'"` | ○ |
| C-07 | Fastfileでruby-mode有効化 | E-01 L14 `:mode "/\\(?:Brew\\|Fast\\)file\\'"` | ○ |
| C-08 | rubyインタプリタでruby-mode有効化 | E-01 L15 `:interpreter "j?ruby\\(?:[0-9.]+\\)"` | ○ |
| C-09 | jrubyインタプリタでruby-mode有効化 | E-01 L15 `:interpreter "j?ruby\\(?:[0-9.]+\\)"` | ○ |
| C-10 | バージョン付きインタプリタ対応 | E-01 L15 `:interpreter "j?ruby\\(?:[0-9.]+\\)"` | ○ |
| C-11 | エンコーディングマジックコメント無効 | E-01 L17 `(setq ruby-insert-encoding-magic-comment nil)` | ○ |
| C-12 | elseキーワードelectric動作 | E-01 L19 `(set-electric! 'ruby-mode :words '("else" "end" "elsif"))` | ○ |
| C-13 | endキーワードelectric動作 | E-01 L19 `(set-electric! 'ruby-mode :words '("else" "end" "elsif"))` | ○ |
| C-14 | elsifキーワードelectric動作 | E-01 L19 `(set-electric! 'ruby-mode :words '("else" "end" "elsif"))` | ○ |
| C-15 | REPLハンドラとしてinf-ruby設定 | E-01 L20 `(set-repl-handler! 'ruby-mode #'inf-ruby)` | ○ |
| C-16 | +lsp時LSP起動 | E-01 L22-23 `(when (modulep! +lsp) (add-hook 'ruby-mode-local-vars-hook #'lsp! 'append))` | ○ |
| C-17 | +lsp無効時LSP非起動 | E-01 L22 `(when (modulep! +lsp) ...)` 条件分岐 | ○ |
| C-18 | inf-rubyバッファマーク | E-01 L26 `(add-hook 'inf-ruby-mode-hook #'doom-mark-buffer-as-real-h)` | ○ |
| C-19 | ブレークポイント時inf-ruby切替 | E-01 L28 `(add-hook 'compilation-filter-hook #'inf-ruby-auto-enter)` | ○ |
| C-20 | sp-max-pair-length設定 | E-01 L31 `(setq-hook! 'ruby-mode-hook sp-max-pair-length 6)` | ○ |
| C-21 | [キーでブロック切替 | E-01 L35 `"[" #'ruby-toggle-block` | ○ |
| C-22 | {キーでブロック切替 | E-01 L36 `"{" #'ruby-toggle-block` | ○ |

### ruby-ts-mode設定（C-23〜C-26）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-23 | +tree-sitter時tree-sitter設定 | E-01 L39-45 `(use-package! ruby-ts-mode :when (modulep! +tree-sitter) ...)` | ○ |
| C-24 | ruby-ts-modeでelectric動作 | E-01 L47 `(set-electric! 'ruby-ts-mode :words '("else" "end" "elsif"))` | ○ |
| C-25 | ruby-ts-modeでREPLハンドラ | E-01 L48 `(set-repl-handler! 'ruby-ts-mode #'inf-ruby)` | ○ |
| C-26 | ruby-ts-modeでLSP起動 | E-01 L49-50 `(when (modulep! +lsp) (add-hook 'ruby-ts-mode-local-vars-hook #'lsp! 'append))` | ○ |

### yard-mode設定（C-27）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-27 | ruby-modeでyard-mode自動有効化 | E-01 L53-54 `(use-package! yard-mode :hook ruby-mode)` | ○ |

### ruby-json-to-hash設定（C-28〜C-29）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 | Jキーでparse-json実行 | E-01 L63 `"J" #'ruby-json-to-hash-parse-json` | ○ |
| C-29 | jキーでtoggle-let実行 | E-01 L64 `"j" #'ruby-json-to-hash-toggle-let` | ○ |

### rake設定（C-30〜C-35）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-30 | rakeキャッシュファイルパス設定 | E-01 L73 `(setq rake-cache-file (file-name-concat doom-profile-cache-dir "rake.cache"))` | ○ |
| C-31 | rake補完システム設定 | E-01 L74 `(setq rake-completion-system 'default)` | ○ |
| C-32 | k kでrake実行 | E-01 L79 `"k" #'rake` | ○ |
| C-33 | k rでrake-rerun実行 | E-01 L80 `"r" #'rake-rerun` | ○ |
| C-34 | k Rでrake-regenerate-cache実行 | E-01 L81 `"R" #'rake-regenerate-cache` | ○ |
| C-35 | k fでrake-find-task実行 | E-01 L82 `"f" #'rake-find-task` | ○ |

### bundler設定（C-36〜C-41）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-36 | b cでbundle-check実行 | E-01 L91 `"c" #'bundle-check` | ○ |
| C-37 | b Cでbundle-console実行 | E-01 L92 `"C" #'bundle-console` | ○ |
| C-38 | b iでbundle-install実行 | E-01 L93 `"i" #'bundle-install` | ○ |
| C-39 | b uでbundle-update実行 | E-01 L94 `"u" #'bundle-update` | ○ |
| C-40 | b eでbundle-exec実行 | E-01 L95 `"e" #'bundle-exec` | ○ |
| C-41 | b oでbundle-open実行 | E-01 L96 `"o" #'bundle-open` | ○ |

### chruby/rbenv設定（C-42〜C-46）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-42 | +chruby時chruby-use-corresponding実行 | E-01 L99-100 `(use-package! chruby :when (modulep! +chruby) :hook (ruby-mode . chruby-use-corresponding))` | ○ |
| C-43 | +chruby時rspec-use-chruby設定 | E-01 L103 `rspec-use-chruby t` | ○ |
| C-44 | +chruby時rspec-use-rvm無効 | E-01 L102 `(setq rspec-use-rvm nil` | ○ |
| C-45 | rbenv時rspec-use-rvm無効 | E-01 L106 `(setq rspec-use-rvm nil)` | ○ |
| C-46 | rbenv時shimsパス追加 | E-01 L107 `(add-to-list 'exec-path (expand-file-name "shims" rbenv-installation-dir))` | ○ |

### rspec-mode設定（C-47〜C-65）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | .rspecでtext-mode有効化 | E-01 L114 `:mode ("/\\.rspec\\'" . text-mode)` | ○ |
| C-48 | spring無効設定 | E-01 L116 `(setq rspec-use-spring-when-possible nil)` | ○ |
| C-49 | Evil時キーマップ正規化 | E-01 L117-118 `(when (modulep! :editor evil) (add-hook 'rspec-mode-hook #'evil-normalize-keymaps))` | ○ |
| C-50 | ポップアップルール設定 | E-01 L120 `(set-popup-rule! "^\\*\\(rspec-\\)?compilation" :size 0.3 :ttl nil :select t)` | ○ |
| C-51 | rvm存在時rspec-use-rvm設定 | E-01 L121 `(setq rspec-use-rvm (executable-find "rvm"))` | ○ |
| C-52 | rvm非存在時rspec-use-rvm nil | E-01 L121 `(setq rspec-use-rvm (executable-find "rvm"))` | ○ |
| C-53 | t aでrspec-verify-all実行 | E-01 L125 `"a" #'rspec-verify-all` | ○ |
| C-54 | t rでrspec-rerun実行 | E-01 L126 `"r" #'rspec-rerun` | ○ |
| C-55 | t vでrspec-verify実行 | E-01 L128 `"v" #'rspec-verify` | ○ |
| C-56 | t cでrspec-verify-continue実行 | E-01 L129 `"c" #'rspec-verify-continue` | ○ |
| C-57 | t lでrspec-run-last-failed実行 | E-01 L130 `"l" #'rspec-run-last-failed` | ○ |
| C-58 | t Tでrspec-toggle-spec-and-target実行 | E-01 L131 `"T" #'rspec-toggle-spec-and-target` | ○ |
| C-59 | t tでrspec-toggle-spec-and-target-find-example実行 | E-01 L132 `"t" #'rspec-toggle-spec-and-target-find-example` | ○ |
| C-60 | t fでrspec-verify-method実行 | E-01 L134 `"f" #'rspec-verify-method` | ○ |
| C-61 | t mでrspec-verify-matching実行 | E-01 L135 `"m" #'rspec-verify-matching` | ○ |
| C-62 | t sでrspec-verify-single実行 | E-01 L137 `"s" #'rspec-verify-single` | ○ |
| C-63 | t eでrspec-toggle-example-pendingness実行 | E-01 L138 `"e" #'rspec-toggle-example-pendingness` | ○ |
| C-64 | dired t vでrspec-dired-verify実行 | E-01 L140 `"v" #'rspec-dired-verify` | ○ |
| C-65 | dired t sでrspec-dired-verify-single実行 | E-01 L141 `"s" #'rspec-dired-verify-single` | ○ |

### minitest設定（C-66〜C-70）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-66 | Evil時minitest キーマップ正規化 | E-01 L147-148 `(when (modulep! :editor evil) (add-hook 'minitest-mode-hook #'evil-normalize-keymaps))` | ○ |
| C-67 | t rでminitest-rerun実行 | E-01 L152 `"r" #'minitest-rerun` | ○ |
| C-68 | t aでminitest-verify-all実行 | E-01 L153 `"a" #'minitest-verify-all` | ○ |
| C-69 | t sでminitest-verify-single実行 | E-01 L154 `"s" #'minitest-verify-single` | ○ |
| C-70 | t vでminitest-verify実行 | E-01 L155 `"v" #'minitest-verify` | ○ |

### projectile-rails設定（C-71〜C-81）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-71 | +rails時ruby-modeでprojectile-rails-mode有効 | E-01 L162-163 `(use-package! projectile-rails :when (modulep! +rails) :hook ((ruby-mode inf-ruby-mode projectile-rails-server-mode) . projectile-rails-mode))` | ○ |
| C-72 | +rails時inf-ruby-modeでprojectile-rails-mode有効 | E-01 L163 `:hook ((ruby-mode inf-ruby-mode projectile-rails-server-mode) . projectile-rails-mode)` | ○ |
| C-73 | +rails時サーバーモードでprojectile-rails-mode有効 | E-01 L163 `:hook ((ruby-mode inf-ruby-mode projectile-rails-server-mode) . projectile-rails-mode)` | ○ |
| C-74 | Railsサーバーバッファマーク | E-01 L164 `:hook (projectile-rails-server-mode . doom-mark-buffer-as-real-h)` | ○ |
| C-75 | projectile-rails-modeでauto-insert-mode有効 | E-01 L165 `:hook (projectile-rails-mode . auto-insert-mode)` | ○ |
| C-76 | auto-insert-query nil設定 | E-01 L167 `(setq auto-insert-query nil)` | ○ |
| C-77 | inf-ruby-console-environment設定 | E-01 L168 `(setq inf-ruby-console-environment "development")` | ○ |
| C-78 | :lang web時web-modeでprojectile-rails-mode | E-01 L169-170 `(when (modulep! :lang web) (add-hook 'web-mode-hook #'projectile-rails-mode))` | ○ |
| C-79 | railsポップアップルール設定 | E-01 L172 `(set-popup-rule! "^\\*\\(projectile-\\)?rails" :ttl nil)` | ○ |
| C-80 | Evil時projectile-railsキーマップ正規化 | E-01 L173-174 `(when (modulep! :editor evil) (add-hook 'projectile-rails-mode-hook #'evil-normalize-keymaps))` | ○ |
| C-81 | rでprojectile-rails-command-map利用 | E-01 L177 `"r" #'projectile-rails-command-map` | ○ |

### rails-routes/rails-i18n設定（C-82〜C-87）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-82 | C-c oでrails-routes-insert実行 | E-01 L185 `"C-c o" #'rails-routes-insert` | ○ |
| C-83 | C-c C-oでrails-routes-insert-no-cache実行 | E-01 L186 `"C-c C-o" #'rails-routes-insert-no-cache` | ○ |
| C-84 | C-c ! oでrails-routes-jump実行 | E-01 L187 `"C-c ! o" #'rails-routes-jump` | ○ |
| C-85 | web-modeでrails-routesキーバインド | E-01 L188-192 `(map! :after web-mode :map web-mode-map ...)` | ○ |
| C-86 | C-c iでrails-i18n-insert-with-cache実行 | E-01 L200 `"C-c i" #'rails-i18n-insert-with-cache` | ○ |
| C-87 | web-modeでrails-i18nキーバインド | E-01 L201-203 `(map! :after web-mode :map web-mode-map ...)` | ○ |

### doctor.el検証（C-88〜C-99）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-88 | +lspと:tools lsp両方有効でエラーなし | E-03 L3-5 `(assert! (or (not (modulep! +lsp)) (modulep! :tools lsp)) ...)` | ○ |
| C-89 | +lspのみ有効でエラー | E-03 L3-5 `(assert! (or (not (modulep! +lsp)) (modulep! :tools lsp)) "This module requires (:tools lsp)")` | ○ |
| C-90 | +tree-sitterと:tools tree-sitter両方有効でエラーなし | E-03 L7-9 `(assert! (or (not (modulep! +tree-sitter)) (modulep! :tools tree-sitter)) ...)` | ○ |
| C-91 | +tree-sitterのみ有効でエラー | E-03 L7-9 `(assert! ... "This module requires (:tools tree-sitter)")` | ○ |
| C-92 | +tree-sitterでruby-ts-mode存在時エラーなし | E-03 L11-13 `(assert! (or (not (modulep! +tree-sitter)) (fboundp 'ruby-ts-mode)) ...)` | ○ |
| C-93 | +tree-sitterでruby-ts-mode非存在時エラー | E-03 L11-13 `(assert! ... "Can't find \`ruby-ts-mode'; Emacs 29.1+ is required")` | ○ |
| C-94 | ruby存在時警告なし | E-03 L15-16 `(unless (executable-find "ruby") (warn! ...))` | ○ |
| C-95 | ruby非存在時警告 | E-03 L15-16 `(unless (executable-find "ruby") (warn! "Ruby isn't installed."))` | ○ |
| C-96 | rbenvでRubyインストール済みなら警告なし | E-03 L18-20 `(when (and (executable-find "rbenv") (modulep! +rbenv)) (unless (split-string ...) (warn! ...)))` | ○ |
| C-97 | rbenvでRuby未インストールなら警告 | E-03 L18-20 `(warn! "No versions of ruby are available via rbenv, did you forget to install one?")` | ○ |
| C-98 | chrubyでRubyインストール済みなら警告なし | E-03 L22-24 `(when (and (executable-find "chruby") (modulep! +chruby)) (unless (split-string ...) (warn! ...)))` | ○ |
| C-99 | chrubyでRuby未インストールなら警告 | E-03 L22-24 `(warn! "No versions of ruby are available via chruby, did you forget to install one?")` | ○ |

### 境界値・初期化（C-100）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-100 | ruby-mode未ロード状態での初期化 | E-01 L11 `use-package!` マクロによる遅延ロード | △ |

## 4) 不足情報（Unknown / Missing）
- **C-02（遅延評価動作）**: `after!`マクロの動作は確認できるが、projectileが未ロードの具体的な状態での挙動は実行時テストが必要
  - 候補：統合テスト / マニュアルテスト / E2Eテスト
- **C-100（未ロード状態の初期化）**: `use-package!`マクロの遅延ロード機構は確認できるが、完全な未ロード状態からの初期化パスは実行時検証が必要
  - 候補：Emacsクリーン起動テスト / 統合テスト

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 大部分のテストケースはソースコードから直接根拠が確認できる
- **1: 中リスク** - 遅延ロード・初期化関連のテストケース（C-02, C-100）は実行時検証が必要
- **0: 低リスク** - キーバインド・設定関連は静的解析で十分に検証可能

## 6) レビュアーチェックリスト（最小）
- [ ] LSP関連テストケース（UT-RUB-016, 017, 026）の前提条件が実環境で満たせるか確認
- [ ] rbenv/chruby/rvm環境管理テストケースの実行環境準備
- [ ] Rails関連テストケース（+railsフラグ）の実行にはRailsプロジェクトが必要
- [ ] tree-sitter関連テストケース（UT-RUB-023〜026）はEmacs 29.1以上が必要
- [ ] 遅延ロード関連テストケース（C-02, C-100）は統合テストレベルで検証
