第9部:実践プロジェクト Step 32 / 36

アーキテクチャ決定

AIと技術選定を行い、プロジェクトのアーキテクチャを決定します。

AIと技術選定

AIへの相談

TaskFlowのアーキテクチャを相談させてください。

【要件】
- リアルタイム同期が必要
- 同時接続100人程度
- チーム開発しやすい構造

【質問】
1. リアルタイム同期: WebSocket vs SSE vs ポーリング?
2. 状態管理: Zustand vs TanStack Query vs Context?
3. バックエンド構成: モノリス vs マイクロサービス?

各選択肢のトレードオフを教えてください。

決定事項

リアルタイム: WebSocket

双方向通信が必要なため。FastAPIの組み込みWebSocketを使用。

状態管理: Zustand + TanStack Query

サーバー状態はTanStack Query、UIの状態はZustand。

バックエンド: モノリス + レイヤードアーキテクチャ

規模的にモノリスで十分。API/Service/Repository層で分離。

ディレクトリ構成

taskflow/
├── frontend/
│   ├── src/
│   │   ├── app/              # Next.js App Router
│   │   ├── components/       # 共通コンポーネント
│   │   ├── features/         # 機能別モジュール
│   │   │   ├── auth/
│   │   │   ├── projects/
│   │   │   └── tasks/
│   │   ├── hooks/
│   │   └── lib/
│   └── ...
├── backend/
│   ├── app/
│   │   ├── api/              # エンドポイント
│   │   ├── services/         # ビジネスロジック
│   │   ├── repositories/     # データアクセス
│   │   ├── models/           # SQLAlchemyモデル
│   │   └── websocket/        # WebSocket処理
│   └── ...
└── docker-compose.yml
要件定義 次へ:実装フェーズ1