---
generated_at: 2026-01-28 14:25:00
metrics:
  claims_total: 40
  claims_with_evidence: 38
  claims_without_evidence: 2
confidence_derived: 0.95
---

# 根拠レポート：currency.csv（単体テストケース一覧）

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：38 / 40、根拠なし：2
- 優先レビュー（高）
  1. **UT-CUR-030**：`_closeThisPage`でのデフォルト値が"US Dollar"（コードでは異なる値が使用されている可能性）
  2. **UT-CUR-034**：存在しない通貨コード時の挙動（実際のアプリ動作確認が必要）

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

- E-01: `lib/screens/currency/curency_view.dart` - CurrencyScreen StatefulWidgetおよび_CurrencyScreenState実装
- E-02: `lib/data_model/currency_language_model.dart` - CurrencyLanguageList, Currenciesモデル定義
- E-03: `lib/utils/shared_preference_helper.dart` - SharedPreferenceHelperクラス（appStoragePref）
- E-04: `lib/utils/app_global_data.dart` - GlobalDataクラス定義
- E-05: `lib/main.dart` - RestartWidgetクラス、アプリケーション起動処理

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

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | CurrencyScreenはStatefulWidgetを継承 | E-01 (L17-22) | ○ |
| C-02 | createStateで_CurrencyScreenStateを生成 | E-01 (L20-21) | ○ |
| C-03 | initStateでGlobalData.languageDataを取得 | E-01 (L31) | ○ |
| C-04 | initStateで_fetchSharedPreferenceDataを呼び出し | E-01 (L32) | ○ |
| C-05 | GlobalData.languageDataがnullでもエラーにならない | E-01 (L43でnullチェック実施) | ○ |
| C-06 | AppBarにStringConstants.currencyTitleを表示 | E-01 (L40) | ○ |
| C-07 | currencyLanguageList!=nullで_currency表示 | E-01 (L43) | ○ |
| C-08 | currencyLanguageList==nullでSizedBox表示 | E-01 (L43) | ○ |
| C-09 | ListView.builderで通貨リスト表示 | E-01 (L48-79) | ○ |
| C-10 | 通貨名+コード形式で表示 | E-01 (L68) | ○ |
| C-11 | 選択中はradio_button_checkedアイコン | E-01 (L59-62) | ○ |
| C-12 | 未選択はradio_button_offアイコン | E-01 (L63-66) | ○ |
| C-13 | currencies?.length??0でnull安全 | E-01 (L79) | ○ |
| C-14 | 通貨名null時は空文字フォールバック | E-01 (L68 - ??演算子) | ○ |
| C-15 | 通貨コードnull時は空文字フォールバック | E-01 (L68 - ??演算子) | ○ |
| C-16 | 同じ通貨再タップでNavigator.pop | E-01 (L84-86) | ○ |
| C-17 | 異なる通貨タップで_selectedIndex更新 | E-01 (L88-91) | ○ |
| C-18 | 通貨選択時にsetCurrencyCode呼び出し | E-01 (L92), E-03 (L186-188) | ○ |
| C-19 | GlobalData.currencyCode更新 | E-01 (L93) | ○ |
| C-20 | setCurrencyLabel呼び出し | E-01 (L94), E-03 (L54-56) | ○ |
| C-21 | Hive.deleteBoxFromDisk("recentProducts")呼び出し | E-01 (L95) | ○ |
| C-22 | 異なる通貨タップで_closeThisPage呼び出し | E-01 (L97) | ○ |
| C-23 | 通貨コードnull時デフォルト"USD" | E-01 (L85, L92) | ○ |
| C-24 | 通貨名null時デフォルト"USD" | E-01 (L94) | ○ |
| C-25 | _closeThisPageでsetCurrencyCode呼び出し | E-01 (L102) | ○ |
| C-26 | getCategoriesDrawerData削除 | E-01 (L103) | ○ |
| C-27 | RestartWidget.restartApp呼び出し | E-01 (L104), E-05 (L96-98) | ○ |
| C-28 | pushNamedAndRemoveUntilでsplash遷移 | E-01 (L105) | ○ |
| C-29 | _closeThisPageでデフォルト"US Dollar" | E-01 (L102 - 実際のコードを確認必要) | △ |
| C-30 | _fetchSharedPreferenceDataで保存済みコード取得 | E-01 (L109), E-03 (L190-192) | ○ |
| C-31 | 一致する通貨のindex設定 | E-01 (L115) | ○ |
| C-32 | currencies.forEachで走査 | E-01 (L111) | ○ |
| C-33 | 一致しない場合は状態更新なし | E-01 (L112条件分岐) | ○ |
| C-34 | currencies?.forEachでnull安全 | E-01 (L111 - ?.演算子) | ○ |
| C-35 | setStateでUI再描画 | E-01 (L113-116) | ○ |
| C-36 | GestureDetectorでタップ処理 | E-01 (L50-53) | ○ |
| C-37 | _selectedIndex初期値-1 | E-01 (L25) | ○ |
| C-38 | -1では全項目未選択表示 | E-01 (L59条件 - itemIndex == _selectedIndex) | ○ |
| C-39 | 存在しない通貨コードの処理 | **推測** | △ |
| C-40 | 空配列時のforEach挙動 | E-01 (L111 - Dart言語仕様) | ○ |

## 4) 不足情報（Unknown / Missing）

- **UT-CUR-030（C-29）**：`_closeThisPage`メソッド内のデフォルト値について
  - コード(L102)では `_currentCurrencyCode??"US Dollar"` となっているが、`_onTapCurrency`(L85,L92)では `"USD"` が使用されている
  - 候補：仕様確認 / 意図的な違い / バグの可能性

- **UT-CUR-034（C-39）**：保存済み通貨コードがcurrenciesリストに存在しない場合の挙動
  - コードからは状態が更新されないことが読み取れるが、アプリのUX観点での期待動作は確認が必要
  - 候補：デフォルト通貨選択 / エラー表示 / 現状維持

## 5) リスクフラグ（レビュー観点）

- **リスク 1（中リスク）**：`_closeThisPage`と`_onTapCurrency`でデフォルト通貨コードの値が異なる（"US Dollar" vs "USD"）
  - 影響：通貨コードとして"US Dollar"が保存された場合、API呼び出しで不整合が発生する可能性
  - 対応：コードレビューで意図を確認、必要に応じて修正

- **リスク 0（低リスク）**：Hiveボックス削除処理が非同期だが、awaitなしで呼び出されている
  - 影響：削除完了前に画面遷移する可能性があるが、次回起動時に問題は発生しない見込み
  - 対応：必要に応じてawait追加を検討

## 6) レビュアーチェックリスト（最小）

- [ ] UT-CUR-030：`_closeThisPage`のデフォルト値"US Dollar"は意図通りか確認
- [ ] UT-CUR-024/030：デフォルト通貨コードの統一性を確認（"USD" vs "US Dollar"）
- [ ] UT-CUR-034：存在しない通貨コードが保存されている場合のUXを確認
- [ ] 通貨切替時のHiveボックス削除タイミングが適切か確認
- [ ] RestartWidget.restartAppによるアプリ再起動が全ての状態を正しくリセットするか確認

---

## 補足：テスト対象クラス・メソッド一覧

| クラス名 | メソッド名 | テストケース数 |
|---------|----------|--------------|
| CurrencyScreen | constructor, createState | 2 |
| _CurrencyScreenState | initState | 3 |
| _CurrencyScreenState | build | 3 |
| _CurrencyScreenState | _currency | 9 |
| _CurrencyScreenState | _onTapCurrency | 9 |
| _CurrencyScreenState | _closeThisPage | 5 |
| _CurrencyScreenState | _fetchSharedPreferenceData | 7 |
| _CurrencyScreenState | その他（状態変数、イベント） | 2 |
| **合計** | | **40** |

## 補足：関連モデルクラス

currencyモジュールは以下のデータモデルに依存しています：

1. **CurrencyLanguageList** (`lib/data_model/currency_language_model.dart`)
   - `currencies`: List<Currencies>? - 利用可能な通貨リスト
   - `baseCurrency`: Currencies? - 基本通貨
   - `locales`: List<Locales>? - 利用可能なロケール

2. **Currencies** (`lib/data_model/currency_language_model.dart`)
   - `id`: String? - 通貨ID
   - `name`: String? - 通貨名（例: "US Dollar"）
   - `code`: String? - 通貨コード（例: "USD"）

これらのモデルのテストは `data_model_root` モジュールのテストケース一覧に含まれています。
