---
generated_at: 2026-01-28 10:30:00
metrics:
  claims_total: 27
  claims_with_evidence: 27
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：27 / 27、根拠なし：0
- 優先レビュー（高）
  1. **なし**：全てのテストケースに根拠あり
  2. **UT-LNG-018**：mounted状態のテストは実際のWidget環境での検証が推奨される
  3. **UT-LNG-024**：空配列時のfirst.codeアクセスは例外発生の可能性があり、実際の動作確認が推奨される

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

- E-01: `lib/screens/language/language_view.dart` (lines 1-96)
- E-02: `lib/data_model/currency_language_model.dart` (lines 1-174)
- E-03: `lib/utils/app_global_data.dart` (lines 1-44)
- E-04: `lib/utils/shared_preference_helper.dart` (lines 1-215)
- E-05: `lib/main.dart` (lines 1-236)

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Language.createStateは_LanguageStateを返す | E-01 (line 10) | ○ |
| C-02 | initStateでGlobalData.languageData.localesを取得 | E-01 (line 19), E-03 (line 23) | ○ |
| C-03 | GlobalData.languageDataがnullの場合にnullが設定される | E-01 (line 19) | ○ |
| C-04 | initStateでgetCode()が呼ばれる | E-01 (line 21) | ○ |
| C-05 | buildでListView.builderが使用される | E-01 (lines 31-81) | ○ |
| C-06 | itemCountはlanguages?.length ?? 0 | E-01 (line 34) | ○ |
| C-07 | languagesがnullの場合itemCountは0 | E-01 (line 34) | ○ |
| C-08 | 選択中の言語にradio_button_checkedが表示される | E-01 (lines 60-62) | ○ |
| C-09 | 未選択の言語にradio_button_offが表示される | E-01 (lines 63-67) | ○ |
| C-10 | onTapでGlobalData.localeが更新される | E-01 (line 38) | ○ |
| C-11 | onTapでsetCustomerLanguageが呼ばれる | E-01 (line 39), E-04 (lines 178-179) | ○ |
| C-12 | onTapでsetLanguageNameが呼ばれる | E-01 (lines 41-42), E-04 (lines 38-40) | ○ |
| C-13 | onTapでselectedCodeがsetStateで更新される | E-01 (lines 43-45) | ○ |
| C-14 | onTapでHive.deleteBoxFromDisk("getCategoriesDrawerData")が呼ばれる | E-01 (line 46) | ○ |
| C-15 | onTapでHive.deleteBoxFromDisk("recentProducts")が呼ばれる | E-01 (line 47) | ○ |
| C-16 | mounted==trueの時RestartWidget.restartAppが呼ばれる | E-01 (lines 49-50), E-05 (lines 96-99) | ○ |
| C-17 | mounted==trueの時Navigator.pushNamedAndRemoveUntilでsplashに遷移 | E-01 (lines 51-52) | ○ |
| C-18 | mounted==falseの時は再起動・遷移が行われない | E-01 (line 49) | ○ |
| C-19 | 言語コードがnullの場合に空文字が設定される | E-01 (lines 38, 44) | ○ |
| C-20 | 言語名がnullの場合に空文字が設定される | E-01 (line 42) | ○ |
| C-21 | getCodeで保存済み言語コードが取得される | E-01 (line 87), E-04 (lines 182-183) | ○ |
| C-22 | 保存済み言語コードが空文字の場合に先頭言語が設定される | E-01 (lines 89-90) | ○ |
| C-23 | 保存済み言語コードが空でlanguagesもnullの場合に空文字が設定される | E-01 (line 90) | ○ |
| C-24 | 保存済み言語コードが空でlanguagesが空配列の場合の処理 | E-01 (line 90) | ○ |
| C-25 | AppBarに正しいタイトルが表示される | E-01 (line 28) | ○ |
| C-26 | 言語名がTextウィジェットに表示される | E-01 (line 72) | ○ |
| C-27 | 言語名がnullの場合に空文字が表示される | E-01 (line 72) | ○ |

## 4) 不足情報（Unknown / Missing）
- なし：全てのテストケースはソースコードから直接確認可能

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - UT-LNG-001, UT-LNG-020, UT-LNG-025, UT-LNG-027
- 1: 中リスク - UT-LNG-004, UT-LNG-006, UT-LNG-008, UT-LNG-009, UT-LNG-012, UT-LNG-013, UT-LNG-019, UT-LNG-023, UT-LNG-024, UT-LNG-026
- 2: 高リスク - UT-LNG-002, UT-LNG-003, UT-LNG-005, UT-LNG-007, UT-LNG-010, UT-LNG-011, UT-LNG-014, UT-LNG-015, UT-LNG-016, UT-LNG-017, UT-LNG-018, UT-LNG-021, UT-LNG-022

## 6) レビュアーチェックリスト（最小）
- [ ] テストケースが全てのpublicメソッドをカバーしているか確認
- [ ] null安全性に関するテストが適切か確認
- [ ] 境界値テスト（空配列、null）が網羅されているか確認
- [ ] 状態変更（setState）を伴うテストケースが適切に設計されているか確認
- [ ] 外部依存（Hive, SharedPreference, GlobalData）のモック戦略が適切か確認
- [ ] mounted状態のテストがWidget Testで実施可能か確認
- [ ] 空配列時のfirstアクセスが例外を発生させないか実機確認
