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

306 lines
11 KiB
Markdown
Raw Permalink 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.

# 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時点での削除機能分析)