複雑なタスクの分解術
大きな機能を「丸投げ」してもAIは困ってしまいます。複雑なタスクを適切に分解し、順序立てて依頼することで、高品質なコードを効率的に生成できます。
なぜタスク分解が必要なのか
丸投げの問題点
- ✗ AIが全体像を把握しきれない
- ✗ 中間成果物の確認ができない
- ✗ 問題が起きた時に原因特定が困難
- ✗ 出力が長すぎて途中で切れる
- ✗ 品質にばらつきが出る
分解のメリット
- ○ 各ステップで品質を確認できる
- ○ 問題があればすぐ修正できる
- ○ AIが集中して高品質な出力を生成
- ○ 進捗が可視化される
- ○ 学習・理解が深まる
タスク分解の基本原則
1. 依存関係を意識する
後続のタスクが必要とするものを先に作る
データベースモデル → API → フロントエンドUI
型定義 → ユーティリティ関数 → コンポーネント
設定ファイル → 初期化処理 → メイン機能
型定義 → ユーティリティ関数 → コンポーネント
設定ファイル → 初期化処理 → メイン機能
2. テスト可能な単位で区切る
各ステップの完了を確認できるようにする
✗ 「認証機能を作って」(完了の判断が曖昧)
○ 「ログインAPIを作って、curl で動作確認できるようにして」
○ 「ログインAPIを作って、curl で動作確認できるようにして」
3. 1タスク = 1関心事
複数の異なる関心事を混ぜない
✗ 「ユーザー登録とメール送信と管理画面を作って」
○ 「ユーザー登録APIを作って」→「メール送信機能を追加して」→...
○ 「ユーザー登録APIを作って」→「メール送信機能を追加して」→...
実践的な分解パターン
パターン1:レイヤー別分解(フルスタック機能)
新機能を追加する際の王道パターン
Step 1
データベースモデル・マイグレーション
Step 2
Pydantic スキーマ(リクエスト/レスポンス)
Step 3
サービス層(ビジネスロジック)
Step 4
APIエンドポイント
Step 5
APIクライアント(フロントエンド)
Step 6
UIコンポーネント
Step 7
ページ統合・ルーティング
パターン2:CRUD別分解
データ操作機能を段階的に追加
Create
新規作成機能
Read
一覧・詳細表示
Update
編集機能
Delete
削除機能
パターン3:ハッピーパス → エッジケース
まず正常系を完成させ、その後で異常系を追加
Phase 1: 正常系のみで動く最小実装
Phase 2: バリデーション追加
Phase 3: エラーハンドリング追加
Phase 4: エッジケース対応
AIに分解を手伝ってもらう
タスクの分解自体をAIに相談できます。
分解を依頼するプロンプト
以下の機能を実装したいです。実装の順序を教えてください。 【機能】 プロジェクト管理ツールに「タスクのコメント機能」を追加したい 【要件】 - タスクにコメントを追加できる - コメントの編集・削除ができる(投稿者のみ) - コメントにはメンション機能がある(@ユーザー名) - メンションされたユーザーに通知が届く 【技術スタック】 - Backend: FastAPI + SQLAlchemy + MySQL - Frontend: Next.js + TypeScript 【質問】 1. どのような順序で実装すべきですか? 2. 各ステップで作成するファイルは何ですか? 3. 各ステップの完了確認はどうすればいいですか?
AIの回答を受けて:提案された分解を確認し、納得できたら「では Step 1 から始めてください」と進めます。調整が必要なら「Step 2 と 3 は同時にやって」など修正を指示します。
実践例:コメント機能の分解
1
Comment モデルとマイグレーション
「backend/app/models/comment.py を作成。task_id, user_id, content, created_at, updated_at。マイグレーションも実行して」
2
コメントCRUD API
「POST/GET/PUT/DELETE の基本APIを作成。Swagger UIで動作確認できるようにして」
3
フロントエンドのコメント表示
「タスク詳細画面にコメント一覧を表示。APIから取得して表示するだけでOK」
4
コメント投稿フォーム
「コメント入力欄と送信ボタンを追加。投稿後は一覧を更新」
5
編集・削除機能
「自分のコメントに編集・削除ボタンを表示。モーダルまたはインライン編集で」
6
メンション機能
「@を入力したらユーザー候補を表示。選択したらリンクとして保存」
7
通知機能
「メンションされたユーザーに通知を作成。通知一覧画面も追加」
まとめ
- ✓ 丸投げは避ける - 大きなタスクを一度に依頼しない
- ✓ 依存関係を意識 - 後続タスクが必要とするものを先に作る
- ✓ テスト可能な単位で - 各ステップの完了を確認できるようにする
- ✓ 分解パターンを活用 - レイヤー別、CRUD別、ハッピーパス優先など
- ✓ AIに分解を相談 - 分解自体もAIに手伝ってもらえる