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