# シーン自動生成機能仕様書

## 概要
プロジェクト情報を活用してシーンの基本構造を自動生成する機能。
手動設定の80%を自動化し、執筆者は詳細調整に集中できる。

## 機能要件

### 1. 自動生成対象
- **シーン設定**: 場所、時間、天候、雰囲気
- **演出指示**: ペース、緊張カーブ、感情の流れ
- **登場キャラクター**: プロジェクト設定から自動選択
- **重要要素**: ジャンル×カテゴリから生成
- **執筆ノート**: 必須要素、避けるべき要素

### 2. 情報取得元
| ファイル | 取得情報 | 優先度 |
|---------|---------|--------|
| `プロジェクト設定.yaml` | ジャンル、主人公名、作品テーマ | 🔴 必須 |
| `30_設定集/キャラクター.yaml` | キャラクター情報、関係性 | 🟡 重要 |
| `20_プロット/全体構成.yaml` | 物語構造、テーマ、キャラクターアーク | 🟡 重要 |
| `50_管理資料/話数管理.yaml` | エピソード情報、進捗状況 | 🟢 補助 |

### 3. コマンドインターフェース
```bash
# 基本的な自動生成
novel scene add <カテゴリ> <シーンID> --auto-design

# テンプレート指定
novel scene add <カテゴリ> <シーンID> --auto-design --template <名前>

# 詳細度指定
novel scene add <カテゴリ> <シーンID> --auto-design --detail-level <レベル>
```

## 非機能要件

### 1. パフォーマンス
- 情報取得・生成処理は2秒以内
- メモリ使用量は50MB以内

### 2. 可用性
- プロジェクト設定ファイルが欠損した場合のエラーハンドリング
- 部分的情報欠損時のフォールバック機能

### 3. 保守性
- ジャンル別・カテゴリ別ルールの外部化
- テンプレートの動的追加対応

## アーキテクチャ設計

### ドメインモデル
```
AutoSceneGenerator (Entity)
├─ ProjectContext (Value Object)
├─ SceneTemplate (Value Object)
├─ GenerationRule (Value Object)
└─ GeneratedScene (Value Object)

ProjectInfoService (Domain Service)
TemplateService (Domain Service)
SceneGenerationService (Domain Service)

ProjectInfoRepository (Repository Interface)
SceneTemplateRepository (Repository Interface)
```

### ユースケース
- `AutoGenerateSceneUseCase`: メインユースケース
- `LoadProjectInfoUseCase`: プロジェクト情報取得
- `ApplyTemplateUseCase`: テンプレート適用

### インフラストラクチャ
- `YamlProjectInfoRepository`: YAML形式のプロジェクト情報取得
- `JsonSceneTemplateRepository`: JSON形式のテンプレート管理

## テストケース

### ユニットテスト（75%）
- ドメインエンティティのビジネスルール
- 値オブジェクトの不変条件
- ドメインサービスのロジック

### 統合テスト（20%）
- ユースケースとリポジトリの連携
- ファイル読み込みと生成ロジックの統合

### E2Eテスト（5%）
- CLIコマンドの動作確認
- 実際のプロジェクトファイルを使用した生成テスト

## 実装計画

### Phase 1: ドメインモデリング
1. ビジネス要求分析
2. エンティティ・値オブジェクト設計
3. ドメインサービス設計
4. リポジトリインターフェース設計

### Phase 2: TDD実装
1. ドメインエンティティのテスト作成（RED）
2. エンティティ実装（GREEN）
3. リファクタリング（REFACTOR）
4. アプリケーション層テスト・実装
5. インフラ層テスト・実装

### Phase 3: 統合・デプロイ
1. CLIコマンド統合
2. 統合テスト実行
3. E2Eテスト実行
4. ドキュメント更新

## リスク・制約事項

### リスク
- プロジェクトファイル形式の変更による互換性問題
- テンプレート管理の複雑化
- 生成内容の品質担保

### 制約
- 既存のSceneUseCaseとの互換性維持
- YAML形式ファイルの依存関係
- パフォーマンス要件の遵守

## 成功基準

### 機能面
- ✅ 自動生成されたシーンがユーザーの80%以上の要求を満たす
- ✅ エラー発生率5%以下
- ✅ 既存機能への影響なし

### 品質面
- ✅ テストカバレッジ90%以上
- ✅ 全テストがTDD手法で作成済み
- ✅ DDD原則に準拠した設計

### ユーザビリティ
- ✅ 使いやすいコマンドインターフェース
- ✅ 明確なエラーメッセージとガイダンス
- ✅ 適切なドキュメント整備

---

**作成日**: 2025年7月19日
**更新日**: 2025年7月19日
**承認者**: Claude Code
**レビュー者**: TBD
