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

# 根拠レポート：nu-derive-value.csv

## 本レポートについて

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

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

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

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

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

---

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

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

- E-01: `crates/nu-derive-value/src/lib.rs` - メインエントリポイント、derive_into_value/derive_from_value公開マクロ
- E-02: `crates/nu-derive-value/src/into.rs` - IntoValue導出の実装（derive_into_value, struct_into_value, enum_into_value, fields_return_value）
- E-03: `crates/nu-derive-value/src/from.rs` - FromValue導出の実装（derive_from_value, struct_from_value, enum_from_value, type_is_option, parse_value_via_fields, struct_expected_type, enum_expected_type）
- E-04: `crates/nu-derive-value/src/case.rs` - ケース変換の実装（Case enum, from_str, Casing trait, to_case）
- E-05: `crates/nu-derive-value/src/names.rs` - 名前解決の実装（NameResolver struct, resolve_ident）
- E-06: `crates/nu-derive-value/src/attributes.rs` - 属性パースの実装（ContainerAttributes, MemberAttributes, ParseAttrs trait, filter, deny, deny_fields）
- E-07: `crates/nu-derive-value/src/error.rs` - エラー型の実装（DeriveError enum, From実装）
- E-08: `crates/nu-derive-value/src/tests.rs` - 既存テストコード（unsupported_unions, unsupported_enums, unexpected_attribute等）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 名前付きフィールドを持つ構造体からValue::Recordが生成される | E-02 (struct_into_value L112-148, fields_return_value L256-291) | ○ |
| C-02 | 無名フィールドを持つ構造体からValue::Listが生成される | E-02 (struct_into_value L128-136, fields_return_value L278-288) | ○ |
| C-03 | ユニット構造体からValue::Nothingが生成される | E-02 (struct_into_value L137, fields_return_value L289) | ○ |
| C-04 | ユニットバリアントのみの列挙型からValue::Stringが生成される | E-02 (enum_into_value L183-228) | ○ |
| C-05 | union型でUnsupportedUnionsエラーが返される | E-02 (derive_into_value L43), E-08 (unsupported_unions test) | ○ |
| C-06 | 名前付きフィールド列挙型でUnsupportedEnumsエラー | E-02 (enum_into_value L205-207), E-08 (unsupported_enums test) | ○ |
| C-07 | 無名フィールド列挙型でUnsupportedEnumsエラー | E-02 (enum_into_value L208-210), E-08 (unsupported_enums test) | ○ |
| C-08 | 名前付きフィールド構造体のFromValue実装生成 | E-03 (derive_struct_from_value L52-73) | ○ |
| C-09 | 無名フィールド構造体のFromValue実装生成 | E-03 (parse_value_via_fields L607-628) | ○ |
| C-10 | ユニット構造体のFromValue実装生成 | E-03 (parse_value_via_fields L630-640) | ○ |
| C-11 | ユニットバリアント列挙型のFromValue実装生成 | E-03 (derive_enum_from_value L384-401, enum_from_value L447-491) | ○ |
| C-12 | FromValueでunion型がUnsupportedUnionsエラー | E-03 (derive_from_value L43), E-08 (unsupported_unions test) | ○ |
| C-13 | FromValueで名前付きフィールド列挙型がUnsupportedEnumsエラー | E-03 (enum_from_value L459-461), E-08 (unsupported_enums test) | ○ |
| C-14 | type_is_optionがOptionプレリュード型を検出 | E-03 (type_is_option L659-664, PRELUDE_OPTION定数 L646) | ○ |
| C-15 | type_is_optionがstd::option::Optionを検出 | E-03 (type_is_option L659-664, FULLY_QUALIFIED_OPTION定数 L644) | ○ |
| C-16 | type_is_optionが非Option型でfalseを返す | E-03 (type_is_option L659-664) | ○ |
| C-17 | 名前付きフィールドでType::Recordが生成される | E-03 (struct_expected_type L324-341) | ○ |
| C-18 | 無名フィールドでType::Customが生成される | E-03 (struct_expected_type L342-365) | ○ |
| C-19 | type_name属性でType::Customが生成される | E-03 (struct_expected_type L319-323) | ○ |
| C-20 | Case::from_strがPascalCaseを解析 | E-04 (from_str L27) | ○ |
| C-21 | Case::from_strがsnake_caseを解析 | E-04 (from_str L29) | ○ |
| C-22 | Case::from_strがkebab-caseを解析 | E-04 (from_str L30) | ○ |
| C-23 | Case::from_strがSCREAMING_SNAKE_CASEを解析 | E-04 (from_str L31-33) | ○ |
| C-24 | Case::from_strがcamelCaseを解析 | E-04 (from_str L28) | ○ |
| C-25 | 未知のケース文字列でNoneが返される | E-04 (from_str L43) | ○ |
| C-26 | Casing::to_caseがCase::Pascalで変換 | E-04 (to_case L61) | ○ |
| C-27 | Casing::to_caseがCase::Snakeで変換 | E-04 (to_case L63) | ○ |
| C-28 | Casing::to_caseがCase::Kebabで変換 | E-04 (to_case L64) | ○ |
| C-29 | Casing::to_caseがNoneで元文字列を返す | E-04 (to_case L56-58) | ○ |
| C-30 | Casing::to_caseがCase::Flatで変換 | E-04 (to_case L72) | ○ |
| C-31 | NameResolver::newが空のインスタンスを生成 | E-05 (new L17, Default derive L10) | ○ |
| C-32 | resolve_identがrename属性を優先 | E-05 (resolve_ident L43-44) | ○ |
| C-33 | resolve_identがrename_allでケース変換 | E-05 (resolve_ident L46-47) | ○ |
| C-34 | resolve_identがデフォルトケースで変換 | E-05 (resolve_ident L46-47) | ○ |
| C-35 | 重複名でNonUniqueNameエラー | E-05 (resolve_ident L50-55), E-08 (non_unique_struct_keys, non_unique_enum_variants tests) | ○ |
| C-36 | raw識別子が正しく処理される | E-05 (resolve_ident L47, ident.unraw()) | ○ |
| C-37 | ContainerAttributesがrename_allをパース | E-06 (parse_attr L38-50) | ○ |
| C-38 | ContainerAttributesがtype_nameをパース | E-06 (parse_attr L52-56) | ○ |
| C-39 | 不正rename_all値でInvalidAttributeValueエラー | E-06 (parse_attr L44-49), E-08 (invalid_attribute_value test) | ○ |
| C-40 | 未知属性でUnexpectedAttributeエラー | E-06 (parse_attr L57-61), E-08 (unexpected_attribute test) | ○ |
| C-41 | MemberAttributesがrenameをパース | E-06 (MemberAttributes::parse_attr L78-82) | ○ |
| C-42 | MemberAttributesがdefaultをパース | E-06 (MemberAttributes::parse_attr L83-85) | ○ |
| C-43 | MemberAttributesで未知属性がエラー | E-06 (MemberAttributes::parse_attr L86-90), E-08 (unexpected_attribute_on_struct_field test) | ○ |
| C-44 | filterがnu_value属性のみをフィルタ | E-06 (filter L97-101) | ○ |
| C-45 | denyがnu_value属性なしでOkを返す | E-06 (deny L108, None case) | ○ |
| C-46 | denyがnu_value属性ありでエラー | E-06 (deny L109-111) | ○ |
| C-47 | deny_fieldsがフィールドにnu_value属性なしでOk | E-06 (deny_fields L117-133) | ○ |
| C-48 | deny_fieldsが名前付きフィールドのnu_value属性でエラー | E-06 (deny_fields L119-122) | ○ |
| C-49 | deny_fieldsが無名フィールドのnu_value属性でエラー | E-06 (deny_fields L123-127), E-08 (invalid_attribute_position_in_tuple_struct test) | ○ |
| C-50 | synパースエラーがDeriveError::Synに変換 | E-07 (From impl L40-44) | ○ |
| C-51 | UnsupportedUnionsがDiagnosticに変換 | E-07 (From impl L54-59) | ○ |
| C-52 | UnsupportedEnumsがDiagnosticに変換 | E-07 (From impl L61-70) | ○ |
| C-53 | UnexpectedAttributeがDiagnosticに変換 | E-07 (From impl L81-85) | ○ |
| C-54 | InvalidAttributePositionがDiagnosticに変換 | E-07 (From impl L72-79) | ○ |
| C-55 | InvalidAttributeValueがDiagnosticに変換 | E-07 (From impl L87-92) | ○ |
| C-56 | NonUniqueNameがDiagnosticに変換 | E-07 (From impl L94-101) | ○ |
| C-57 | 公開derive_into_valueマクロが正常動作 | E-01 (derive_into_value L50-57) | ○ |
| C-58 | 公開derive_into_valueマクロがエラー時abort | E-01 (derive_into_value L54, Diagnostic::from(e).abort()) | ○ |
| C-59 | 公開derive_from_valueマクロが正常動作 | E-01 (derive_from_value L64-70) | ○ |
| C-60 | 公開derive_from_valueマクロがエラー時abort | E-01 (derive_from_value L68, Diagnostic::from(e).abort()) | ○ |
| C-61 | fields_return_valueが名前付きフィールドでRecord生成 | E-02 (fields_return_value L262-276) | ○ |
| C-62 | fields_return_valueが無名フィールドでList生成 | E-02 (fields_return_value L278-288) | ○ |
| C-63 | fields_return_valueがユニットでNothing生成 | E-02 (fields_return_value L289) | ○ |
| C-64 | fields_return_valueが無名フィールドのnu_valueでエラー | E-02 (fields_return_value L279, deny_fields呼び出し) | ○ |
| C-65 | parse_value_via_fieldsが名前付きフィールドでrecord.remove生成 | E-03 (parse_value_via_fields L564-605) | ○ |
| C-66 | Option型フィールドでflatten処理生成 | E-03 (parse_value_via_fields L574-580) | ○ |
| C-67 | default属性でunwrap_or_default処理生成 | E-03 (parse_value_via_fields L592-598) | ○ |
| C-68 | parse_value_via_fieldsが無名フィールドでVecDeque処理 | E-03 (parse_value_via_fields L607-628) | ○ |
| C-69 | parse_value_via_fieldsがユニットでNothing確認 | E-03 (parse_value_via_fields L630-640) | ○ |
| C-70 | 空文字列でNoneが返される | E-04 (from_str L43, デフォルトケース) | ○ |
| C-71 | UpperCamelCaseエイリアスが解析される | E-04 (from_str L27) | ○ |
| C-72 | lowerCamelCaseエイリアスが解析される | E-04 (from_str L28) | ○ |
| C-73 | Case::ScreamingSnakeで変換される | E-04 (to_case L65) | ○ |
| C-74 | Case::Titleで変換される | E-04 (to_case L66) | ○ |
| C-75 | Case::Trainで変換される | E-04 (to_case L68) | ○ |

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

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - すべてのテストケースがソースコードの直接的な根拠に基づいています
- 既存テストコード（tests.rs）で一部のエラーケースは既にテストされていることを確認
- proc_macroクレートのため、実際の動作テストはnu_protocol::value::test_deriveで行われることが文書化されています

## 6) レビュアーチェックリスト（最小）
- [ ] 各テストケースの入力値と期待結果が対象メソッドの仕様と一致しているか確認
- [ ] 境界値テスト（空文字列等）が十分にカバーされているか確認
- [ ] エラーメッセージ生成（DeriveError -> Diagnostic変換）のテストが適切か確認
- [ ] 既存テスト（tests.rs）と重複するケースの扱いを検討
- [ ] ジェネリクス対応（impl_generics, ty_generics, where_clause）のテストケースが必要か検討
