# Ponshu Room Lite プロジェクト全体像（AI共有用）

**作成日**: 2026-01-19
**対象読者**: ChatGPT, Gemini, Perplexity, Claude等のAIアシスタント
**目的**: このプロジェクトの全体像を5分で理解できる統合ドキュメント

---

## 🎯 プロジェクト概要

### アプリ名
**Ponshu Room Lite** - 日本酒を管理・記録するFlutterアプリ

### ビジョン
個人ユーザー向けの日本酒記録アプリから、**Posimai Core**という共通基盤を作り、お香アプリ・ネイルサロンアプリへと展開する。

### ユーザー
- **個人モード**: 日本酒愛好家（記録・分析・ゲーミフィケーション）
- **ビジネスモード**: 飲食店（お品書き作成・Instagram販促・売上分析）

### 技術スタック
```yaml
Frontend: Flutter 3.x (iOS/Android/Web)
State Management: Riverpod 2.x
Local Storage: Hive (NoSQL)
AI Vision: Gemini 2.0 Flash (ラベル認識・スペック抽出)
Backend (将来): Dart Frog + PostgreSQL + Redis
Infrastructure: Synology NAS (16GB) + Docker + VM
Network: Tailscale VPN
CI/CD: Dokploy (自動デプロイ)
```

---

## 📊 現在のステータス（2026年1月19日時点）

### 完了済み
✅ **Phase 1.0**: MVP完成（日本酒登録・カメラOCR・Gemini AI解析）
✅ **Phase 1.5**: UI/UX改善（ダークモード、バッジシステム、フォント切替）
✅ **Phase 2.0-A**: ビジネスモード（セット商品、お品書き作成）
✅ **アーキテクチャ決定**: Synology VM + Dokploy構成を採用

### 進行中
🚧 **Phase 2.0-B**: AI自動化基盤（MCP、自動デプロイ）
🚧 **インフラ構築**: Synology VM設定、Dokployインストール

### 次のステップ
📋 **Week 1-4**: VM準備 → Dokployインストール → Tailscale設定 → Gitea連携
📋 **Phase 3**: お香アプリ展開（Posimai Core共通基盤化）

---

## 🏗️ 最終アーキテクチャ（Synology中心構成）

### 物理構成

```
┌─────────────────────────────────────────────────┐
│        自宅 Synology NAS (16GB RAM)             │
│                                                 │
│  ┌───────────────────────────────────────────┐ │
│  │  DSM (Synology OS)                        │ │
│  │  - Container Manager                      │ │
│  │  - Virtual Machine Manager (VMM)         │ │
│  └───────────────────────────────────────────┘ │
│                                                 │
│  ┌───────────────────────────────────────────┐ │
│  │  VM #1: Ubuntu Server (4GB RAM)           │ │
│  │  ┌─────────────────────────────────────┐ │ │
│  │  │  Dokploy                             │ │ │
│  │  │  - Traefik (Reverse Proxy)          │ │ │
│  │  │  - Docker (App Containers)          │ │ │
│  │  │    - sake-app                       │ │ │
│  │  │    - incense-app                    │ │ │
│  │  │    - nail-salon                     │ │ │
│  │  └─────────────────────────────────────┘ │ │
│  └───────────────────────────────────────────┘ │
│                                                 │
│  ┌───────────────────────────────────────────┐ │
│  │  Docker Containers (DSM直下)              │ │
│  │  - PostgreSQL (データベース)              │ │
│  │  - Redis (キャッシュ)                     │ │
│  │  - Immich (写真管理+CLIP検索)             │ │
│  │  - Ollama (ローカルAI、夜間バッチ）        │ │
│  └───────────────────────────────────────────┘ │
│                                                 │
│  ┌───────────────────────────────────────────┐ │
│  │  Gitea (DSM直下)                          │ │
│  │  - コード管理                             │ │
│  │  - Webhook → Dokploy連携                  │ │
│  └───────────────────────────────────────────┘ │
│                                                 │
└─────────────────────────────────────────────────┘
         ↑
         │ Tailscale VPN
         │
┌─────────────────────────────────────────────────┐
│        開発PC (Windows/Mac)                     │
│  - Cursor / Claude Code                         │
│  - Git → Gitea Push                             │
└─────────────────────────────────────────────────┘
```

### ネットワークフロー

```
外部インターネット
    ↓
Tailscale Funnel (HTTPS公開)
    ↓
https://posimai.ts.net
    ↓
Synology VM (Dokploy)
    ↓
Docker Containers (sake-app, incense-app等)
    ↓ データアクセス
Synology DSM直下 (PostgreSQL, Redis)
```

### メモリ配分（16GB）

| コンポーネント | 割当 | 用途 |
|---------------|------|------|
| DSM本体 | 2GB | Synology OS |
| VM (Dokploy) | 4GB | 自動デプロイ + アプリ |
| PostgreSQL | 2GB | データベース |
| Immich | 2-3GB | 写真管理+AI検索 |
| Ollama | 4GB | ローカルAI（夜間） |
| Redis等 | 1-2GB | キャッシュ |
| 予備 | 1GB | バッファ |

**合計**: 16GB（ギリギリだが実現可能）

---

## 💡 なぜこの構成なのか？

### 採用理由

#### 1. コストゼロ
- ❌ VPS不要（月額¥500-1,000削減）
- ✅ 年間コスト: 電気代のみ（¥9,600/年）

#### 2. レイテンシ最小
- VM ↔ PostgreSQL: 同一物理マシン内（**<1ms**）
- VPS案だと: 1-5ms（ネットワーク経由）

#### 3. データ主権
- すべてのデータが手元（クラウド依存ゼロ）
- 写真・個人情報が外部流出しない

#### 4. Synologyの強みを最大活用
- 16GBメモリを全て使い切る
- VMM（仮想マシン機能）の活用
- Container Managerとの共存

### 比較表：VPS案 vs Synology VM案

| 観点 | VPS + Synology案 | **Synology VM案（採用）** |
|------|-----------------|--------------------------|
| **月額コスト** | ¥1,300 | **¥800** |
| **レイテンシ** | 1-5ms | **<1ms** |
| **メモリ余裕** | Synology: 10GB余裕 | Synology: 1GB余裕 |
| **設定複雑度** | VPS設定 + Tailscale | **VMM設定のみ** |
| **障害時影響** | VPS停止 or Synology停止 | **Synology停止のみ** |

---

## 🔄 開発フロー（自動化）

### 通常の開発作業

```
1. Cursorでコード編集
   ↓
2. git add . && git commit -m "機能追加"
   ↓
3. git push origin main
   ↓ (Gitea Webhook)
4. Dokploy自動デプロイ
   ↓
5. 30秒-2分後、本番環境に反映

開発者がやること: これだけ。
```

### AI自動化（Phase 2B - 将来）

```
1. Claude Code (MCP) が自動コード生成
   ↓
2. 自動テスト実行
   ↓
3. パスしたらGit Push
   ↓
4. Dokploy自動デプロイ
   ↓
5. Slack/Discord通知

開発者の承認: 最終チェックのみ
```

---

## 🛠️ 技術的な重要ポイント

### 1. ポート80/443問題の解決

**問題**: Synology DSMとDokploy（Traefik）が両方Port 80/443を使いたい

**解決**:
- DSM: Port 80/443を維持（管理画面用）
- VM: 独自のIPアドレス（Tailscaleで公開）
- 結果: ポート競合なし

### 2. メモリ不足リスク

**対策**:
- Ollamaは夜間バッチのみ起動（常駐させない）
- Immichは必要時のみ起動
- Dokploy VM: 必要最低限の4GB

### 3. Gemini トークン消費削減

**戦略**:
- 画像ハッシュ値でキャッシュ判定
- 同一画像は再送信しない
- 夜間バッチ処理はOllama（無料）で実施
- 推定コスト: ¥500-1,000/月

### 4. セキュリティ

**対策**:
- Tailscale VPN（ゼロトラストネットワーク）
- 外部公開はFunnelで必要な分のみ
- Git Webhookは署名検証
- 環境変数は.envで管理（Gitにコミットしない）

---

## 📁 プロジェクト構造

### ディレクトリ構成（現在）

```
ponshu_room_lite/
├── lib/
│   ├── models/           # データモデル (Hive)
│   ├── providers/        # Riverpod状態管理
│   ├── screens/          # 画面UI
│   ├── widgets/          # 再利用可能コンポーネント
│   ├── services/         # AI・外部API連携
│   ├── theme/            # テーマ・スタイル
│   └── main.dart
├── docs/
│   └── architecture/     # アーキテクチャ決定記録
├── .claude/
│   └── commands/         # カスタムコマンド
└── pubspec.yaml
```

### 将来の構成（Posimai Core）

```
posimai_core/
├── lib/
│   ├── core/             # 共通機能
│   │   ├── auth/
│   │   ├── camera/
│   │   ├── ai/
│   │   └── gamification/
│   └── apps/
│       ├── sake/         # 日本酒アプリ
│       ├── incense/      # お香アプリ
│       └── nail_salon/   # ネイルサロン
```

---

## 🚀 実装ロードマップ

### Week 1: VM準備
```bash
1. Synology VMM (Virtual Machine Manager) インストール
2. Ubuntu Server 22.04 LTS ダウンロード
3. VM作成 (CPU: 2コア, メモリ: 4GB, ストレージ: 40GB)
```

### Week 2: Dokployインストール
```bash
# VM内で実行
curl -sSL https://dokploy.com/install.sh | sh

# 管理画面アクセス
# http://vm-ip:3000
```

### Week 3: Tailscale設定
```bash
# VM内でTailscaleインストール
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up

# Funnel有効化（HTTPS公開）
tailscale funnel 3000
# → https://vm-name.ts.net でアクセス可能
```

### Week 4: Gitea連携
```yaml
# Dokploy管理画面で設定
Repository: http://synology-ip:3000/user/sake-app.git
Branch: main
Auto Deploy: ON
Environment Variables:
  DATABASE_URL: postgresql://user:pass@synology-ip:5432/posimai
```

---

## 🎓 重要な学び・決定事項

### アーキテクチャ決定

1. **Cloudflare Tunnel は不要** → Tailscale Funnelで十分
2. **VPS は不要** → Synology VM で完結
3. **Dokploy採用** → Vercel的なDX、GitOps実現
4. **Portainerは不使用** → GUIは便利だが自動化に不向き

### 開発原則

- **ずぼら哲学**: 手動作業を最小化、自動化を最大化
- **安全な自動化**: 完全自律型AIではなく、Git-push-triggered
- **データ主権**: クラウド依存を避け、手元にデータを保持
- **段階的実装**: Phase 1 → 2A → 2B → 3と着実に進める

### AI活用方針

- **Gemini 2.0 Flash**: ラベル認識・スペック抽出（リアルタイム）
- **Ollama (Llama 3.3)**: 夜間バッチ処理（無料）
- **Claude Code (MCP)**: コード生成・レビュー（開発支援）
- **Immich CLIP**: 写真検索（セマンティック検索）

---

## 🔗 関連ドキュメント

- [最終アーキテクチャ決定版](./FINAL_ARCHITECTURE_SIMPLIFIED.md)
- [VPS比較分析](./VPS_CRITICAL_COMPARISON.md)
- [アーキテクチャ決定記録](./ARCHITECTURE_DECISION_RECORD.md)
- [図表生成プロンプト](./DIAGRAM_GENERATION_PROMPT.md)

---

## 📝 他AIへの引き継ぎ時の注意点

### このプロジェクトを引き継ぐ際の確認事項

1. **Antigravity = 共同開発者**: Synologyの専門家、インフラ担当
2. **開発者の性格**: 「ずぼら」を自認、自動化・効率化重視
3. **予算制約**: クラウドコストは最小限（月額¥1,000以下）
4. **Synology活用**: 既存の16GB NASを最大限活用する方針
5. **AI駆動開発**: MCP + Claude Codeで開発を自動化する野心的な試み

### よくある質問への回答

**Q: なぜCloudflareを使わないのか？**
A: Tailscale Funnelで十分。既存Tailscaleインフラを活用する方が効率的。

**Q: なぜVPSを使わないのか？**
A: Synology VMで同等の機能を¥0追加コストで実現可能。レイテンシも改善。

**Q: 16GBで足りるのか？**
A: Ollama夜間起動等の工夫で実現可能。実測値で要調整。

**Q: Dokployは安定しているのか？**
A: 2024年登場の新興ツール。Vercel的DXが魅力。Portainerより自動化に適している。

---

## ✅ AIアシスタントへの期待

このドキュメントを読んだAIアシスタントには、以下を期待します：

1. **批判的思考**: ただ同意するのではなく、論理的な疑問を投げかける
2. **代替案提示**: より良い技術・アーキテクチャがあれば提案する
3. **最新情報**: 2026年時点の最新技術動向を反映する
4. **実装支援**: 具体的なコード・設定例を提供する
5. **ドキュメント更新**: 新しい決定事項があれば本ドキュメントを更新する

---

**最終更新**: 2026-01-19
**バージョン**: 1.0
**作成者**: Claude (Anthropic) + 開発者 + Antigravity
