# Removed Features Documentation このドキュメントは、v1.0.5までの開発過程で削除・変更された機能を記録し、将来のPro版開発やAI協調作業のための参考資料として残します。 ## 📋 目次 1. [オフライン「保存して後で解析」機能](#1-オフライン保存して後で解析機能) 2. [OCRベースのオフライン解析](#2-ocrベースのオフライン解析) 3. [32ビットデバイスサポート](#3-32ビットデバイスサポート) 4. [総評:アプリコンセプトへの影響](#総評アプリコンセプトへの影響) --- ## 1. オフライン「保存して後で解析」機能 ### 削除された機能 **機能概要**: インターネット接続がない環境で撮影した酒の写真を一時保存し、オンライン復帰後に解析・登録できる機能 **元の動作フロー**: 1. カメラで酒ラベルを撮影 2. オフライン時: 写真をギャラリーと内部ストレージに保存 → 「後で解析」キューに追加 3. オンライン復帰時: ホーム画面で「未解析の写真」バナー表示 → タップで一括解析 4. 解析完了後: 自動的にSakeItemとして登録 **削除された時期**: Gemini Vision API移行時(正確なコミットは不明、v1.0.0以前) **削除理由**: - Gemini Vision APIが必須のオンライン接続を要求 - OCRライブラリ削除に伴い、オフライン解析のバックエンドが消失 - 「後で解析」キュー管理の複雑性(状態管理、リトライロジック、エラーハンドリング) ### 現在の代替手段 **現状の動作**: - カメラ撮影 → 写真はギャラリーに保存される - Gemini Vision API呼び出し失敗時: エラーダイアログ表示 - ユーザーは後で手動でギャラリーから写真を選び直して再解析が必要 **ユーザー体験の劣化**: - ❌ オフライン時の撮影が無意味化(解析できないため登録不可) - ❌ 一時保存された写真の存在を忘れやすい - ❌ 再解析のために同じ写真を探す手間 ### アプリコンセプトへの影響度 **🔴 高(Critical)** **理由**: - Ponshu Roomのコアバリュー: 「居酒屋や試飲会で気軽に記録」 - 居酒屋・地方の酒蔵など、電波が弱い環境での利用が想定される - オフライン対応なしでは、メインユースケースが阻害される ### 将来のPro版への推奨実装 **優先度**: 🔥 最高優先(Must Have) **実装案**: 1. **Draft Mode実装**: ```dart class SakeItem { final bool isPendingAnalysis; // 新規フィールド final String? draftPhotoPath; // 解析待ち写真パス // ... } ``` 2. **Pending Analysis Queue**: - Hiveに`draft_items`ボックス追加 - ホーム画面に「未解析: 3件」バナー表示 - タップでバッチ解析開始 3. **Background Sync**: - `connectivity_plus`でオンライン復帰検知 - 自動的にバックグラウンドで解析開始(通知で進捗表示) 4. **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) **実装案**: 1. **Hybrid Approach**: - オフライン時: OCRでテキスト抽出 → Draft保存 - オンライン復帰時: Gemini Vision APIで完全解析 → OCR結果を補正 2. **Use Case**: - 電波が完全にない環境(山間部の酒蔵、地下貯蔵庫見学) - 低速回線でGemini APIタイムアウトする場合のフォールバック 3. **実装詳細**: ```dart // 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デバイスでの動作サポート **削除された設定**: ```kotlin // 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) **実装案**: 1. **Split APK配信**: - Google Play Console: 自動的に端末に応じたAPKを配信 - 64ビット版(48MB)と32ビット版(42MB)を両方ビルド - ユーザーは意識せず最適版をダウンロード 2. **実装方法**: ```kotlin // build.gradle.kts android { splits { abi { isEnable = true reset() include("armeabi-v7a", "arm64-v8a") isUniversalApk = false } } } ``` 3. **トレードオフ**: - メリット: 古い端末でも動作 - デメリット: ビルド時間増加、メンテナンス負荷増加 **実装複雑度**: 極低(30分) **推奨判断基準**: - 実際に32ビット端末ユーザーからの要望があれば実装 - なければ現状維持(64ビットのみ)で問題なし --- ## 総評:アプリコンセプトへの影響 ### Ponshu Roomのコアコンセプト > 「居酒屋や酒蔵で出会った日本酒を、その場で写真を撮るだけで記録・管理できる個人用酒手帳アプリ」 ### 削除機能の致命度分析 | 機能 | コンセプト一致度 | 削除による影響 | 復活優先度 | |------|------------------|----------------|------------| | オフライン保存→後で解析 | 🔴 **最重要** | 居酒屋での記録体験を直撃 | 🔥 最高 | | OCRオフライン解析 | 🟡 補助的 | Draft Modeなしでは無意味 | 🔶 中 | | 32ビットサポート | 🟢 周辺的 | 現代端末には影響なし | 🔵 低 | ### 致命的な欠陥の有無 **結論**: ⚠️ **1つの致命的欠陥あり** **致命的欠陥**: - **オフライン対応の完全喪失** - 電波の弱い居酒屋・地下店舗でアプリが機能しない - メインユースケース「その場で記録」が成立しない - 競合アプリ(Sakenomy等)との差別化要素を失う **許容可能な変更**: - OCR削除: Gemini Vision精度で十分カバー - 32ビット削除: 現代のユーザー層には無影響 ### 今後の開発方針 #### Phase 1: 緊急対応(次期アップデート) 1. **Draft Mode実装**(3-5日) - オフライン時に写真を一時保存 - オンライン復帰で自動解析 - ホーム画面にペンディング通知 #### Phase 2: Pro版差別化機能 1. **Advanced Offline Support**(Pro限定) - OCR Fallback(完全圏外でもテキスト抽出) - Background Sync(バックグラウンド自動解析) - Conflict Resolution(同一酒の重複検知) 2. **その他Pro機能強化** - Instagram自動投稿(現在ロック中) - ビジネスアナリティクス(現在ロック中) - Multi-device Sync(新規) #### Phase 3: 長期戦略 1. **エンタープライズ版検討** - 酒販店向け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` - バックグラウンドタスク ### 今後導入すべきパッケージ ```yaml 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時点での削除機能分析)