ponshu-room-lite/docs/archive/REMOVED_FEATURES.md

306 lines
11 KiB
Markdown
Raw Normal View History

# 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ビットARMarmeabi-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 5s2013年以降全て元々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 Flashgoogle_generative_ai ^0.4.6
- **ローカルDB**: Hive 2.2.3NoSQL、暗号化対応
- **状態管理**: Riverpod 2.6.1Provider 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 syncPhase 2
# google_mlkit_text_recognition: ^0.13.1 # OCR FallbackPhase 2
```
---
## 変更履歴
- 2026-01-31: 初版作成v1.0.5時点での削除機能分析)