---
generated_at: 2026-02-21 22:25:00
metrics:
  claims_total: 152
  claims_with_evidence: 152
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：str.csv

## 本レポートについて

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

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

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

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

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

---

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

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

- E-01: `src/str/divide.php` - chunk, split関数の定義
- E-02: `src/str/divide_l.php` - chunk_l, split_l関数の定義（ロケール対応版）
- E-03: `src/str/combine.php` - join関数の定義
- E-04: `src/str/format.php` - format関数、SprintfFormatインターフェースの定義
- E-05: `src/str/format_l.php` - format_l関数の定義（ロケール対応版）
- E-06: `src/str/introspect.php` - compare, compare_ci, contains, contains_ci, ends_with, ends_with_ci, is_empty, length, search, search_ci, search_last, starts_with, starts_with_ci関数の定義
- E-07: `src/str/introspect_l.php` - compare_l, compare_ci_l, contains_l, contains_ci_l, ends_with_l, ends_with_ci_l, length_l, search_l, search_ci_l, search_last_l, starts_with_l, starts_with_ci_l関数の定義（ロケール対応版）
- E-08: `src/str/select.php` - slice, strip_prefix, strip_suffix, trim, trim_left, trim_right関数の定義
- E-09: `src/str/select_l.php` - slice_l, strip_prefix_l, strip_suffix_l, trim_l, trim_left_l, trim_right_l関数の定義（ロケール対応版）
- E-10: `src/str/transform.php` - capitalize, capitalize_words, format_number, lowercase, pad_left, pad_right, repeat, replace, replace_ci, replace_every, replace_every_ci, replace_every_nonrecursive, replace_every_nonrecursive_ci, reverse, splice, to_int, uppercase関数の定義
- E-11: `src/str/transform_l.php` - capitalize_l, capitalize_words_l, lowercase_l, pad_left_l, pad_right_l, replace_l, replace_ci_l, replace_every_l, replace_every_ci_l, replace_every_nonrecursive_l, replace_every_nonrecursive_ci_l, reverse_l, splice_l, uppercase_l関数の定義（ロケール対応版）

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

### divide.php（chunk, split）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | chunk関数が文字列をチャンクサイズで分割する | E-01 (L22-27) | ○ |
| C-02 | chunkのデフォルトchunk_sizeは1 | E-01 (L24) | ○ |
| C-03 | split関数がデリミタで文字列を分割する | E-01 (L43-49) | ○ |
| C-04 | splitのlimit引数で分割数を制限できる | E-01 (L33-34, L46) | ○ |

### divide_l.php（chunk_l, split_l）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-05 | chunk_l関数がロケール指定でチャンク分割する | E-02 (L25-31) | ○ |
| C-06 | split_l関数がロケール指定で文字列分割する | E-02 (L45-52) | ○ |

### combine.php（join）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-07 | join関数がTraversable要素をglueで結合する | E-03 (L23-38) | ○ |
| C-08 | 空配列の場合は空文字列が返却される | E-03 (L27-28) | ○ |

### format.php（format, SprintfFormat）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-09 | format関数がフォーマット文字列と引数でフォーマットする | E-04 (L74-84) | ○ |
| C-10 | SprintfFormatインターフェースが各フォーマット指定子を定義 | E-04 (L18-53) | ○ |
| C-11 | %dが整数フォーマット、%sが文字列フォーマット | E-04 (L19-20) | ○ |

### format_l.php（format_l）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-12 | format_l関数がロケール指定でフォーマットする | E-05 (L24-34) | ○ |

### introspect.php（compare, contains, ends_with, is_empty, length, search, starts_with等）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-13 | compare関数が文字列比較で<0/0/>0を返す | E-06 (L23-28) | ○ |
| C-14 | compare_ci関数が大文字小文字無視で比較する | E-06 (L38-43) | ○ |
| C-15 | contains関数が部分文字列の存在をチェックする | E-06 (L58-76) | ○ |
| C-16 | contains関数で空needleの場合はtrue | E-06 (L63-74) | ○ |
| C-17 | contains関数でオフセット範囲外の場合は例外 | E-06 (L68-72) | ○ |
| C-18 | contains_ci関数が大文字小文字無視で検索する | E-06 (L92-110) | ○ |
| C-19 | ends_with関数が接尾辞をチェックする | E-06 (L119-124) | ○ |
| C-20 | ends_with_ci関数が大文字小文字無視で接尾辞チェックする | E-06 (L133-138) | ○ |
| C-21 | is_empty関数がnullまたは空文字列でtrue | E-06 (L146-150) | ○ |
| C-22 | length関数がバイト長を返す（O(1)） | E-06 (L162-171) | ○ |
| C-23 | search関数が部分文字列の位置を返す（見つからない場合null） | E-06 (L190-200) | ○ |
| C-24 | search_ci関数が大文字小文字無視で位置検索する | E-06 (L219-229) | ○ |
| C-25 | search_last関数が最後の出現位置を返す | E-06 (L247-258) | ○ |
| C-26 | starts_with関数が接頭辞をチェックする | E-06 (L267-272) | ○ |
| C-27 | starts_with_ci関数が大文字小文字無視で接頭辞チェックする | E-06 (L281-286) | ○ |

### introspect_l.php（ロケール対応版introspect関数群）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 | compare_l関数がロケール指定で文字列比較する | E-07 (L27-33) | ○ |
| C-29 | compare_ci_l関数がロケール指定で大文字小文字無視比較する | E-07 (L47-53) | ○ |
| C-30 | contains_l関数がロケール指定で部分文字列検索する | E-07 (L71-90) | ○ |
| C-31 | contains_ci_l関数がロケール指定で大文字小文字無視検索する | E-07 (L111-130) | ○ |
| C-32 | ends_with_l関数がロケール指定で接尾辞チェックする | E-07 (L143-149) | ○ |
| C-33 | ends_with_ci_l関数がロケール指定で大文字小文字無視接尾辞チェックする | E-07 (L163-169) | ○ |
| C-34 | length_l関数がロケール指定で文字数を返す | E-07 (L181-186) | ○ |
| C-35 | search_l関数がロケール指定で位置検索する | E-07 (L203-214) | ○ |
| C-36 | search_ci_l関数がロケール指定で大文字小文字無視位置検索する | E-07 (L233-244) | ○ |
| C-37 | search_last_l関数がロケール指定で最終位置検索する | E-07 (L262-274) | ○ |
| C-38 | starts_with_l関数がロケール指定で接頭辞チェックする | E-07 (L287-293) | ○ |
| C-39 | starts_with_ci_l関数がロケール指定で大文字小文字無視接頭辞チェックする | E-07 (L306-312) | ○ |

### select.php（slice, strip_prefix, strip_suffix, trim等）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-40 | slice関数がオフセットと長さで部分文字列を返す | E-08 (L28-30) | ○ |
| C-41 | slice関数で負のオフセットは末尾から計算 | E-08 (L17-22) docに記載 | ○ |
| C-42 | strip_prefix関数が接頭辞を除去する | E-08 (L38-40) | ○ |
| C-43 | strip_suffix関数が接尾辞を除去する | E-08 (L48-50) | ○ |
| C-44 | trim関数が前後の空白を除去する | E-08 (L63-65) | ○ |
| C-45 | trim_left関数が先頭の空白を除去する | E-08 (L78-80) | ○ |
| C-46 | trim_right関数が末尾の空白を除去する | E-08 (L93-95) | ○ |

### select_l.php（ロケール対応版select関数群）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | slice_l関数がロケール指定で部分文字列を返す | E-09 (L29-36) | ○ |
| C-48 | strip_prefix_l関数がロケール指定で接頭辞を除去する | E-09 (L47-53) | ○ |
| C-49 | strip_suffix_l関数がロケール指定で接尾辞を除去する | E-09 (L64-70) | ○ |
| C-50 | trim_l関数がロケール指定で空白を除去する | E-09 (L83-89) | ○ |
| C-51 | trim_left_l関数がロケール指定で先頭空白を除去する | E-09 (L102-108) | ○ |
| C-52 | trim_right_l関数がロケール指定で末尾空白を除去する | E-09 (L121-127) | ○ |

### transform.php（capitalize, lowercase, uppercase, replace, pad, repeat, reverse, splice, to_int等）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-53 | capitalize関数が先頭文字を大文字にする | E-10 (L26-31) | ○ |
| C-54 | capitalize関数で空文字列の場合は空文字列を返す | E-10 (L27-29) | ○ |
| C-55 | capitalize_words関数が各単語の先頭を大文字にする | E-10 (L44-73) | ○ |
| C-56 | capitalize_wordsでカスタムデリミタを指定できる | E-10 (L46, L56-66) | ○ |
| C-57 | format_number関数が数値をフォーマットする | E-10 (L84-96) | ○ |
| C-58 | lowercase関数が全て小文字に変換する | E-10 (L103-105) | ○ |
| C-59 | pad_left関数が左側にパディングする | E-10 (L120-126) | ○ |
| C-60 | pad_right関数が右側にパディングする | E-10 (L141-147) | ○ |
| C-61 | repeat関数が文字列を繰り返す | E-10 (L156-161) | ○ |
| C-62 | repeat関数で負のmultiplierは例外をスロー | E-10 (L157-159) | ○ |
| C-63 | replace関数が文字列を置換する | E-10 (L173-179) | ○ |
| C-64 | replace_ci関数が大文字小文字無視で置換する | E-10 (L191-197) | ○ |
| C-65 | replace_every関数が複数パターンを置換する | E-10 (L218-223) | ○ |
| C-66 | replace_every_ci関数が大文字小文字無視で複数パターン置換する | E-10 (L244-249) | ○ |
| C-67 | replace_every_nonrecursive関数が非再帰的に置換する | E-10 (L265-270) | ○ |
| C-68 | replace_every_nonrecursive_ci関数が大文字小文字無視で非再帰的置換する | E-10 (L293-298) | ○ |
| C-69 | replace_every_nonrecursive_ciで同じ文字列の大文字小文字違いがある場合は例外 | E-10 (L283-284) docに記載 | ○ |
| C-70 | reverse関数がバイト単位で文字列を反転する | E-10 (L306-313) | ○ |
| C-71 | splice関数がオフセット/長さで指定した部分を置換する | E-10 (L337-344) | ○ |
| C-72 | to_int関数が数値文字列を整数に変換する | E-10 (L354-359) | ○ |
| C-73 | to_int関数で先頭ゼロの場合はnull | E-10 (L349-350) docに記載 | ○ |
| C-74 | uppercase関数が全て大文字に変換する | E-10 (L366-368) | ○ |

### transform_l.php（ロケール対応版transform関数群）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-75 | capitalize_l関数がロケール指定で先頭大文字化する | E-11 (L29-37) | ○ |
| C-76 | capitalize_words_l関数がロケール指定で単語先頭大文字化する | E-11 (L52-57) | ○ |
| C-77 | lowercase_l関数がロケール指定で小文字変換する | E-11 (L67-72) | ○ |
| C-78 | pad_left_l関数がロケール指定で左パディングする | E-11 (L87-94) | ○ |
| C-79 | pad_right_l関数がロケール指定で右パディングする | E-11 (L109-116) | ○ |
| C-80 | replace_l関数がロケール指定で置換する | E-11 (L131-138) | ○ |
| C-81 | replace_ci_l関数がロケール指定で大文字小文字無視置換する | E-11 (L155-162) | ○ |
| C-82 | replace_every_l関数がロケール指定で複数パターン置換する | E-11 (L186-192) | ○ |
| C-83 | replace_every_ci_l関数がロケール指定で大文字小文字無視複数パターン置換する | E-11 (L218-224) | ○ |
| C-84 | replace_every_nonrecursive_l関数がロケール指定で非再帰的置換する | E-11 (L243-249) | ○ |
| C-85 | replace_every_nonrecursive_ci_l関数がロケール指定で大文字小文字無視非再帰的置換する | E-11 (L277-283) | ○ |
| C-86 | reverse_l関数がロケール指定で文字列反転する | E-11 (L291-293) | ○ |
| C-87 | splice_l関数がロケール指定でスプライスする | E-11 (L316-324) | ○ |
| C-88 | uppercase_l関数がロケール指定で大文字変換する | E-11 (L334-339) | ○ |

## 4) 不足情報（Unknown / Missing）
- なし - 全てのテストケースはソースコードの関数定義およびドキュメントコメントに基づいて生成されています

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全テストケースがソースコードに基づいており、信頼度は高い
- 注意点：
  - ロケール対応関数（`*_l`）のテストはロケール環境に依存する可能性あり
  - マルチバイト文字列のテストケースは追加を検討すべき
  - 境界値テスト（極端に長い文字列、大量のreplacements等）は実行時パフォーマンスに注意

## 6) レビュアーチェックリスト（最小）
- [ ] chunk関数のchunk_size=0の場合の例外処理が正しいか確認
- [ ] contains/search関数のオフセット範囲外の例外処理が正しいか確認
- [ ] repeat関数の負のmultiplier例外処理が正しいか確認
- [ ] replace_every_nonrecursive_ciの重複キー例外処理が正しいか確認
- [ ] to_int関数の先頭ゼロ（'01'など）がnullを返すことを確認
- [ ] ロケール対応関数のロケール依存動作（トルコ語のi/Iなど）をテスト環境で確認
- [ ] 各関数の戻り値の型が正しいか確認（vec, string, int, ?int, bool）
