---
generated_at: 2026-02-24 14:30:00
metrics:
  claims_total: 48
  claims_with_evidence: 48
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：packages-utils 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：48 / 48、根拠なし：0
- 優先レビュー（高）
  1. なし（すべてのテストケースにソースコード根拠あり）

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

- E-01: `packages/utils/src/generate-id.ts` - createIdGenerator関数の実装（1-43行目）
- E-02: `packages/utils/src/title-case.ts` - splitIdentifier関数の実装（6-14行目）
- E-03: `packages/utils/src/title-case.ts` - ACRONYMS定数の定義（16-39行目）
- E-04: `packages/utils/src/title-case.ts` - restoreAcronyms関数の実装（43-50行目）
- E-05: `packages/utils/src/title-case.ts` - capitalizeAfterColon関数の実装（52-57行目）
- E-06: `packages/utils/src/title-case.ts` - titleCase関数の実装（59-68行目）
- E-07: `packages/utils/package.json` - 依存関係（nanoid, title-case, zod）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | createIdGenerator.generate はプレフィックス付きIDを生成する | E-01 (29-34行目: generator, generate関数) | ○ |
| C-02 | 生成されるIDは一意である | E-01 (29行目: customAlphabet使用) | ○ |
| C-03 | IDは正規表現パターンに一致する | E-01 (23-24行目: regex定義) | ○ |
| C-04 | parse は有効なIDをパースできる | E-01 (39行目: schema.parse) | ○ |
| C-05 | parse は無効なプレフィックスでエラーを発生させる | E-01 (23-24行目: regex検証) | ○ |
| C-06 | parse は短すぎるIDでエラーを発生させる | E-01 (24行目: 16文字制約) | ○ |
| C-07 | parse は長すぎるIDでエラーを発生させる | E-01 (24行目: 16文字制約) | ○ |
| C-08 | parse は不正な文字でエラーを発生させる | E-01 (24行目: [0-9A-Za-z]制約) | ○ |
| C-09 | parse は空文字列でエラーを発生させる | E-01 (21-27行目: zodスキーマ検証) | ○ |
| C-10 | parse は null でエラーを発生させる | E-01 (21行目: z.string()) | ○ |
| C-11 | parse は undefined でエラーを発生させる | E-01 (21行目: z.string()) | ○ |
| C-12 | safeParse は有効なIDで success: true を返す | E-01 (40行目: schema.safeParse) | ○ |
| C-13 | safeParse は無効なIDで success: false を返す | E-01 (40行目: schema.safeParse) | ○ |
| C-14 | schema は Zod スキーマとして機能する | E-01 (21-27行目: z.string().regex().transform()) | ○ |
| C-15 | 空文字列プレフィックスでもIDが生成される | E-01 (34行目: テンプレートリテラル) | ○ |
| C-16 | 特殊文字を含むプレフィックスでもIDが生成される | E-01 (34行目: テンプレートリテラル) | ○ |
| C-17 | splitIdentifier はキャメルケースを分割する | E-02 (9行目: /([a-z\d])([A-Z])/g) | ○ |
| C-18 | splitIdentifier はスネークケースを分割する | E-02 (8行目: /[_\-/]+/g) | ○ |
| C-19 | splitIdentifier はケバブケースを分割する | E-02 (8行目: /[_\-/]+/g) | ○ |
| C-20 | splitIdentifier はパスを分割する | E-02 (8行目: /[_\-/]+/g) | ○ |
| C-21 | splitIdentifier は連続大文字を適切に分割する | E-02 (10行目: /([A-Z]{2,})([A-Z][a-z])/g) | ○ |
| C-22 | splitIdentifier は数字と文字を分割する | E-02 (11-12行目: /([A-Za-z])(\d)/g, /(\d)([A-Za-z])/g) | ○ |
| C-23 | splitIdentifier は数字で始まる文字列を分割する | E-02 (12行目: /(\d)([A-Za-z])/g) | ○ |
| C-24 | splitIdentifier は空文字列を処理する | E-02 (13行目: .trim()) | ○ |
| C-25 | splitIdentifier は1文字を処理する | E-02 (8-13行目: 正規表現パターン) | ○ |
| C-26 | splitIdentifier は複合的な識別子を分割する | E-02 (8-12行目: 複数の正規表現) | ○ |
| C-27 | restoreAcronyms は既知の略語を大文字に復元する | E-03, E-04 (16-39行目: ACRONYMS Set, 44-49行目: 置換ロジック) | ○ |
| C-28 | restoreAcronyms は複数の略語を復元する | E-04 (44行目: /g グローバルフラグ) | ○ |
| C-29 | restoreAcronyms は全て大文字の略語を維持する | E-04 (47行目: IS_ALL_CAPS.test(w)) | ○ |
| C-30 | restoreAcronyms は略語でない単語を変更しない | E-04 (46-48行目: 条件分岐) | ○ |
| C-31 | restoreAcronyms は数字付き略語を復元する | E-04 (41行目: IS_ALL_CAPS = /^[A-Z]{2,}\d*$/) | ○ |
| C-32 | restoreAcronyms は空文字列を処理する | E-04 (44行目: String.replace) | ○ |
| C-33 | capitalizeAfterColon はコロン後の文字を大文字化する | E-05 (53-56行目: 正規表現置換) | ○ |
| C-34 | capitalizeAfterColon は複数のコロンを処理する | E-05 (53行目: /g グローバルフラグ) | ○ |
| C-35 | capitalizeAfterColon はコロン後の複数スペースを処理する | E-05 (54行目: /:\s*/) | ○ |
| C-36 | capitalizeAfterColon はロケールを適用する | E-05 (55行目: toLocaleUpperCase(locale)) | ○ |
| C-37 | capitalizeAfterColon はコロンがない文字列をそのまま返す | E-05 (53-56行目: replace動作) | ○ |
| C-38 | capitalizeAfterColon は空文字列を処理する | E-05 (53行目: String.replace) | ○ |
| C-39 | titleCase はキャメルケースをタイトルケースに変換する | E-06 (63-67行目: 変換フロー) | ○ |
| C-40 | titleCase はスネークケースをタイトルケースに変換する | E-06 (63行目: splitIdentifier呼び出し) | ○ |
| C-41 | titleCase は略語を保持する | E-06 (65行目: restoreAcronyms呼び出し) | ○ |
| C-42 | titleCase はコロン後を大文字化する | E-06 (66行目: capitalizeAfterColon呼び出し) | ○ |
| C-43 | titleCase はオプションを適用する | E-06 (64行目: libTitleCase(split, options)) | ○ |
| C-44 | titleCase は空文字列を処理する | E-06 (63-67行目: 関数フロー) | ○ |
| C-45 | titleCase は複雑な識別子を変換する | E-06 (63-67行目: 全処理パイプライン) | ○ |
| C-46 | titleCase は単一単語を変換する | E-06 (64行目: libTitleCase) | ○ |
| C-47 | titleCase は全て大文字の入力を変換する | E-06, E-04 (restoreAcronyms処理) | ○ |
| C-48 | titleCase は数字を含む識別子を変換する | E-06, E-02 (splitIdentifier処理) | ○ |

## 4) 不足情報（Unknown / Missing）
- なし（すべてのテストケースはソースコードに基づいて生成されています）

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - すべてのテストケースがソースコードから直接導出されている

**補足事項:**
- `createIdGenerator` はnanoidライブラリの `customAlphabet` を使用しており、ID生成の一意性はnanoidの実装に依存している
- `titleCase` はtitle-caseライブラリの `titleCase` 関数をラップしており、基本的なタイトルケース変換はライブラリに委譲している
- 略語リスト（ACRONYMS）は現在ハードコードされており、追加が必要な場合はソースコードの修正が必要

## 6) レビュアーチェックリスト（最小）
- [ ] テストケースNo.1-16: createIdGeneratorの各メソッド（generate, parse, safeParse, schema）が適切にテストされているか確認
- [ ] テストケースNo.17-26: splitIdentifierの各種識別子パターン（キャメル、スネーク、ケバブ、連続大文字、数字）のカバレッジを確認
- [ ] テストケースNo.27-32: restoreAcronymsのACRONYMS Setに含まれる略語が適切にテストされているか確認
- [ ] テストケースNo.33-38: capitalizeAfterColonのロケール対応とエッジケースを確認
- [ ] テストケースNo.39-48: titleCaseの統合的な動作（splitIdentifier + restoreAcronyms + capitalizeAfterColon）が確認されているか
- [ ] 境界値テスト（空文字列、1文字、null、undefined）の網羅性を確認
