---
generated_at: 2026-02-19 18:50:00
metrics:
  claims_total: 43
  claims_with_evidence: 41
  claims_without_evidence: 2
confidence_derived: 0.95
---

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

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：41 / 43、根拠なし：2
- 優先レビュー（高）
  1. **C-23（iTerm未インストール時の動作）**：実際のエラーハンドリング動作は実行環境依存
  2. **C-38（Linux環境での動作）**：macOS専用モジュールのためLinux環境でのテストは限定的

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

- E-01: `modules/os/macos/autoload.el` - autoload関数定義（+macos-defaults, +macos-open-with, マクロ定義）
- E-02: `modules/os/macos/config.el` - 設定ファイル（変数設定、use-package!、after!マクロ）
- E-03: `modules/os/macos/packages.el` - パッケージ定義（osx-trash, ns-auto-titlebar）
- E-04: `modules/os/macos/doctor.el` - 診断コード（Keychain警告）
- E-05: `modules/os/macos/README.org` - モジュールドキュメント

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | +macos-defaultsがdefaultsコマンドを実行する | E-01: L4-5 `(apply #'doom-call-process "defaults" action args)` | ○ |
| C-02 | writeアクションで設定値が書き込まれる | E-01: L36-38 `+macos-defaults "write"` | ○ |
| C-03 | 無効なアクションのエラーハンドリング | E-01: doom-call-processの戻り値に依存 | ○ |
| C-04 | 引数がnilの場合の動作 | E-01: apply関数の動作に依存 | ○ |
| C-05 | +macos-open-withがopenコマンドを実行する | E-01: L18-22 `(cons "open" ...)` | ○ |
| C-06 | アプリ名省略時の動作 | E-01: L19 `(if app-name (list "-a" app-name))` | ○ |
| C-07 | パス省略時にbuffer-file-nameを使用 | E-01: L14-16 `(or path ... (buffer-file-name))` | ○ |
| C-08 | dired-modeでのファイル取得 | E-01: L14 `(derived-mode-p 'dired-mode)` | ○ |
| C-09 | シングルクォートのエスケープ | E-01: L12-13 `(replace-regexp-in-string "'" "\\'"...)` | ○ |
| C-10 | 空文字列パスの処理 | E-01: L11 `expand-file-name`の動作 | ○ |
| C-11 | 存在しないパスの処理 | E-01: openコマンドの挙動に依存 | ○ |
| C-12 | +macos/open-in-default-programの動作 | E-01: L48 `(+macos--open-with open-in-default-program)` | ○ |
| C-13 | +macos/reveal-in-finderの動作 | E-01: L51 `(+macos--open-with reveal-in-finder "Finder" default-directory)` | ○ |
| C-14 | +macos/reveal-project-in-finderの動作 | E-01: L54-55 `(or (doom-project-root) default-directory)` | ○ |
| C-15 | プロジェクト外でdefault-directoryを使用 | E-01: L55 `(or (doom-project-root) default-directory)` | ○ |
| C-16 | +macos/send-to-transmitの動作 | E-01: L58 `(+macos--open-with send-to-transmit "Transmit")` | ○ |
| C-17 | +macos/send-cwd-to-transmitの動作 | E-01: L61 `(+macos--open-with send-cwd-to-transmit "Transmit" default-directory)` | ○ |
| C-18 | +macos/send-to-launchbarの動作 | E-01: L64 `(+macos--open-with send-to-launchbar "LaunchBar")` | ○ |
| C-19 | +macos/send-project-to-launchbarの動作 | E-01: L67-68 | ○ |
| C-20 | +macos/open-in-itermの動作 | E-01: L71 `(+macos--open-with-iterm open-in-iterm default-directory)` | ○ |
| C-21 | +macos/open-in-iterm-new-windowの動作 | E-01: L74 `(+macos--open-with-iterm open-in-iterm-new-window default-directory t)` | ○ |
| C-22 | OpenFileInNewWindows設定の復元 | E-01: L41-45 `unwind-protect`による復元処理 | ○ |
| C-23 | iTerm未インストール時の動作 | **根拠なし** - 実行環境依存の動作 | △ |
| C-24 | locate-commandがmdfindに設定される | E-02: L8 `(setq locate-command "mdfind")` | ○ |
| C-25 | ns-pop-up-framesがnilに設定される | E-02: L15 `(setq ns-pop-up-frames nil)` | ○ |
| C-26 | mac-redisplay-dont-reset-vscrollの設定 | E-02: L20 `mac-redisplay-dont-reset-vscroll t` | ○ |
| C-27 | mac-mouse-wheel-smooth-scrollの設定 | E-02: L21 `mac-mouse-wheel-smooth-scroll nil` | ○ |
| C-28 | GUIモードでns-auto-titlebar-mode有効化 | E-02: L25-28 `(display-graphic-p)` `(ns-auto-titlebar-mode +1)` | ○ |
| C-29 | デーモンモードでの有効化 | E-02: L25 `(daemonp)` | ○ |
| C-30 | ns-auto-titlebarロード失敗時の動作 | E-02: L27 `(require 'ns-auto-titlebar nil t)` - nilでエラー抑制 | ○ |
| C-31 | auth-sourcesへのKeychain追加 | E-02: L31-32 `(pushnew! auth-sources ...)` | ○ |
| C-32 | 対話モードでdelete-by-moving-to-trash=t | E-02: L36 `(setq delete-by-moving-to-trash (not noninteractive))` | ○ |
| C-33 | 非対話モードでの設定 | E-02: L36 `(not noninteractive)` | ○ |
| C-34 | Emacs 28でsystem-move-file-to-trash定義 | E-02: L42-54 `use-package!`と関数定義 | ○ |
| C-35 | Emacs 29以降でosx-trash未使用 | E-02: L45 `:when (< emacs-major-version 29)` | ○ |
| C-36 | ファイルのゴミ箱移動実行 | E-02: L54 `(osx-trash-move-file-to-trash file)` | ○ |
| C-37 | リモートファイルのスキップ | E-02: L53 `(not (file-remote-p default-directory))` | ○ |
| C-38 | Linux環境でのスキップ | E-02: L52 `(not (featurep :system 'linux))` | △ |
| C-39 | Emacs 29.3未満でKeychain警告 | E-04: L4-6 `(when (version< emacs-version "29.3") (warn! ...))` | ○ |
| C-40 | Emacs 29.3以降で警告なし | E-04: L4 `version<`条件 | ○ |
| C-41 | Emacs 28でosx-trashパッケージ定義 | E-03: L4-5 `(when (< emacs-major-version 29) (package! osx-trash ...))` | ○ |
| C-42 | Emacs 29以降でosx-trash未定義 | E-03: L4 `(< emacs-major-version 29)` | ○ |
| C-43 | ns-auto-titlebarパッケージ定義 | E-03: L6 `(package! ns-auto-titlebar ...)` | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-23（iTerm未インストール時の動作）**: iTerm2がインストールされていない環境での`defaults read`コマンドの挙動は実行環境に依存するため、コードからは正確な動作を特定できない
  - 候補：iTerm2インストール環境でのテスト / defaultsコマンドのエラーハンドリング確認 / doom-call-processの戻り値確認
- **C-38（Linux環境での動作）**: macOS専用モジュールであり、Linux環境でのロードは想定外だが、条件分岐は存在する
  - 候補：クロスプラットフォームテスト環境の構築 / featurep関数のモック

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 設定値の検証（C-24〜C-27）：単純なsetq文であり、リスクは低い
- **0: 低リスク** - マクロ生成関数のテスト（C-12〜C-21）：マクロ展開結果は静的に確認可能
- **1: 中リスク** - 外部コマンド実行（C-01, C-05）：doom-call-processの戻り値とエラーハンドリングの確認が必要
- **1: 中リスク** - iTerm設定操作（C-20〜C-23）：ユーザー設定を変更するため、復元処理の確実性が重要
- **1: 中リスク** - Keychain連携（C-31, C-39）：セキュリティ関連機能のため慎重なテストが必要
- **2: 高リスク** - ファイル削除操作（C-32〜C-38）：ゴミ箱移動の失敗はデータ損失につながる可能性

## 6) レビュアーチェックリスト（最小）
- [ ] +macos-open-withのパスエスケープ処理が適切か（シングルクォート以外の特殊文字も考慮）
- [ ] unwind-protectによるiTerm設定復元が確実に動作するか
- [ ] osx-trash遅延ロードの条件分岐がEmacs 28/29で正しく動作するか
- [ ] auth-sourcesへのKeychain追加が既存設定を破壊しないか
- [ ] リモートファイル判定（file-remote-p）がすべてのTRAMPメソッドで正しく動作するか
- [ ] daemonモードでのns-auto-titlebar-mode有効化タイミングが適切か
