ponshu-room-lite/DAY2_SECURITY_CHECKLIST.md

154 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Day 2: セキュリティ & キャッシュ確認チェックリスト
**実施日**: 2026-01-22
**担当**: 開発者(実機テスト)
---
## ✅ 1. Git履歴からAPIキー削除確認完了
### 確認結果
-`.gitignore``lib/secrets.local.dart``lib/libsecrets.dart` が含まれている
-`lib/secrets.dart` は未追跡(`??` = untracked
-`lib/secrets.local.dart.example` も未追跡
-`lib/secrets.dart``defaultValue` は空文字列38行目
- ✅ APIキーは `secrets.local.dart` から読み込まれる50行目
### セキュリティ状態
**🟢 安全**: APIキーはGit履歴に残っていません。
**重要**:
- `lib/secrets.dart` を今後Gitにコミットする場合、必ず `defaultValue: ''` のままにしてください
- `lib/secrets.local.dart` は絶対にコミットしないでください
---
## ⏳ 2. キャッシュ機能の実機テスト(実施中)
### テスト手順
#### Step 1: 新しい日本酒の写真を選択
1. ギャラリーから**今まで解析していない日本酒の写真**を選択
2. AI解析が実行されるキャッシュMISS
3. ログで以下を確認:
```
I/flutter: 🔍 Cache MISS: [ハッシュ値]
I/flutter: ✅ AI解析成功: [銘柄名]
```
#### Step 2: 同じ写真を再度選択
1. ギャラリーから**同じ写真**を選択
2. AI解析がスキップされるキャッシュHIT
3. ログで以下を確認:
```
I/flutter: 💰 API呼び出しをスキップキャッシュヒット
```
#### Step 3: 開発者メニューでキャッシュサイズを確認
1. マイページ → 設定 → 開発者メニュー
2. 「キャッシュサイズ」を確認
3. 数値が表示されているか確認(例: 「2件」
#### Step 4: キャッシュクリアのテスト
1. 開発者メニューで「キャッシュクリア」をタップ
2. 確認ダイアログで「OK」
3. キャッシュサイズが「0件」になることを確認
#### Step 5: キャッシュクリア後の再解析
1. ギャラリーから**先ほどの写真**を選択
2. AI解析が再度実行されるキャッシュMISS
3. ログで以下を確認:
```
I/flutter: 🔍 Cache MISS: [ハッシュ値]
```
### 期待される結果
- ✅ 同じ写真を選択した場合、API呼び出しがスキップされる
- ✅ ログで「💰 API呼び出しをスキップ」が表示される
- ✅ 開発者メニューでキャッシュサイズが確認できる
- ✅ キャッシュクリア後は再度API呼び出しが実行される
### キャッシュ効果の試算
| シナリオ | API呼び出し | 削減率 |
|---------|------------|--------|
| 新しい写真 | 1回 | 0% |
| 同じ写真2回目 | 0回 | 100% |
| 同じ写真3回目 | 0回 | 100% |
| **合計** | **1回** | **66%削減** |
---
## ⏳ 3. エラーハンドリング確認(実施中)
### テスト手順
#### Test 1: ネットワークエラー
1. スマホを**機内モード**にする
2. ギャラリーから写真を選択
3. エラーメッセージが表示されるか確認:
```
「AI解析に失敗しました」
```
4. 「再試行」ボタンが表示されるか確認
5. 機内モードを解除
6. 「再試行」ボタンをタップ
7. AI解析が成功するか確認
**期待される結果**: ✅ エラーメッセージ表示 → 再試行で成功
---
#### Test 2: API制限到達手動テスト
**注意**: このテストは**20回の解析**を実行するため、API制限に達します。
1. ギャラリーから**異なる写真を20回**選択
2. 21回目の解析を実行
3. エラーメッセージが表示されるか確認:
```
「本日のAI解析リクエスト上限に達しました。
明日またお試しください。」
```
4. 「再試行」ボタンをタップ
5. 同じエラーメッセージが表示されるか確認
**期待される結果**: ✅ 制限到達時に適切なエラーメッセージ表示
**注意**: このテストを実行すると、今日はこれ以上AI解析ができなくなります。
---
#### Test 3: 画像読み込みエラー
1. ギャラリーから**破損した画像**または**非常に大きな画像**を選択
2. エラーメッセージが表示されるか確認
3. アプリがクラッシュしないか確認
**期待される結果**: ✅ エラーメッセージ表示、クラッシュなし
---
## 📊 Day 2 完了判定
### 必須項目
- [ ] Git履歴にAPIキーが残っていないことを確認✅ 完了)
- [ ] キャッシュHITが動作することを確認
- [ ] 開発者メニューでキャッシュサイズが表示されることを確認
- [ ] ネットワークエラー時に適切なエラーメッセージが表示されることを確認
### オプション項目(推奨)
- [ ] API制限到達時のエラーメッセージを確認20回解析が必要
- [ ] 画像読み込みエラー時の挙動を確認
---
## 🎯 次のステップDay 3
Day 2のテストが完了したら、以下を実施:
1. 全機能の実機テスト
2. バグ修正
3. パフォーマンステスト
---
**実施者**: 開発者
**確認者**: Cursor AIログ確認