---
generated_at: 2026-02-17 10:30:00
metrics:
  claims_total: 148
  claims_with_evidence: 145
  claims_without_evidence: 3
confidence_derived: 0.98
---

# 根拠レポート: lib-std 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：145 / 148、根拠なし：3
- 優先レビュー（高）
  1. **UT-STD-044 (putEnvの無効キーテスト)**：Windows固有の挙動、クロスプラットフォームでの確認推奨
  2. **UT-STD-115 (osErrorMsgのLinux固有テスト)**：OS依存のエラーメッセージ
  3. **UT-STD-083-086 (sysrandテスト)**：暗号論的乱数生成の品質はOS実装に依存

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

- E-01: `lib/std/paths.nim` - Path型とパス操作関数の定義
- E-02: `lib/std/files.nim` - ファイル操作関数の定義
- E-03: `lib/std/dirs.nim` - ディレクトリ操作関数の定義
- E-04: `lib/std/envvars.nim` - 環境変数操作関数の定義
- E-05: `lib/std/jsonutils.nim` - JSON変換関数の定義
- E-06: `lib/std/sha1.nim` - SHA-1ハッシュ関数の定義
- E-07: `lib/std/editdistance.nim` - 編集距離計算関数の定義
- E-08: `lib/std/packedsets.nim` - PackedSet型と操作関数の定義
- E-09: `lib/std/tempfiles.nim` - 一時ファイル/ディレクトリ操作関数の定義
- E-10: `lib/std/sysrand.nim` - 暗号論的乱数生成関数の定義
- E-11: `lib/std/tasks.nim` - Task型とマクロの定義
- E-12: `lib/std/varints.nim` - 可変長整数エンコーディング関数の定義
- E-13: `lib/std/setutils.nim` - set型ユーティリティ関数の定義
- E-14: `lib/std/enumutils.nim` - enum型ユーティリティ関数の定義
- E-15: `lib/std/wordwrap.nim` - 文字列折り返し関数の定義
- E-16: `lib/std/strbasics.nim` - 文字列操作基本関数の定義
- E-17: `lib/std/oserrors.nim` - OSエラー処理関数の定義
- E-18: `lib/std/monotimes.nim` - 単調時間型と関数の定義
- E-19: `lib/std/widestrs.nim` - ワイド文字列型と関数の定義
- E-20: `lib/std/formatfloat.nim` - 浮動小数点フォーマット関数の定義
- E-21: `lib/std/syncio.nim` - 同期I/O関数の定義

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

### paths.nim関連 (UT-STD-001〜020)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Path.hashがハッシュ値を返す | E-01 (L28-33) | ○ |
| C-02 | Path.==が同一パスを比較する | E-01 (L38-43) | ○ |
| C-03 | Path./がパスを結合する | E-01 (L57-68) | ○ |
| C-04 | Path.splitPathがパスを分割する | E-01 (L70-80) | ○ |
| C-05 | Path.splitFileがファイルパスを分割する | E-01 (L82-98) | ○ |
| C-06 | Path.isAbsoluteが絶対パスを判定する | E-01 (L100-104) | ○ |
| C-07 | Path.parentDirが親ディレクトリを取得する | E-01 (L128-140) | ○ |
| C-08 | Path.extractFilenameがファイル名を抽出する | E-01 (L181-191) | ○ |
| C-09 | Path.changeFileExtが拡張子を変更する | E-01 (L204-219) | ○ |
| C-10 | Path.addFileExtが拡張子を追加する | E-01 (L221-234) | ○ |
| C-11 | Path.expandTildeがチルダを展開する | E-01 (L290-302) | ○ |

### files.nim関連 (UT-STD-021〜030)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-12 | fileExistsがファイル存在を判定する | E-02 (L47-51) | ○ |
| C-13 | removeFileがファイルを削除する | E-02 (L65-77) | ○ |
| C-14 | tryRemoveFileが削除を試行する | E-02 (L53-63) | ○ |
| C-15 | moveFileがファイルを移動する | E-02 (L79-94) | ○ |
| C-16 | copyFileがファイルをコピーする | E-02 (L96-127) | ○ |

### dirs.nim関連 (UT-STD-031〜037)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-17 | dirExistsがディレクトリ存在を判定する | E-03 (L12-15) | ○ |
| C-18 | createDirがディレクトリを作成する | E-03 (L17-30) | ○ |
| C-19 | removeDirがディレクトリを削除する | E-03 (L44-57) | ○ |
| C-20 | existsOrCreateDirが存在確認と作成を行う | E-03 (L32-42) | ○ |

### envvars.nim関連 (UT-STD-038〜045)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-21 | getEnvが環境変数を取得する | E-04 (L83-103) | ○ |
| C-22 | existsEnvが環境変数存在を判定する | E-04 (L105-117) | ○ |
| C-23 | putEnvが環境変数を設定する | E-04 (L119-135) | ○ |
| C-24 | delEnvが環境変数を削除する | E-04 (L137-158) | ○ |
| C-25 | putEnvの無効キーでOSError発生(Windows) | E-04 (L129-130) | △ |

### jsonutils.nim関連 (UT-STD-046〜055)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-26 | toJsonが各型をJSONに変換する | E-05 (L301-349) | ○ |
| C-27 | fromJsonがJSONから型に変換する | E-05 (L210-294) | ○ |
| C-28 | jsonToがJSONから型に変換する | E-05 (L296-299) | ○ |
| C-29 | Joptionsが変換オプションを制御する | E-05 (L44-64) | ○ |

### sha1.nim関連 (UT-STD-056〜062)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-30 | secureHashがSHA-1ハッシュを計算する | E-06 (L207-219) | ○ |
| C-31 | parseSecureHashが文字列を変換する | E-06 (L257-270) | ○ |
| C-32 | $がSecureHashを文字列に変換する | E-06 (L244-255) | ○ |
| C-33 | ==がSecureHashを比較する | E-06 (L272-283) | ○ |
| C-34 | isValidSha1Hashが検証する | E-06 (L285-287) | ○ |

### editdistance.nim関連 (UT-STD-063〜066)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-35 | editDistanceがUnicode編集距離を計算する | E-07 (L15-178) | ○ |
| C-36 | editDistanceAsciiがASCII編集距離を計算する | E-07 (L180-266) | ○ |

### packedsets.nim関連 (UT-STD-067〜077)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-37 | initPackedSetが空のPackedSetを作成する | E-08 (L160-179) | ○ |
| C-38 | inclが要素を追加する | E-08 (L213-241) | ○ |
| C-39 | exclが要素を削除する | E-08 (L311-327) | ○ |
| C-40 | containsが要素の存在を確認する | E-08 (L182-211) | ○ |
| C-41 | unionが和集合を計算する | E-08 (L454-467) | ○ |
| C-42 | intersectionが積集合を計算する | E-08 (L469-484) | ○ |
| C-43 | differenceが差集合を計算する | E-08 (L486-501) | ○ |

### tempfiles.nim関連 (UT-STD-078〜082)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-44 | createTempFileが一時ファイルを作成する | E-09 (L135-167) | ○ |
| C-45 | createTempDirが一時ディレクトリを作成する | E-09 (L169-193) | ○ |
| C-46 | genTempPathが一時パスを生成する | E-09 (L126-133) | ○ |

### sysrand.nim関連 (UT-STD-083〜086)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | urandom(seq)がランダムバイト列を返す | E-10 (L317-327) | ○ |
| C-48 | urandom(var)がバッファに書き込む | E-10 (L296-315) | ○ |

### tasks.nim関連 (UT-STD-087〜090)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | toTaskがTaskを作成する | E-11 (L126-277) | ○ |
| C-50 | invokeがTaskを実行する | E-11 (L87-90) | ○ |
| C-51 | =destroyがリソースを解放する | E-11 (L72-85) | ○ |

### varints.nim関連 (UT-STD-091〜097)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-52 | readVu64が可変長整数を読み取る | E-12 (L18-49) | ○ |
| C-53 | writeVu64が可変長整数を書き込む | E-12 (L57-108) | ○ |
| C-54 | encodeZigzagがZigZagエンコードする | E-12 (L110-112) | ○ |
| C-55 | decodeZigzagがZigZagデコードする | E-12 (L114-115) | ○ |

### setutils.nim関連 (UT-STD-098〜101)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-56 | toSetがsetを作成する | E-13 (L24-37) | ○ |
| C-57 | fullSetが全要素setを返す | E-13 (L42-52) | ○ |
| C-58 | complementが補集合を計算する | E-13 (L54-63) | ○ |
| C-59 | symmetricDifferenceが対称差を計算する | E-13 (L80-88) | ○ |

### enumutils.nim関連 (UT-STD-102〜104)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-60 | symbolRankがenumインデックスを返す | E-14 (L147-175) | ○ |
| C-61 | symbolNameがenum名を返す | E-14 (L180-202) | ○ |

### wordwrap.nim関連 (UT-STD-105〜107)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-62 | wrapWordsが文字列を折り返す | E-15 (L22-74) | ○ |

### strbasics.nim関連 (UT-STD-108〜114)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-63 | stripが空白を削除する | E-16 (L92-119) | ○ |
| C-64 | setSliceがスライスを適用する | E-16 (L47-90) | ○ |
| C-65 | addがopenArrayを追加する | E-16 (L20-32) | ○ |

### oserrors.nim関連 (UT-STD-115〜119)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-66 | osErrorMsgがエラーメッセージを返す | E-17 (L30-59) | ○ |
| C-67 | raiseOSErrorがOSErrorを発生させる | E-17 (L87-92) | ○ |
| C-68 | newOSErrorがOSErrorを作成する | E-17 (L61-85) | ○ |
| C-69 | osLastErrorがエラーコードを取得する | E-17 (L95-116) | ○ |
| C-70 | osErrorMsgのLinux固有エラー | E-17 | △ |

### monotimes.nim関連 (UT-STD-120〜125)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-71 | getMonoTimeが単調時間を取得する | E-18 (L89-120) | ○ |
| C-72 | -がDurationを計算する | E-18 (L130-132) | ○ |
| C-73 | <が比較する | E-18 (L142-144) | ○ |
| C-74 | ==が比較する | E-18 (L150-152) | ○ |
| C-75 | +がDurationを加算する | E-18 (L134-136) | ○ |
| C-76 | ticksがint64を返す | E-18 (L122-125) | ○ |

### widestrs.nim関連 (UT-STD-126〜129)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-77 | newWideCStringがWideCStringを作成する | E-19 (L154-186) | ○ |
| C-78 | $がstringに変換する | E-19 (L188-238) | ○ |
| C-79 | lenが長さを返す | E-19 (L77-81, L240-241) | ○ |

### formatfloat.nim関連 (UT-STD-130〜133)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-80 | addFloatが文字列に追加する | E-20 (L125-142) | ○ |
| C-81 | writeFloatToBufferがバッファに書き込む | E-20 (L81-85) | ○ |

### syncio.nim関連 (UT-STD-134〜148)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-82 | openがファイルを開く | E-21 (L714-747, L783-793) | ○ |
| C-83 | closeがファイルを閉じる | E-21 (L331-342) | ○ |
| C-84 | readLineが行を読み取る | E-21 (L395-527) | ○ |
| C-85 | writeが書き込む | E-21 (L216-272, L529-559) | ○ |
| C-86 | readAllが全内容を読み取る | E-21 (L606-621) | ○ |
| C-87 | readFileがファイルを読み取る | E-21 (L868-881) | ○ |
| C-88 | writeFileがファイルに書き込む | E-21 (L883-907) | ○ |
| C-89 | getFilePosが位置を取得する | E-21 (L801-805) | ○ |
| C-90 | setFilePosが位置を設定する | E-21 (L795-799) | ○ |
| C-91 | getFileSizeがサイズを取得する | E-21 (L807-812) | ○ |
| C-92 | endOfFileがEOFを判定する | E-21 (L582-587) | ○ |
| C-93 | flushFileがフラッシュする | E-21 (L353-355) | ○ |
| C-94 | sysrand品質はOS実装に依存 | E-10 | △ |

## 4) 不足情報（Unknown / Missing）
- **putEnvの無効キーテスト (UT-STD-044)**：Windows固有の挙動のため、Linux/macOSでの挙動が異なる可能性あり
  - 候補：実機Windows環境でのテスト / WSL環境でのクロスプラットフォームテスト
- **osErrorMsgのLinux固有テスト (UT-STD-115)**：エラーメッセージはロケールや環境により異なる場合あり
  - 候補：複数Linux環境での検証 / 英語ロケールでの固定テスト
- **sysrandの暗号論的品質 (UT-STD-083-086)**：乱数品質はOS実装に依存し、ユニットテストでの完全検証は困難
  - 候補：統計的検定ツール / 外部監査

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: paths.nim, packedsets.nim, editdistance.nim, setutils.nim, enumutils.nim, wordwrap.nim, strbasics.nim, varints.nim - 純粋な計算ロジック
- **1 (中リスク)**: jsonutils.nim, sha1.nim, formatfloat.nim, widestrs.nim, monotimes.nim, tasks.nim - 外部依存やプラットフォーム固有の考慮が必要
- **2 (高リスク)**: files.nim, dirs.nim, envvars.nim, tempfiles.nim, sysrand.nim, syncio.nim, oserrors.nim - ファイルシステム/OS APIへの直接アクセス、セキュリティ考慮が必要

## 6) レビュアーチェックリスト（最小）
- [ ] paths.nim: 各パス操作がWindows/POSIX両方で正しく動作するか
- [ ] files.nim/dirs.nim: ファイルシステム操作の権限エラー処理が適切か
- [ ] envvars.nim: 環境変数の特殊文字（=, NULL等）の扱いが適切か
- [ ] jsonutils.nim: 循環参照やネストの深いオブジェクトの処理が適切か
- [ ] sha1.nim: deprecatedマークが付いているため、checksumsパッケージへの移行を検討
- [ ] sysrand.nim: 暗号論的用途での使用時はセキュリティ監査を推奨
- [ ] syncio.nim: 大容量ファイル処理時のメモリ使用量を確認
- [ ] tasks.nim: メモリリークがないことを確認（特にinvoke後のリソース解放）
- [ ] tempfiles.nim: 一時ファイルのクリーンアップ責任がユーザーにあることを明記
