8.0 KiB
8.0 KiB
ai.card 実装完了サマリー
作業日: 2025年6月1日
📋 今日実装した内容
1. データベース実装(PostgreSQL + Supabase)
完成機能
- PostgreSQLスキーマ設計: 7つのテーブル(users, card_master, user_cards, unique_card_registry等)
- Docker Compose環境: 開発・本番両対応
- Supabase連携: 環境変数で切り替え可能
- リポジトリパターン: BaseRepository + 専用Repository
- マイグレーション: Alembic設定 + 初期データ投入
- データ同期: ガチャ時の自動データベース保存
重要ファイル
api/app/db/models.py # SQLAlchemyモデル
api/app/repositories/ # リポジトリパターン実装
api/init_db.py # データベース初期化
docker-compose.yml # 開発環境
docker-compose.production.yml # 本番環境
2. atproto連携機能
完成機能
- 認証システム: DID/ハンドルログイン + JWTトークン
- PDSデータ保存: カードをユーザーのPDSに自動同期
- Lexicon定義:
ai.card.collection
スキーマ - 同期API: 双方向同期・インポート・エクスポート
- データ検証: サーバー側整合性チェック
重要ファイル
api/app/services/atproto.py # atproto統合サービス
api/app/services/card_sync.py # カード同期サービス
api/app/routes/auth.py # 認証API
api/app/routes/sync.py # 同期API
api/app/auth/dependencies.py # 認証依存関係
3. iOS App完全実装
完成機能
- SwiftUI + MVVM: Combineを使ったリアクティブアーキテクチャ
- 認証画面: atprotoログイン(アプリパスワード対応)
- ガチャシステム: 通常・プレミアムガチャ + リッチアニメーション
- カードコレクション: グリッド表示・検索・フィルタ・詳細画面
- プロフィール: ユーザー情報・統計・設定
- 視覚エフェクト: レアリティ別アニメーション・3Dフリップ
重要ファイル
ios/AiCard/AiCard/
├── Models/Card.swift # カードデータモデル
├── Services/APIClient.swift # API通信(Combine使用)
├── Services/AuthManager.swift # 認証管理
├── Services/CardManager.swift # カード管理
├── Views/LoginView.swift # ログイン画面
├── Views/GachaView.swift # ガチャ画面
├── Views/CollectionView.swift # コレクション画面
├── Views/CardView.swift # カード表示コンポーネント
└── Views/GachaAnimationView.swift # ガチャアニメーション
4. プロジェクト統合
アーキテクチャ概要
[iOS App] ←→ [Web App] ←→ [FastAPI] ←→ [PostgreSQL]
↕
[atproto PDS]
データフロー
- ガチャ: iOS/Web → API → DB保存 → atproto PDS同期
- 認証: atproto DID → JWT → セッション管理
- 同期: DB ↔ atproto PDS双方向同期
📊 実装済み機能一覧
✅ Backend (FastAPI)
- PostgreSQL + Supabase対応
- atproto認証・同期
- ガチャシステム(確率・unique管理)
- カードCRUD API
- Docker環境(開発・本番)
- リポジトリパターン
- データベースマイグレーション
✅ Frontend (React)
- atproto認証UI
- ガチャアニメーション(Framer Motion)
- カード表示・コレクション
- レスポンシブデザイン
- TypeScript対応
✅ Mobile (iOS)
- SwiftUI + MVVM + Combine
- atproto認証
- ガチャ(通常・プレミアム)
- カードコレクション(検索・フィルタ)
- リッチアニメーション
- iOS 16.0+ 対応
✅ DevOps
- Docker Compose
- Cloudflare Tunnel対応
- 環境別設定
- ヘルスチェック
🔧 技術スタック
Backend
- Language: Python 3.11
- Framework: FastAPI 0.104.1
- Database: PostgreSQL + SQLAlchemy
- ORM: SQLAlchemy 2.0 (async)
- Migration: Alembic
- Cloud: Supabase対応
- atproto: atproto SDK 0.0.46
Frontend (Web)
- Language: TypeScript
- Framework: React 18 + Vite
- Animation: Framer Motion
- HTTP: Axios
- Styling: CSS Modules
Mobile (iOS)
- Language: Swift 5.7+
- Framework: SwiftUI
- Architecture: MVVM + Combine
- HTTP: URLSession
- Minimum: iOS 16.0
Infrastructure
- Container: Docker + Docker Compose
- Proxy: Nginx
- Tunnel: Cloudflare Tunnel
- Database: PostgreSQL 16
🎯 unique カードシステムの実装
概念
- 確率: 0.0001%(10万分の1)
- 唯一性: 各カードID(0-15)につき世界で1人のみ所有可能
- 検証: サーバー側 + atproto PDS両方でチェック
- 将来: ai.verse unique skillとの連携予定
実装詳細
unique_card_registry
テーブルでグローバル管理- ガチャ時にatomic操作で重複防止
- atproto PDSにも同期保存
- Web/iOSで特別なエフェクト表示
🚀 デプロイメント準備
開発環境起動
# 全体起動
docker-compose up -d
# データベース初期化
docker-compose exec api python init_db.py
# Web開発サーバー
cd web && npm run dev
# iOS(Xcodeで開く)
open ios/AiCard/AiCard.xcodeproj
本番環境起動
# 本番設定で起動
docker-compose -f docker-compose.production.yml up -d
📝 重要な設定ファイル
環境変数(.env)
# Database
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/aicard
DATABASE_URL_SUPABASE=postgresql+asyncpg://...
USE_SUPABASE=false
# atproto
ATPROTO_HANDLE=your.bsky.social
ATPROTO_PASSWORD=your-app-password
# Security
SECRET_KEY=your-secret-key
# Cloudflare Tunnel
CLOUDFLARE_TUNNEL_TOKEN=your-tunnel-token
API設定
- 開発:
http://localhost:8000
- 本番:
https://api.card.syui.ai
- 認証: Bearer JWT token
- CORS: Web/iOS対応
🔮 今後の実装候補
Phase 1: 運用準備
- 統合テスト(全システム連携)
- パフォーマンス最適化
- モニタリング・ログ
- セキュリティ監査
Phase 2: 機能拡張
- カード交換システム
- プッシュ通知(iOS)
- リアルタイム同期(WebSocket)
- バックアップ・復元
Phase 3: エコシステム統合
- ai.gpt連携
- ai.verse unique skill連携
- yui system実装
- 分散SNS連携
🎮 ゲーム仕様
カードシステム
- 種類: 16種類(ai, 夢幻, 光彩, 中性子, 太陽, 夜空, 雪, 雷, 超究, 剣, 破壊, 地球, 天の川, 創造, 超新星, 世界)
- CP: 1-999(レアリティでボーナス)
- レアリティ: 5段階(normal, rare, super_rare, kira, unique)
ガチャ確率
- Normal: 99.789%
- Rare: 0.1%
- Super Rare: 0.01%
- Kira: 0.1%
- Unique: 0.0001%(隠し機能)
演出
- Web: CSS + Framer Motion
- iOS: SwiftUI Animation + Particle Effects
- レアリティ別: 色・エフェクト・音(予定)
💡 AI向けメモ
プロジェクト理解のキーポイント
- 存在子理論: 最小単位の意識がゲーム世界の根幹
- yui system: 現実の個人とゲーム内要素の1:1紐付け
- データ主権: atproto PDSでユーザーがデータを所有
- uniqueカード: NFT的だがブロックチェーン不使用
重要な実装パターン
- リポジトリパターン: データアクセス層の抽象化
- atproto同期: ガチャ時の自動PDS保存
- レアリティシステム: 確率とエフェクトの連動
- 認証フロー: DID → JWT → セッション管理
次回作業時の注意点
- 環境変数の設定確認
- データベースの初期化
- atprotoアカウントの準備
- Docker環境の起動確認