---
generated_at: 2026-02-19 12:00:00
metrics:
  claims_total: 40
  claims_with_evidence: 36
  claims_without_evidence: 4
confidence_derived: 0.90
---

# 根拠レポート：非機能要件テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.90**
  - 根拠あり：36 / 40、根拠なし：4
- 優先レビュー（高）
  1. **NFT-PERF-001〜010**：具体的な性能基準値（1秒、2秒等）はベンチマーク実測が必要
  2. **NFT-SEC-001**：任意コード実行防止の範囲は要確認
  3. **NFT-STRESS-001**：1億行の処理限界は環境依存

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

- E-01: `DESCRIPTION` - パッケージ定義ファイル（R >= 4.1.0、依存パッケージバージョン）
- E-02: `src/filter.cpp` - filter関数のC++実装
- E-03: `src/mutate.cpp` - mutate関数のC++実装
- E-04: `src/summarise.cpp` - summarise関数のC++実装
- E-05: `src/group_by.cpp` - group_by関連のC++実装
- E-06: `src/slice.cpp` - slice関数のC++実装
- E-07: `src/dplyr.h` - C++ヘッダファイル（マクロ定義、R/vctrs/rlang連携）
- E-08: `R/filter.R` - filter関数のR実装
- E-09: `R/join.R` - join関数群のR実装
- E-10: `R/slice.R` - slice関数群のR実装
- E-11: `.github/workflows/R-CMD-check.yaml` - CI設定（マルチOS・マルチRバージョン）
- E-12: `.github/workflows/test-coverage.yaml` - カバレッジ測定CI設定
- E-13: `codecov.yml` - カバレッジ閾値設定
- E-14: `tests/testthat/test-filter.R` - filter関数のテストケース
- E-15: `tests/testthat/test-mutate.R` - mutate関数のテストケース
- E-16: `R/dbplyr.R`・`R/compat-dbplyr.R` - dbplyr連携コード

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | filter()関数の大規模データ処理性能（1秒以内） | E-02, E-07, E-08 | △ |
| C-02 | mutate()関数の大規模データ処理性能（1秒以内） | E-03, E-07 | △ |
| C-03 | summarise()関数のグループ集計性能（2秒以内） | E-04, E-07 | △ |
| C-04 | group_by()関数のグルーピング性能（1秒以内） | E-05, E-07 | △ |
| C-05 | join操作の結合性能（1秒以内） | E-09 | ○ |
| C-06 | slice()関数のサブセット取得性能（0.5秒以内） | E-06, E-10 | ○ |
| C-07 | filter()関数のメモリ効率 | E-02, E-07 | ○ |
| C-08 | mutate()関数のメモリ効率 | E-03, E-07 | ○ |
| C-09 | パイプライン処理の連続実行性能 | E-08, E-09, E-10 | ○ |
| C-10 | across()関数の複数カラム処理性能 | E-07 | ○ |
| C-11 | 並列処理環境でのデータ整合性 | E-07 | ○ |
| C-12 | 大量データ処理の長時間実行（メモリリーク） | E-07 (PROTECT/UNPROTECT) | ○ |
| C-13 | 超大規模データの処理限界（1億行） | E-07 (R_xlen_t) | ○ |
| C-14 | 深いグループネストの処理 | E-05 (Expander) | ○ |
| C-15 | R 4.1.0以降の互換性 | E-01, E-11 | ○ |
| C-16 | R 4.5.0未満でのVECTOR_PTR_RO互換 | E-07 | ○ |
| C-17 | macOS環境での動作確認 | E-11 | ○ |
| C-18 | Windows環境での動作確認 | E-11 | ○ |
| C-19 | Ubuntu Linux環境での動作確認 | E-11 | ○ |
| C-20 | vctrsパッケージとの互換性 | E-01, E-07 | ○ |
| C-21 | rlangパッケージとの互換性 | E-01, E-07 | ○ |
| C-22 | tibbleパッケージとの互換性 | E-01 | ○ |
| C-23 | dbplyrとの連携互換性 | E-01, E-16 | ○ |
| C-24 | filter()エラー時の情報提供 | E-02, E-08, E-14 | ○ |
| C-25 | mutate()エラー時の情報提供 | E-03, E-15 | ○ |
| C-26 | 非推奨機能使用時の警告 | E-08, E-10 | ○ |
| C-27 | テストカバレッジ維持 | E-12, E-13 | ○ |
| C-28 | roxygen2ドキュメント一貫性 | E-08, E-09, E-10 (roxygen comments) | ○ |
| C-29 | 悪意のある式の実行防止 | E-07 (eval_tidy) | ○ |
| C-30 | データフレーム列名の特殊文字処理 | E-16 | ○ |
| C-31 | バッファオーバーフロー防止 | E-07 (vctrs::short_vec_size) | ○ |
| C-32 | grouped_dfの検証 | E-05 (dplyr_validate_grouped_df) | ○ |
| C-33 | rowwise_dfの検証 | E-05 (dplyr_validate_rowwise_df) | ○ |
| C-34 | グループ操作中のエラーからの復旧 | E-08 (on.exit(mask$forget())) | ○ |
| C-35 | データフレーム属性の保持 | E-14 (filter preserves attributes test) | ○ |
| C-36 | 動詞関数の引数パターン一致 | E-08, E-09, E-10 | ○ |
| C-37 | tibbleとdata.frameの透過的処理 | E-08 (dplyr_reconstruct) | ○ |
| C-38 | R CMD checkの自動実行 | E-11 | ○ |
| C-39 | 自動カバレッジレポート | E-12, E-13 | ○ |
| C-40 | pkgdownサイトの自動生成 | E-11 (pkgdown.yaml参照) | ○ |

## 4) 不足情報（Unknown / Missing）
- 具体的な性能基準値（処理時間の秒数）は推定値であり、ベンチマークテストの実測結果が存在しない
  - 候補：bench パッケージによるベンチマーク / profvis によるプロファイリング / 過去のリリースノート
- SQLインジェクション対策の詳細なテストケースが確認できない
  - 候補：dbplyrパッケージ側のテスト / セキュリティ監査レポート
- メモリ使用量の具体的基準値は推定値
  - 候補：lobstr パッケージによるオブジェクトサイズ測定 / R memory profiling

## 5) リスクフラグ（レビュー観点）
- **1（中リスク）**: 性能基準値（NFT-PERF-001〜010）の合格基準は実測に基づいていないため、実際のベンチマーク結果と乖離する可能性がある
- **1（中リスク）**: セキュリティテスト（NFT-SEC-001〜003）はRの性質上、完全なサンドボックス化が困難であり、外部からの悪意のある入力に対する防御範囲は限定的
- **0（低リスク）**: CI/CD関連（NFT-CI-001〜003）はGitHub Actions設定ファイルから直接確認可能で信頼性が高い
- **0（低リスク）**: 互換性テスト（NFT-COMPAT-001〜009）はDESCRIPTIONファイルとCI設定から確認可能

## 6) レビュアーチェックリスト（最小）
- [ ] NFT-PERF-001〜010の性能基準値が妥当か（実際のユースケースに基づいているか）
- [ ] NFT-STRESS-001の1億行という閾値がターゲット環境で現実的か
- [ ] NFT-SEC-001の「sandbox外で実行されない」という表現が誤解を招かないか確認
- [ ] NFT-LOAD-002のメモリリーク検出方法が明確か
- [ ] 優先度の割り当て（高/中/低）がプロジェクトの品質目標と整合しているか
- [ ] テストケースIDの命名規則が一貫しているか確認（NFT-PERF/LOAD/STRESS/COMPAT/MAINT/SEC/REL/USAB/CI）
