# Issue #34: 並列実行サポート（将来検討）

## 優先度: 低（将来検討）

## 概要

複数の独立したノードを並列実行するサポート。パフォーマンス向上が見込める場合に検討。

## 背景

外部監査で提案されたが、以下の理由から現時点では優先度を下げる:

1. **シンプルさの維持**: Railway Framework の核心は「シンプルで型安全なパイプライン」
2. **複雑性の増加**: 並列実行は依存関係管理、エラーハンドリングを複雑化
3. **既存ツールの活用**: `asyncio.gather` や `concurrent.futures` で代替可能

## 提案されたアプローチ

### DAG ベースのパイプライン

```python
# 将来的な構文案
result = parallel_pipeline(
    [fetch_users, fetch_orders],  # 並列実行
    merge_data,                    # 上記の結果をマージ
    generate_report
)
```

### 現状での代替方法

```python
import asyncio

async def parallel_fetch():
    users, orders = await asyncio.gather(
        fetch_users_async(),
        fetch_orders_async()
    )
    merged = merge_data(users, orders)
    return generate_report(merged)
```

## 検討事項

### メリット

- I/O バウンドなワークロードでのパフォーマンス向上
- 宣言的な並列処理の記述

### デメリット

- API の複雑化
- デバッグの難易度上昇
- 依存関係の明示が必要

## 将来の実装方針

実装する場合は以下の方針を検討:

1. **段階的導入**: 既存の `typed_pipeline` とは別の関数として提供
2. **明示的な依存関係**: DAG を明示的に定義
3. **エラーハンドリング**: 部分的失敗の明確なセマンティクス

```python
from railway import parallel, sequential

result = pipeline(
    parallel(fetch_users, fetch_orders),  # 並列
    sequential(merge_data, generate_report)  # 直列
)
```

## 受け入れ条件

- [ ] ユースケースの収集と優先度の再評価
- [ ] プロトタイプ実装（必要に応じて）
- [ ] ドキュメントでの代替方法の説明

## 関連

- 外部監査（2026-01-22）: 将来検討
- asyncio モジュール
- concurrent.futures モジュール
- Airflow, Prefect などの DAG ベースツール
