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

11 KiB
Raw Permalink Blame History

Removed Features Documentation

このドキュメントは、v1.0.5までの開発過程で削除・変更された機能を記録し、将来のPro版開発やAI協調作業のための参考資料として残します。

📋 目次

  1. オフライン「保存して後で解析」機能
  2. OCRベースのオフライン解析
  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実装:

    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_kitText 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. 実装詳細:

    // 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デバイスでの動作サポート

削除された設定:

// 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. 実装方法:

    // 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 SupportPro限定

    • 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 - バックグラウンドタスク

今後導入すべきパッケージ

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