---
generated_at: 2026-03-01 10:30:00
metrics:
  claims_total: 63
  claims_with_evidence: 63
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：nu-term-grid.csv

## 本レポートについて

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

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

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

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

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

---

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

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

- E-01: `crates/nu-term-grid/src/grid.rs` - メインモジュールソースコード（760行）
- E-02: `crates/nu-term-grid/src/lib.rs` - ライブラリエントリポイント
- E-03: `crates/nu-term-grid/examples/grid_demo.rs` - 使用例コード
- E-04: `crates/nu-term-grid/README.md` - モジュール説明文書
- E-05: `crates/nu-term-grid/src/grid.rs#L532-L758` - 既存テストコード（test module）

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

### Grid構造体関連（C-01〜C-21）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Grid::new()でGridOptionsを指定してGridを作成できる | E-01 L235-244 | ○ |
| C-02 | TopToBottom方向でGridを作成できる | E-01 L153-161, E-05 L537-546 | ○ |
| C-03 | Text区切りでGridを作成できる | E-01 L174-176, E-05 L670-686 | ○ |
| C-04 | reserve()で容量を予約できる | E-01 L248-250 | ○ |
| C-05 | reserve(0)でエラーなく完了する | E-01 L248-250（Vec::reserve仕様） | ○ |
| C-06 | add()でCellを追加できる | E-01 L253-260, E-05 L558 | ○ |
| C-07 | 複数のCellを追加できる | E-01 L253-260, E-05 L604-606 | ○ |
| C-08 | add()時にwidest_cell_lengthが更新される | E-01 L254-256 | ○ |
| C-09 | add()時にwidth_sumが更新される | E-01 L257 | ○ |
| C-10 | 空文字列のCellを追加できる | E-01 L253-260（条件分岐なし） | ○ |
| C-11 | fit_into_width()で指定幅に収まるDisplayが返る | E-01 L267-272, E-05 L543-548 | ○ |
| C-12 | 最小の行数でレイアウトされる | E-01 L371-399, E-05 L664-666 | ○ |
| C-13 | セルがない場合に空のDisplayが返る | E-01 L338-343, E-05 L537-549 | ○ |
| C-14 | 1セルの場合に1行1列のDisplayが返る | E-01 L345-351, E-05 L552-566 | ○ |
| C-15 | セル幅と同じ幅を指定すると収まる | E-01 L333-336, E-05 L569-583 | ○ |
| C-16 | 最大セル幅より小さい幅でNoneが返る | E-01 L333-336, E-05 L586-594 | ○ |
| C-17 | すべてのセルが幅に収まらない場合にNoneが返る | E-01 L401, E-05 L634-648 | ○ |
| C-18 | 区切り文字分の幅が確保できない場合にNoneが返る | E-01 L386-389, E-05 L731-741 | ○ |
| C-19 | fit_into_columns()で指定列数でDisplayが返る | E-01 L276-281 | ○ |
| C-20 | セル数より多い列数を指定できる | E-01 L283-290 | ○ |
| C-21 | 列数1を指定した場合に1列のDisplayが返る | E-01 L283-290 | ○ |

### Display構造体関連（C-22〜C-35）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-22 | width()で表示幅が正しく計算される | E-01 L421-424, E-05 L548 | ○ |
| C-23 | 空のDisplayの幅が0 | E-01 L421-424, E-05 L548 | ○ |
| C-24 | row_count()で行数が正しく返る | E-01 L427-429, E-05 L666 | ○ |
| C-25 | 空のDisplayの行数が0 | E-01 L427-429, E-05 L545 | ○ |
| C-26 | is_complete()でtrueが返る（完全な場合） | E-01 L438-440 | ○ |
| C-27 | is_complete()でfalseが返る（不完全な場合） | E-01 L438-440 | ○ |
| C-28 | LeftToRight方向で正しくフォーマットされる | E-01 L447-449, E-05 L664-666 | ○ |
| C-29 | TopToBottom方向で正しくフォーマットされる | E-01 L447-449 | ○ |
| C-30 | Spaces区切りで正しくフォーマットされる | E-01 L477-484, E-05 L664 | ○ |
| C-31 | Text区切りで正しくフォーマットされる | E-01 L495-504, E-05 L683-685 | ○ |
| C-32 | 左揃えで正しくフォーマットされる | E-01 L460-464, E-05 L664 | ○ |
| C-33 | 右揃えで正しくフォーマットされる | E-01 L465-472, E-05 L704-706 | ○ |
| C-34 | 右揃えとText区切りの組み合わせで正しくフォーマット | E-05 L710-728 | ○ |
| C-35 | セル数が列数で割り切れない場合に正しく処理 | E-01 L452-455 | ○ |

### Cell構造体関連（C-36〜C-41）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-36 | StringからCellが作成できる | E-01 L131-139 | ○ |
| C-37 | Unicode文字を含むStringからCellが作成できる | E-01 L134（unicode_width_strip_ansi呼出） | ○ |
| C-38 | ANSI制御文字を含むStringからCellが作成できる | E-01 L99-101, L134 | ○ |
| C-39 | 空のStringからCellが作成できる | E-01 L131-139（条件分岐なし） | ○ |
| C-40 | &strからCellが作成できる | E-01 L141-149 | ○ |
| C-41 | 空の&strからCellが作成できる | E-01 L141-149（条件分岐なし） | ○ |

### Filling関連（C-42〜C-45）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-42 | Spaces区切りの幅が正しく返る | E-01 L179-185 | ○ |
| C-43 | Text区切りの幅が正しく返る | E-01 L179-185 | ○ |
| C-44 | Spaces(0)の幅が0 | E-01 L181 | ○ |
| C-45 | 空のText区切りの幅が0 | E-01 L182-183 | ○ |

### ヘルパー関数関連（C-46〜C-57）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-46 | unicode_width_strip_ansi()で通常文字列の幅が計算される | E-01 L99-101 | ○ |
| C-47 | unicode_width_strip_ansi()でUnicode文字の幅が計算される | E-01 L99-101（unicode-widthクレート使用） | ○ |
| C-48 | unicode_width_strip_ansi()でANSI制御文字が除去される | E-01 L100（nu_utils::strip_ansi_unlikely呼出） | ○ |
| C-49 | unicode_width_strip_ansi()で空文字列の幅が0 | E-01 L99-101 | ○ |
| C-50 | spaces()で指定長のスペース文字列が生成される | E-01 L516-518 | ○ |
| C-51 | spaces(0)で空文字列が生成される | E-01 L517 | ○ |
| C-52 | pad_string()で左揃えでパディングが追加される | E-01 L524-530 | ○ |
| C-53 | pad_string()で右揃えでパディングが追加される | E-01 L524-530 | ○ |
| C-54 | pad_string()でパディング0の場合に元の文字列が返る | E-01 L524-530 | ○ |
| C-55 | Dimensions::total_width()で複数列の合計幅が計算される | E-01 L210-218 | ○ |
| C-56 | Dimensions::total_width()で列が空の場合に0が返る | E-01 L211-213 | ○ |
| C-57 | Dimensions::total_width()で1列の場合に区切り幅が含まれない | E-01 L214-216 | ○ |

### その他のテストケース（C-58〜C-63）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-58 | 大きなセパレータでも単一セルでは動作する | E-05 L744-758 | ○ |
| C-59 | 大きなセパレータで複数セルが収まらない場合 | E-05 L731-741 | ○ |
| C-60 | LeftToRight方向で列幅が正しく計算される | E-01 L292-303 | ○ |
| C-61 | TopToBottom方向で列幅が正しく計算される | E-01 L292-303 | ○ |
| C-62 | theoretical_max_num_lines()で最大行数が計算される | E-01 L305-330 | ○ |
| C-63 | すべてのセルが1行に収まる場合に1が返る | E-01 L328-329 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし：すべてのテストケースはソースコードから直接導出

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - すべてのテストケースがソースコード分析に基づいている
- 備考：
  - 既存のテストモジュール（grid.rs L532-758）で既にカバーされているケースが多い
  - ANSI制御文字処理はnu_utilsクレートに依存しているため、統合テストでの確認も推奨

## 6) レビュアーチェックリスト（最小）
- [ ] テストIDの命名規則（UT-TGD-xxx）が一貫しているか
- [ ] 優先度の設定が適切か（金額計算等はないため、主にデータ変換・表示ロジックが高優先度）
- [ ] 既存テストコード（E-05）との重複を確認し、新規追加すべきケースを特定
- [ ] 境界値テストが十分にカバーされているか
- [ ] 異常系テストで適切な例外処理が期待結果に含まれているか
- [ ] Unicode・ANSI処理に関するテストケースが実環境で必要十分か

---

## 付録：モジュール構造

### 公開API
| 要素 | 種別 | 説明 |
|------|------|------|
| `Grid` | 構造体 | メインのグリッドレイアウトエンジン |
| `GridOptions` | 構造体 | グリッドの設定オプション |
| `Cell` | 構造体 | 個々のセルを表すデータ構造 |
| `Display` | 構造体 | グリッドの表示用ラッパー |
| `Direction` | 列挙型 | セル配置方向（LeftToRight/TopToBottom） |
| `Filling` | 列挙型 | 区切り文字種別（Spaces/Text） |
| `Alignment` | 列挙型 | セル内配置（Left/Right） |
| `Width` | 型エイリアス | usize型の幅表現 |

### 内部実装
| 要素 | 種別 | 説明 |
|------|------|------|
| `Dimensions` | 構造体 | グリッドの次元情報（private） |
| `unicode_width_strip_ansi()` | 関数 | ANSI除去後のUnicode幅計算（private） |
| `spaces()` | 関数 | スペース文字列生成（private） |
| `pad_string()` | 関数 | 文字列パディング（private） |
