396 lines
14 KiB
Markdown
396 lines
14 KiB
Markdown
|
|
# 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
|