---
generated_at: 2026-02-19 12:00:00
metrics:
  claims_total: 75
  claims_with_evidence: 72
  claims_without_evidence: 3
confidence_derived: 0.96
---

# 根拠レポート：sets モジュール単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：72 / 75、根拠なし：3
- 優先レビュー（高）
  1. **UT-SET-073**: NA処理の挙動は実行時確認が必要
  2. **UT-SET-074**: Inf処理の挙動は実行時確認が必要
  3. **UT-SET-075**: NaN処理の挙動は実行時確認が必要

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

- E-01: `R/sets.R` - 集合演算関数の実装（intersect, union, union_all, setdiff, setequal, symdiff）
- E-02: `R/all-equal.R` - all_equal関数とequal_data_frame関数の実装
- E-03: `R/near.R` - near関数の実装
- E-04: `tests/testthat/test-sets.R` - 既存のテストコード
- E-05: `tests/testthat/_snaps/sets.md` - スナップショットテスト
- E-06: `man/setops.Rd` - 集合演算のドキュメント

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

### intersect関数（UT-SET-001〜010）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | intersect.data.frameが両方のデータフレームに存在する行を返す | E-01 (L103-110), E-04 (L5) | ○ |
| C-02 | intersect.data.frameが重複行を除去する | E-01 (L107: vec_set_intersect), E-04 (L16) | ○ |
| C-03 | intersect.data.frameがグループ化メタデータを保持する | E-01 (L109: dplyr_reconstruct), E-04 (L38) | ○ |
| C-04 | intersect.data.frameが列順序を無視する | E-01 (L105: check_compatible), E-04 (L1-10) | ○ |
| C-05 | intersect.data.frameが型変換を行う | E-01 (L107), E-04 (L23-32) | ○ |
| C-06 | intersect.data.frameが追加引数でエラーになる | E-01 (L104: check_dots_empty), E-04 (L59-66) | ○ |
| C-07 | intersect.data.frameが列数不一致でエラーになる | E-01 (L167-171: is_compatible), E-04 (L68-79) | ○ |
| C-08 | intersect.data.frameが列名不一致でエラーになる | E-01 (L177-205: is_compatible), E-04 (L90) | ○ |
| C-09 | intersect.data.frameが型非互換でエラーになる | E-01 (L208-234: is_compatible), E-04 (L92) | ○ |
| C-10 | intersect.data.frameが空データフレームを処理する | E-01 (L107: vec_set_intersect) | ○ |

### union関数（UT-SET-011〜015）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-11 | union.data.frameが両方のデータフレームの行を結合する | E-01 (L113-120), E-04 (L6) | ○ |
| C-12 | union.data.frameが重複行を除去する | E-01 (L117: vec_set_union), E-04 (L17) | ○ |
| C-13 | union.data.frameがグループ化メタデータを保持する | E-01 (L119: dplyr_reconstruct), E-04 (L39) | ○ |
| C-14 | union.data.frameが追加引数でエラーになる | E-01 (L114: check_dots_empty), E-04 (L61) | ○ |
| C-15 | union.data.frameが非互換データフレームでエラーになる | E-01 (L115: check_compatible), E-04 (L74) | ○ |

### union_all関数（UT-SET-016〜021）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-16 | union_all.data.frameが全行を結合する | E-01 (L123-129), E-04 (L7) | ○ |
| C-17 | union_all.data.frameが重複行を保持する | E-01 (L127: vec_rbind), E-04 (L18) | ○ |
| C-18 | union_all.data.frameがグループ化メタデータを保持する | E-01 (L128: dplyr_reconstruct), E-04 (L40) | ○ |
| C-19 | union_all.data.frameが追加引数でエラーになる | E-01 (L124: check_dots_empty), E-04 (L62) | ○ |
| C-20 | union_all.data.frameが非互換データフレームでエラーになる | E-01 (L125: check_compatible), E-04 (L75) | ○ |
| C-21 | union_all.defaultがベクトルに対して動作する | E-01 (L71-74), E-04 (L48) | ○ |

### setdiff関数（UT-SET-022〜026）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-22 | setdiff.data.frameがxにあってyにない行を返す | E-01 (L131-139), E-04 (L8) | ○ |
| C-23 | setdiff.data.frameが重複行を除去する | E-01 (L136: vec_set_difference), E-04 (L19) | ○ |
| C-24 | setdiff.data.frameがグループ化メタデータを保持する | E-01 (L138: dplyr_reconstruct), E-04 (L41) | ○ |
| C-25 | setdiff.data.frameが追加引数でエラーになる | E-01 (L133: check_dots_empty), E-04 (L63) | ○ |
| C-26 | setdiff.data.frameが非互換データフレームでエラーになる | E-01 (L134: check_compatible), E-04 (L76) | ○ |

### setequal関数（UT-SET-027〜036）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-27 | setequal.data.frameが同じ行でTRUEを返す | E-01 (L141-148), E-04 (L98-104) | ○ |
| C-28 | setequal.data.frameが列順序を無視する | E-01 (L146: vec_cast_common), E-04 (L99-100) | ○ |
| C-29 | setequal.data.frameが行順序を無視する | E-01 (L147: vec_in), E-04 (L99-100) | ○ |
| C-30 | setequal.data.frameが重複行を無視する | E-01 (L147), E-04 (L106-112) | ○ |
| C-31 | setequal.data.frameが型変換を使用する | E-01 (L146: vec_cast_common), E-04 (L114-120) | ○ |
| C-32 | setequal.data.frameが異なる行でFALSEを返す | E-01 (L147), E-04 (L124) | ○ |
| C-33 | setequal.data.frameが追加引数でエラーになる | E-01 (L143: check_dots_empty), E-04 (L139-141) | ○ |
| C-34 | setequal.data.frameがyがデータフレームでない場合にエラーになる | E-01 (L144: check_compatible), E-04 (L135-137) | ○ |
| C-35 | setequal.data.frameが列名不一致でエラーになる | E-01 (L144: check_compatible), E-04 (L127-129) | ○ |
| C-36 | setequal.data.frameが型非互換でエラーになる | E-01 (L144: check_compatible), E-04 (L130-132) | ○ |

### symdiff関数（UT-SET-037〜043）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-37 | symdiff.data.frameが対称差を返す | E-01 (L150-158), E-04 (L9) | ○ |
| C-38 | symdiff.data.frameが重複行を除去する | E-01 (L155: vec_set_symmetric_difference), E-04 (L20) | ○ |
| C-39 | symdiff.data.frameがグループ化メタデータを保持する | E-01 (L157: dplyr_reconstruct), E-04 (L42) | ○ |
| C-40 | symdiff.data.frameが追加引数でエラーになる | E-01 (L152: check_dots_empty), E-04 (L64) | ○ |
| C-41 | symdiff.data.frameが非互換データフレームでエラーになる | E-01 (L153: check_compatible), E-04 (L77) | ○ |
| C-42 | symdiff.defaultがベクトルに対して動作する | E-01 (L96-100), E-04 (L50) | ○ |
| C-43 | symdiff.defaultがベクトルの重複を除去する | E-01 (L99: setdiff, union, intersect), E-04 (L52) | ○ |

### is_compatible / check_compatible関数（UT-SET-044〜052）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-44 | is_compatibleが互換性のあるデータフレームでTRUEを返す | E-01 (L162-241), E-04 (L81-94) | ○ |
| C-45 | is_compatibleがyがデータフレームでない場合にメッセージを返す | E-01 (L163-165), E-04 (L83) | ○ |
| C-46 | is_compatibleが列数不一致でメッセージを返す | E-01 (L167-171), E-04 (L84) | ○ |
| C-47 | is_compatibleが列順序不一致でメッセージを返す | E-01 (L181-186), E-04 (L85-89) | ○ |
| C-48 | is_compatibleが列名不一致でメッセージを返す | E-01 (L187-205), E-04 (L90) | ○ |
| C-49 | is_compatibleが型非互換でメッセージを返す | E-01 (L208-234), E-04 (L92) | ○ |
| C-50 | is_compatibleが型不一致でメッセージを返す（convert=FALSE） | E-01 (L225-233), E-04 (L91) | ○ |
| C-51 | check_compatibleが互換性がある場合に何も返さない | E-01 (L243-261) | ○ |
| C-52 | check_compatibleが非互換の場合にエラーをスローする | E-01 (L260: abort) | ○ |

### all_equal / equal_data_frame関数（UT-SET-053〜064）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-53 | all_equalが同一データフレームでTRUEを返す | E-02 (L34-58) | ○ |
| C-54 | all_equalがシャッフルされたデータフレームでTRUEを返す | E-02 (L37-38: ignore_col_order, ignore_row_order) | ○ |
| C-55 | all_equalが非推奨警告を表示する | E-02 (L42-48: deprecate_warn) | ○ |
| C-56 | equal_data_frameが同一データフレームでTRUEを返す | E-02 (L60-137) | ○ |
| C-57 | equal_data_frameが列順序を無視する | E-02 (L63: ignore_col_order) | ○ |
| C-58 | equal_data_frameが行順序を無視する | E-02 (L64: ignore_row_order) | ○ |
| C-59 | equal_data_frameが非互換データフレームでメッセージを返す | E-02 (L67-76) | ○ |
| C-60 | equal_data_frameが行数不一致でメッセージを返す | E-02 (L78-82) | ○ |
| C-61 | equal_data_frameが列数0でTRUEを返す | E-02 (L84-86) | ○ |
| C-62 | equal_data_frameがxにあってyにない行でメッセージを返す | E-02 (L98-106) | ○ |
| C-63 | equal_data_frameが出現回数不一致でメッセージを返す | E-02 (L122-129) | ○ |
| C-64 | equal_data_frameが行順序不一致でメッセージを返す（ignore_row_order=FALSE） | E-02 (L132-134) | ○ |

### near関数（UT-SET-065〜075）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-65 | nearが等しい数値でTRUEを返す | E-03 (L13-15) | ○ |
| C-66 | nearが浮動小数点誤差を許容する | E-03 (L10-12: examples), E-03 (L14) | ○ |
| C-67 | nearがベクトル比較を行う | E-03 (L14: abs(x - y) < tol) | ○ |
| C-68 | nearがカスタムtolを使用する | E-03 (L13: tol引数) | ○ |
| C-69 | nearのデフォルトtolが.Machine$double.eps^0.5である | E-03 (L13) | ○ |
| C-70 | nearが異なる数値でFALSEを返す | E-03 (L14) | ○ |
| C-71 | near境界値テスト | E-03 (L14) | ○ |
| C-72 | near 0との比較 | E-03 (L14) | ○ |
| C-73 | near NAを含む場合の挙動 | **実装からの推測** | △ |
| C-74 | near Infを含む場合の挙動 | **実装からの推測** | △ |
| C-75 | near NaNを含む場合の挙動 | **実装からの推測** | △ |

## 4) 不足情報（Unknown / Missing）
- near関数のNA/Inf/NaN処理について、明示的なドキュメントやテストが存在しない
  - 候補：Rの標準的な数値演算挙動に従うと推測 / 実行時テストで確認が必要 / ドキュメントへの追記を検討

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 集合演算関数（intersect, union, union_all, setdiff, setequal, symdiff）は既存テストで十分カバーされている
- 0: 低リスク - is_compatible関数はスナップショットテストで出力メッセージが検証されている
- 1: 中リスク - all_equal関数は非推奨であり、今後のメンテナンス優先度が低い可能性がある
- 1: 中リスク - near関数の特殊値（NA/Inf/NaN）処理は実行時確認が推奨される

## 6) レビュアーチェックリスト（最小）
- [ ] 集合演算のテストケースが全関数（intersect, union, union_all, setdiff, setequal, symdiff）をカバーしているか
- [ ] 正常系・異常系・境界値の観点が各関数に対して網羅されているか
- [ ] グループ化メタデータの保持テストが含まれているか
- [ ] 互換性チェック（is_compatible, check_compatible）の各エラーケースがカバーされているか
- [ ] near関数の浮動小数点比較テストが適切か
- [ ] 非推奨関数（all_equal）のテストケースが適切な優先度で設定されているか
- [ ] NA/Inf/NaN処理のテストケースを実行時に確認する必要があるか検討
