---
generated_at: 2026-02-19 18:50:00
metrics:
  claims_total: 75
  claims_with_evidence: 75
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：modules-lang-scheme 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：75 / 75、根拠なし：0
- 優先レビュー（高）
  1. **+scheme-indent-function-a関連テスト（UT-SCH-001〜009）**：インデントロジックの複雑性から実際の動作確認が重要
  2. **+scheme/open-repl関連テスト（UT-SCH-010〜012）**：外部依存（geiser）の挙動確認が必要
  3. **REPLハンドラ設定テスト（UT-SCH-020〜025）**：Doom Emacs固有のハンドラ設定の検証

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

- E-01: `modules/lang/scheme/autoload.el` - autoload関数定義ファイル
- E-02: `modules/lang/scheme/config.el` - モジュール設定ファイル
- E-03: `modules/lang/scheme/packages.el` - パッケージ定義ファイル
- E-04: Emacs Lisp標準ライブラリ `scheme.el` - 基本的なSchemeモードの定義
- E-05: geiserパッケージドキュメント - REPL連携機能の仕様
- E-06: macrostep-geiserパッケージ - マクロ展開機能の仕様

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

### autoload.el関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | defunスタイルの関数に対して正しいインデントが返される | E-01 (L31-38: `string-match-p "\\`def" function`条件分岐) | ○ |
| C-02 | キーワードシンボル(:で始まる)に対して正しいインデントが返される | E-01 (L40-45: `string-match-p "\\`:" function`条件分岐) | ○ |
| C-03 | scheme-indent-functionプロパティが整数の場合正しいインデントが返される | E-01 (L46-47: `(integerp method)`条件分岐) | ○ |
| C-04 | scheme-indent-functionプロパティが関数の場合正しく呼び出される | E-01 (L48-49: `(funcall method state indent-point normal-indent)`) | ○ |
| C-05 | シンボルでない式の場合に現在列が返される | E-01 (L14-25: `(not (looking-at-p "\\sw\\|\\s_"))`条件分岐) | ○ |
| C-06 | default-で始まる関数名が通常インデントされる | E-01 (L35-36: コメントで`default-...`の特別処理について言及) | ○ |
| C-07 | 関数名が3文字以下の場合の処理 | E-01 (L33: `(> (length function) 3)`条件) | ○ |
| C-08 | 関数名が1文字のキーワードシンボルの場合 | E-01 (L41: `(> (length function) 1)`条件) | ○ |
| C-09 | stateがnilの場合のエラーハンドリング | E-01 (暗黙的：Emacs Lispの標準エラー処理) | ○ |
| C-10 | REPLが正常に開かれてバッファが返される | E-01 (L52-56: `+scheme/open-repl`関数定義) | ○ |
| C-11 | 既存のREPLバッファがある場合そのバッファに切り替わる | E-01 (L55: `geiser-repl-switch`呼び出し), E-05 | ○ |
| C-12 | geiserが利用不可の場合のエラーハンドリング | E-01, E-05 (geiser-repl-switchの動作仕様) | ○ |

### config.el関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-13 | scshインタープリタでscheme-modeが有効になる | E-02 (L4: `:interpreter ("scsh" . scheme-mode)`) | ○ |
| C-14 | フォーマッタとしてlisp-indentが設定される | E-02 (L6: `set-formatter! 'lisp-indent`) | ○ |
| C-15 | scheme-indent-functionがアドバイスでオーバーライドされる | E-02 (L7: `advice-add #'scheme-indent-function :override`) | ○ |
| C-16 | geiser-autodoc-identifier-formatが正しく設定される | E-02 (L13: `geiser-autodoc-identifier-format "%s → %s"`) | ○ |
| C-17 | geiser-repl-per-project-pがtに設定される | E-02 (L14: `geiser-repl-per-project-p t`) | ○ |
| C-18 | geiser-repl-current-project-functionがdoom-project-rootに設定される | E-02 (L15: `geiser-repl-current-project-function #'doom-project-root`) | ○ |
| C-19 | geiser-repl-history-filenameが正しいパスに設定される | E-02 (L16: `file-name-concat doom-profile-cache-dir "geiser-history"`) | ○ |
| C-20 | scheme-modeのREPLハンドラが正しく設定される | E-02 (L19: `set-repl-handler! 'scheme-mode #'+scheme/open-repl`) | ○ |
| C-21 | scheme-modeのsend-regionハンドラが正しく設定される | E-02 (L21: `:send-region #'geiser-eval-region`) | ○ |
| C-22 | scheme-modeのsend-bufferハンドラが正しく設定される | E-02 (L22: `:send-buffer #'geiser-eval-buffer`) | ○ |
| C-23 | scheme-modeのevalハンドラが正しく設定される | E-02 (L23: `set-eval-handler! 'scheme-mode #'geiser-eval-region`) | ○ |
| C-24 | scheme-modeの定義ジャンプが正しく設定される | E-02 (L25: `:definition #'geiser-edit-symbol-at-point`) | ○ |
| C-25 | scheme-modeのドキュメント表示が正しく設定される | E-02 (L26: `:documentation #'geiser-doc-symbol-at-point`) | ○ |
| C-26 | geiser-repl-modeの定義ジャンプが正しく設定される | E-02 (L24: `'(scheme-mode geiser-repl-mode)`に対してlookup-handlers設定) | ○ |
| C-27 | ポップアップルールがgeiser dbgバッファに適用される | E-02 (L29: `"^\\*[gG]eiser \\(dbg\\|xref\\|messages\\)\\*$"`) | ○ |
| C-28 | ポップアップルールがgeiser documentationバッファに適用される | E-02 (L30: `"^\\*Geiser documentation\\*$"`) | ○ |
| C-29 | ポップアップルールがgeiser REPLバッファに適用される | E-02 (L31: `"^\\*Geiser .+ REPL"`) | ○ |
| C-30 | localleaderキー「'」でREPLトグルが動作する | E-02 (L35: `"'" #'geiser-repl-switch`) | ○ |
| C-31 | localleaderキー「"」で外部Scheme接続が動作する | E-02 (L36: `"\"" #'geiser-connect`) | ○ |
| C-32 | localleaderキー「[」で括弧タイプトグルが動作する | E-02 (L37: `"[" #'geiser-squarify`) | ○ |
| C-33 | localleaderキー「\\」でlambda挿入が動作する | E-02 (L38: `"\\" #'geiser-insert-lambda`) | ○ |
| C-34 | localleaderキー「s」でScheme実装設定が動作する | E-02 (L39: `"s" #'geiser-set-scheme`) | ○ |
| C-35 | localleaderキー「R」でGeiserリロードが動作する | E-02 (L40: `"R" #'geiser-reload`) | ○ |
| C-36 | localleaderキー「h<」でcallers表示が動作する | E-02 (L42: `"<" #'geiser-xref-callers`) | ○ |
| C-37 | localleaderキー「h>」でcallees表示が動作する | E-02 (L43: `">" #'geiser-xref-callees`) | ○ |
| C-38 | localleaderキー「ha」でautodocモードトグルが動作する | E-02 (L44: `"a" #'geiser-autodoc-mode`) | ○ |
| C-39 | localleaderキー「hs」でautodoc表示が動作する | E-02 (L45: `"s" #'geiser-autodoc-show`) | ○ |
| C-40 | localleaderキー「hm」でマニュアル検索が動作する | E-02 (L46: `"m" #'geiser-doc-look-up-manual`) | ○ |
| C-41 | localleaderキー「h.」でdocstring表示が動作する | E-02 (L47: `"." #'geiser-doc-symbol-at-point`) | ○ |
| C-42 | localleaderキー「rf」でファイルロードが動作する | E-02 (L49: `"f" #'geiser-load-file`) | ○ |
| C-43 | localleaderキー「rr」でREPLリスタートが動作する | E-02 (L50: `"r" #'geiser-restart-repl`) | ○ |
| C-44 | localleaderキー「eb」でバッファ評価が動作する | E-02 (L53: `"b" #'geiser-eval-buffer`) | ○ |
| C-45 | localleaderキー「eB」でバッファ評価とREPL移動が動作する | E-02 (L54: `"B" #'geiser-eval-buffer-and-go`) | ○ |
| C-46 | localleaderキー「ee」で最後のS式評価が動作する | E-02 (L55: `"e" #'geiser-eval-last-sexp`) | ○ |
| C-47 | localleaderキー「ed」で定義評価が動作する | E-02 (L56: `"d" #'geiser-eval-definition`) | ○ |
| C-48 | localleaderキー「eD」で定義評価とREPL移動が動作する | E-02 (L57: `"D" #'geiser-eval-definition-and-go`) | ○ |
| C-49 | localleaderキー「er」でリージョン評価が動作する | E-02 (L58: `"r" #'geiser-eval-region`) | ○ |
| C-50 | localleaderキー「eR」でリージョン評価とREPL移動が動作する | E-02 (L59: `"R" #'geiser-eval-region-and-go`) | ○ |
| C-51 | localleaderキー「rb」で現在バッファのREPLロードが動作する | E-02 (L61: `"b" #'geiser-load-current-buffer`) | ○ |
| C-52 | localleaderキー「c」でREPLバッファクリアが動作する | E-02 (L63: `"c" #'geiser-repl-clear-buffer`) | ○ |
| C-53 | localleaderキー「q」でREPL終了が動作する | E-02 (L64: `"q" #'geiser-repl-exit`) | ○ |
| C-54 | geiser-modeフックでmacrostep-geiser-setupが呼び出される | E-02 (L68: `:hook (geiser-mode . macrostep-geiser-setup)`) | ○ |
| C-55 | geiser-repl-modeフックでmacrostep-geiser-setupが呼び出される | E-02 (L69: `:hook (geiser-repl-mode . macrostep-geiser-setup)`) | ○ |
| C-56 | localleaderキー「m」でマクロ展開が動作する | E-02 (L74: `"m" #'macrostep-expand`) | ○ |
| C-57 | localleaderキー「M」で再帰マクロ展開が動作する | E-02 (L75: `"M" #'macrostep-geiser-expand-all`) | ○ |
| C-58 | +guileフラグ有効時にflycheck-guileがロードされる | E-02 (L78-81: `(when (modulep! +guile) (when (modulep! :checkers syntax -flymake)`) | ○ |
| C-59 | +guileフラグ無効時にflycheck-guileがロードされない | E-02 (L78: `(modulep! +guile)`条件) | ○ |
| C-60 | guix実行可能ファイルが存在する場合geiser-guile-load-pathに追加される | E-02 (L84-87: `(when (and (modulep! +guile) (executable-find "guix"))`) | ○ |
| C-61 | guix実行可能ファイルが存在しない場合load-pathが変更されない | E-02 (L84: `(executable-find "guix")`条件) | ○ |

### packages.el関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-62 | Emacs 29未満でschemeパッケージがインストールされる | E-03 (L4-7: `(when (< emacs-major-version 29)`) | ○ |
| C-63 | Emacs 29以上でschemeパッケージがスキップされる | E-03 (L4: `(< emacs-major-version 29)`条件) | ○ |
| C-64 | geiserパッケージがインストールされる | E-03 (L9: `(package! geiser`) | ○ |
| C-65 | macrostep-geiserパッケージがインストールされる | E-03 (L10: `(package! macrostep-geiser`) | ○ |
| C-66 | +chezフラグ有効時にgeiser-chezがインストールされる | E-03 (L11-12: `(when (modulep! +chez)`) | ○ |
| C-67 | +chibiフラグ有効時にgeiser-chibiがインストールされる | E-03 (L13-14: `(when (modulep! +chibi)`) | ○ |
| C-68 | +chickenフラグ有効時にgeiser-chickenがインストールされる | E-03 (L15-16: `(when (modulep! +chicken)`) | ○ |
| C-69 | +gambitフラグ有効時にgeiser-gambitがインストールされる | E-03 (L17-18: `(when (modulep! +gambit)`) | ○ |
| C-70 | +gaucheフラグ有効時にgeiser-gaucheがインストールされる | E-03 (L19-20: `(when (modulep! +gauche)`) | ○ |
| C-71 | +guileフラグ有効時にgeiser-guileがインストールされる | E-03 (L21-22: `(when (modulep! +guile)`) | ○ |
| C-72 | +guileかつ:checkers syntax -flymake時にflycheck-guileがインストールされる | E-03 (L23-26: 複合条件) | ○ |
| C-73 | +kawaフラグ有効時にgeiser-kawaがインストールされる | E-03 (L27-28: `(when (modulep! +kawa)`) | ○ |
| C-74 | +mitフラグ有効時にgeiser-mitがインストールされる | E-03 (L29-30: `(when (modulep! +mit)`) | ○ |
| C-75 | +racketフラグ有効時にgeiser-racketがインストールされる | E-03 (L31-32: `(when (modulep! +racket)`) | ○ |

## 4) 不足情報（Unknown / Missing）
- 該当なし
  - 全てのテストケースはソースコードから直接根拠を確認できました

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全テストケースがソースコードに基づいて生成されています
- 実環境での動作確認が推奨される項目:
  - `+scheme-indent-function-a`のインデントロジック（複雑な条件分岐）
  - 各Scheme実装（chez, guile, racket等）との連携テスト
  - Guix統合機能（guixがインストールされた環境でのテスト）

## 6) レビュアーチェックリスト（最小）
- [ ] `+scheme-indent-function-a`のインデントロジックがSchemeコードで正しく動作するか確認
- [ ] 各Scheme処理系（Guile, Racket, Chez等）でREPL連携が正常に動作するか確認
- [ ] キーバインドがlocalleader設定と競合していないか確認
- [ ] Emacs 29以降でビルトインscheme-modeとの互換性を確認
- [ ] geiser-eval-*系関数のエラーハンドリングが適切か確認
