# Phase 2: 実装計画概要

**ステータス:** 計画中
**開始予定:** Phase 1 完了後
**期間:** 2-3ヶ月
**目標:** 高度な実行機能とエコシステムの構築

---

## Phase 2 の目標

Phase 1で構築したシンプルで堅牢な基盤の上に、以下の高度な機能を追加します:

1. **並列・非同期実行の完全サポート**
2. **グラフベースワークフロー**
3. **可視化とモニタリング**
4. **拡張性とエコシステム**

---

## 実装する機能

### Phase 2a: 並列・非同期実行 (Issue #21-25)

| Issue | タイトル | 説明 | 優先度 | 見積もり |
|-------|---------|------|--------|---------|
| #21 | 並列パイプライン実行 | 依存関係のないノードの並列実行 | 高 | 3日 |
| #22 | async_pipeline完全サポート | 同期・非同期混在パイプライン | 高 | 3日 |
| #23 | ストリーミング処理 | 大量データの効率的処理 | 中 | 4日 |
| #24 | バッチ実行サポート | 複数データの一括処理 | 中 | 2日 |
| #25 | タイムアウト管理 | ノード・パイプライン単位のタイムアウト | 中 | 2日 |

### Phase 2b: グラフベース実行 (Issue #26-30)

| Issue | タイトル | 説明 | 優先度 | 見積もり |
|-------|---------|------|--------|---------|
| #26 | graph.yaml定義 | YAML形式でのグラフ定義 | 高 | 3日 |
| #27 | 依存関係解決エンジン | トポロジカルソートによる実行順序解決 | 高 | 4日 |
| #28 | 循環依存検出 | グラフの検証機能 | 中 | 2日 |
| #29 | 条件分岐サポート | if/switch ノードの実装 | 中 | 3日 |
| #30 | ループ処理サポート | for/while ノードの実装 | 中 | 3日 |

### Phase 2c: 可視化とモニタリング (Issue #31-35)

| Issue | タイトル | 説明 | 優先度 | 見積もり | ステータス |
|-------|---------|------|--------|---------|-----------|
| #31 | Mermaid図生成 | グラフのMermaid形式出力 | 中 | 2日 | ✅ 作成済 |
| #32 | メトリクス収集 | 実行時間、エラー率等の収集 | 高 | 3日 | ✅ 作成済 |
| #33 | WebUI基本実装 | FastAPIベースの可視化UI | 中 | 5日 | ✅ 作成済 |
| #34 | リアルタイム実行モニタリング | WebSocketでの進捗表示 | 低 | 4日 | ✅ 作成済 |
| #35 | メトリクスエクスポート | Prometheus/Grafana連携 | 低 | 3日 | ✅ 作成済 |

### Phase 2d: 拡張性とエコシステム (Issue #36-40)

| Issue | タイトル | 説明 | 優先度 | 見積もり | ステータス |
|-------|---------|------|--------|---------|-----------|
| #36 | プラグインシステム | カスタムノードの動的ロード | 中 | 4日 | ✅ 作成済 |
| #37 | 通知システム | Slack/メール/Webhook通知 | 中 | 3日 | ✅ 作成済 |
| #38 | 状態管理 | ワークフロー実行状態の永続化 | 中 | 4日 | ✅ 作成済 |
| #39 | 外部ストレージ連携 | S3/GCS等への出力サポート | 低 | 3日 | ✅ 作成済 |
| #40 | スケジューラー統合 | cron/APSchedulerとの統合 | 低 | 3日 | ✅ 作成済 |

---

## 実装方針

### 1. TDDのベストプラクティス

- **Red-Green-Refactor サイクル厳守**
- テストファースト: 実装前にテストを書く
- 小さな単位での実装とテスト
- カバレッジ90%以上を維持

### 2. 関数型パラダイム

- **純粋関数**: 副作用のない関数設計
- **イミュータブル**: データの不変性を保つ
- **合成可能**: 小さな関数の組み合わせ
- **型安全**: 完全な型ヒント

### 3. 段階的な実装

- Phase 2a → 2b → 2c → 2dの順に実装
- 各Phase完了時に統合テストとドキュメント更新
- ユーザーフィードバックを次Phaseに反映

### 4. 後方互換性

- Phase 1のAPIは変更しない
- 新機能はオプトイン方式
- 既存プロジェクトがそのまま動作すること

---

## 技術スタック (追加)

### Phase 2で追加するライブラリ

| ライブラリ | 用途 | バージョン |
|-----------|------|----------|
| networkx | グラフ構造の管理 | 最新安定版 |
| fastapi | WebUI バックエンド | 最新安定版 |
| uvicorn | FastAPI サーバー | 最新安定版 |
| websockets | リアルタイム通信 | 最新安定版 |
| prometheus-client | メトリクスエクスポート | 最新安定版 |
| apscheduler | スケジューラー | 最新安定版 |
| aiohttp | 非同期HTTP通信 | 最新安定版 |
| aiofiles | 非同期ファイルIO | 最新安定版 |

---

## 成功基準

### Phase 2a完了条件
- ✅ 並列パイプラインで複数ノードが並行実行可能
- ✅ async_pipeline()で同期・非同期ノードを混在可能
- ✅ ストリーミング処理で大量データを効率的に処理
- ✅ テストカバレッジ90%以上
- ✅ ドキュメントとサンプルコード完備

### Phase 2b完了条件
- ✅ graph.yamlで複雑な依存関係を定義可能
- ✅ トポロジカルソートによる最適な実行順序
- ✅ 循環依存を検出しエラー報告
- ✅ 条件分岐とループ処理が動作
- ✅ テストカバレッジ90%以上

### Phase 2c完了条件
- ✅ Mermaid形式でグラフを可視化
- ✅ メトリクスが正確に収集・記録される
- ✅ WebUIで実行状況を確認可能
- ✅ Prometheus/Grafanaと連携可能
- ✅ ドキュメントとチュートリアル完備

### Phase 2d完了条件
- ✅ プラグインで拡張機能を追加可能
- ✅ 通知システムで各種サービスに通知
- ✅ ワークフロー状態を永続化
- ✅ 外部ストレージとの連携が動作
- ✅ スケジューラーとの統合が動作

---

## 開発スケジュール（目安）

```
Month 1: Phase 2a (並列・非同期実行)
Week 1-2: Issue #21-23 実装とテスト
Week 3-4: Issue #24-25 実装とテスト + 統合テスト

Month 2: Phase 2b (グラフベース実行)
Week 1-2: Issue #26-28 実装とテスト
Week 3-4: Issue #29-30 実装とテスト + 統合テスト

Month 3: Phase 2c-2d (可視化とエコシステム)
Week 1-2: Issue #31-33 実装とテスト (高優先度のみ)
Week 3: Issue #36-37 実装とテスト (高優先度のみ)
Week 4: 統合テスト、ドキュメント、リリース準備
```

---

## Phase 2以降の展望

### Phase 3 (将来)
- 分散実行サポート (Celery/Dask)
- クラウドサービス統合 (AWS/GCP/Azure)
- Kubernetes Operator
- MLOps パイプライン対応

---

**次のステップ:**
1. Phase 2aのIssue #21から順番に実装開始
2. 各Issue完了時にPROGRESS.mdを更新
3. Phase 2a完了後、ユーザーフィードバックを収集
4. Phase 2bの詳細計画を調整

**Phase 1の成果を活かし、より強力で柔軟なフレームワークを構築します！**
