11 KiB
Removed Features Documentation
このドキュメントは、v1.0.5までの開発過程で削除・変更された機能を記録し、将来のPro版開発やAI協調作業のための参考資料として残します。
📋 目次
1. オフライン「保存して後で解析」機能
削除された機能
機能概要: インターネット接続がない環境で撮影した酒の写真を一時保存し、オンライン復帰後に解析・登録できる機能
元の動作フロー:
- カメラで酒ラベルを撮影
- オフライン時: 写真をギャラリーと内部ストレージに保存 → 「後で解析」キューに追加
- オンライン復帰時: ホーム画面で「未解析の写真」バナー表示 → タップで一括解析
- 解析完了後: 自動的にSakeItemとして登録
削除された時期: Gemini Vision API移行時(正確なコミットは不明、v1.0.0以前)
削除理由:
- Gemini Vision APIが必須のオンライン接続を要求
- OCRライブラリ削除に伴い、オフライン解析のバックエンドが消失
- 「後で解析」キュー管理の複雑性(状態管理、リトライロジック、エラーハンドリング)
現在の代替手段
現状の動作:
- カメラ撮影 → 写真はギャラリーに保存される
- Gemini Vision API呼び出し失敗時: エラーダイアログ表示
- ユーザーは後で手動でギャラリーから写真を選び直して再解析が必要
ユーザー体験の劣化:
- ❌ オフライン時の撮影が無意味化(解析できないため登録不可)
- ❌ 一時保存された写真の存在を忘れやすい
- ❌ 再解析のために同じ写真を探す手間
アプリコンセプトへの影響度
🔴 高(Critical)
理由:
- Ponshu Roomのコアバリュー: 「居酒屋や試飲会で気軽に記録」
- 居酒屋・地方の酒蔵など、電波が弱い環境での利用が想定される
- オフライン対応なしでは、メインユースケースが阻害される
将来のPro版への推奨実装
優先度: 🔥 最高優先(Must Have)
実装案:
-
Draft Mode実装:
class SakeItem { final bool isPendingAnalysis; // 新規フィールド final String? draftPhotoPath; // 解析待ち写真パス // ... } -
Pending Analysis Queue:
- Hiveに
draft_itemsボックス追加 - ホーム画面に「未解析: 3件」バナー表示
- タップでバッチ解析開始
- Hiveに
-
Background Sync:
connectivity_plusでオンライン復帰検知- 自動的にバックグラウンドで解析開始(通知で進捗表示)
-
Fallback to Manual Entry:
- 解析失敗時: 「手動で入力しますか?」オプション
- 写真は保持したまま、ユーザーが銘柄名などを入力
実装複雑度: 中(3-5日)
必要な技術:
- State management拡張(pending状態の追加)
- Background task処理(
workmanagerパッケージ) - Error handling強化(リトライロジック)
2. OCRベースのオフライン解析
削除された機能
機能概要: デバイス上でOCR処理を実行し、インターネット接続なしでラベルテキストを抽出する機能
元の技術スタック:
google_ml_kit(Text Recognition V2)- または
tesseract_ocr(推測、コミット履歴未確認)
削除された時期: Gemini Vision API移行時(v1.0.0以前)
削除理由:
- OCR精度の限界(日本語手書き文字、装飾フォントの誤認識)
- Gemini Vision APIの圧倒的な解析精度(ラベルデザイン理解、文脈推論)
- ライブラリサイズ削減(google_ml_kit約15MB削減)
現在の代替手段
現状:
- Gemini Vision API一本化
- オフライン時は機能しない
アプリコンセプトへの影響度
🟡 中(Moderate)
理由:
- OCR単体では精度不足だったため、元々Gemini補完前提だった
- 完全オフラインより「圏外→後で解析」の方が実用的
- しかし、Draft Mode(機能1)がないと意味がない
将来のPro版への推奨実装
優先度: 🔶 中優先(Nice to Have)
実装案:
-
Hybrid Approach:
- オフライン時: OCRでテキスト抽出 → Draft保存
- オンライン復帰時: Gemini Vision APIで完全解析 → OCR結果を補正
-
Use Case:
- 電波が完全にない環境(山間部の酒蔵、地下貯蔵庫見学)
- 低速回線でGemini APIタイムアウトする場合のフォールバック
-
実装詳細:
// camera_screen.dartのフロー変更 if (isOnline) { result = await GeminiVisionAPI.analyze(photo); } else { ocrText = await MLKitOCR.extractText(photo); saveDraft(photo, ocrText); // Draft保存 showSnackBar('オフライン: 後で解析します'); }
実装複雑度: 低(1-2日)
必要な技術:
google_mlkit_text_recognition: ^0.13.0再導入- Connectivity check (
connectivity_plus) - Draft Mode(機能1)と統合
3. 32ビットデバイスサポート
削除された機能
機能概要: 32ビットARM(armeabi-v7a)および32ビットx86デバイスでの動作サポート
削除された設定:
// android/app/build.gradle.kts
// 削除前:
ndk {
abiFilters.addAll(listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64"))
}
// 現在(v1.0.5):
ndk {
abiFilters.add("arm64-v8a") // 64ビットのみ
}
削除された時期: v1.0.5(リリースビルド最適化時)
削除理由:
- APKサイズ削減(182MB → 48MB、約74%削減)
- 2015年以降の端末はほぼ全て64ビット
- Google Play要件: 2019年8月以降、64ビット必須
現在の影響
動作不可デバイス:
- 2014年以前のAndroid端末(32ビットCPU)
- 一部のx86エミュレータ(32ビット設定)
- 例: Galaxy S4, Nexus 5, 初代Moto G
動作可能デバイス:
- 2015年以降のほぼ全てのAndroid端末
- iOS: iPhone 5s(2013年)以降全て(元々64ビット)
アプリコンセプトへの影響度
🟢 低(Minor)
理由:
- ターゲットユーザー: 酒愛好家(比較的新しいスマホ所有率高い)
- 2025年現在、32ビット端末のシェアは1%未満(推定)
- カメラ・AI機能を考えると、古い端末では元々動作が重い
将来のPro版への推奨実装
優先度: 🔵 低優先(Optional)
実装案:
-
Split APK配信:
- Google Play Console: 自動的に端末に応じたAPKを配信
- 64ビット版(48MB)と32ビット版(42MB)を両方ビルド
- ユーザーは意識せず最適版をダウンロード
-
実装方法:
// build.gradle.kts android { splits { abi { isEnable = true reset() include("armeabi-v7a", "arm64-v8a") isUniversalApk = false } } } -
トレードオフ:
- メリット: 古い端末でも動作
- デメリット: ビルド時間増加、メンテナンス負荷増加
実装複雑度: 極低(30分)
推奨判断基準:
- 実際に32ビット端末ユーザーからの要望があれば実装
- なければ現状維持(64ビットのみ)で問題なし
総評:アプリコンセプトへの影響
Ponshu Roomのコアコンセプト
「居酒屋や酒蔵で出会った日本酒を、その場で写真を撮るだけで記録・管理できる個人用酒手帳アプリ」
削除機能の致命度分析
| 機能 | コンセプト一致度 | 削除による影響 | 復活優先度 |
|---|---|---|---|
| オフライン保存→後で解析 | 🔴 最重要 | 居酒屋での記録体験を直撃 | 🔥 最高 |
| OCRオフライン解析 | 🟡 補助的 | Draft Modeなしでは無意味 | 🔶 中 |
| 32ビットサポート | 🟢 周辺的 | 現代端末には影響なし | 🔵 低 |
致命的な欠陥の有無
結論: ⚠️ 1つの致命的欠陥あり
致命的欠陥:
- オフライン対応の完全喪失
- 電波の弱い居酒屋・地下店舗でアプリが機能しない
- メインユースケース「その場で記録」が成立しない
- 競合アプリ(Sakenomy等)との差別化要素を失う
許容可能な変更:
- OCR削除: Gemini Vision精度で十分カバー
- 32ビット削除: 現代のユーザー層には無影響
今後の開発方針
Phase 1: 緊急対応(次期アップデート)
- Draft Mode実装(3-5日)
- オフライン時に写真を一時保存
- オンライン復帰で自動解析
- ホーム画面にペンディング通知
Phase 2: Pro版差別化機能
-
Advanced Offline Support(Pro限定)
- OCR Fallback(完全圏外でもテキスト抽出)
- Background Sync(バックグラウンド自動解析)
- Conflict Resolution(同一酒の重複検知)
-
その他Pro機能強化
- Instagram自動投稿(現在ロック中)
- ビジネスアナリティクス(現在ロック中)
- Multi-device Sync(新規)
Phase 3: 長期戦略
- エンタープライズ版検討
- 酒販店向けPOSシステム連携
- 飲食店メニュー管理機能
- 在庫管理・発注支援
開発メモ(AI協調用)
重要な技術的決定事項
- AI解析: Gemini Vision API 1.5 Flash(google_generative_ai ^0.4.6)
- ローカルDB: Hive 2.2.3(NoSQL、暗号化対応)
- 状態管理: Riverpod 2.6.1(Provider pattern)
- ビルドフレーバー:
--dart-define=IS_PRO_VERSION=true/false
削除されたパッケージ(推測)
以下は過去に存在した可能性があるが、現在のpubspec.yamlにはない:
google_mlkit_text_recognition- OCR機能connectivity_plus- オフライン検知(必要なのに未導入)workmanager- バックグラウンドタスク
今後導入すべきパッケージ
dependencies:
connectivity_plus: ^6.1.2 # オフライン検知
# workmanager: ^0.5.2 # Background sync(Phase 2)
# google_mlkit_text_recognition: ^0.13.1 # OCR Fallback(Phase 2)
変更履歴
- 2026-01-31: 初版作成(v1.0.5時点での削除機能分析)