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