58 lines
3.4 KiB
Markdown
58 lines
3.4 KiB
Markdown
---
|
||
description: "spec-driven development"
|
||
---
|
||
|
||
Claude Code を用いた spec-driven development を行う
|
||
|
||
## spec-driven development とは
|
||
|
||
spec-driven development は、以下の 5 つのフェーズからなる開発手法である。
|
||
|
||
### 1. 事前準備フェーズ
|
||
|
||
- ユーザーが Claude Code に対して、実行したいタスクの概要を伝える
|
||
- `mkdir -p ./.specs` を実行する
|
||
- `./.specs` 内にタスクの概要から適切な spec 名を考えて、その名前のディレクトリを作成する
|
||
- たとえば、「記事コンポーネントを作成する」というタスクなら `./.specs/create-article-component` を作成する
|
||
- 以下ファイルを作成するときはこのディレクトリの中に作成する
|
||
|
||
### 2. 要件フェーズ
|
||
|
||
- Claude Code がユーザーから伝えられたタスクの概要に基づいて、タスクが満たすべき`requirements.md`を作成する
|
||
- Claude Code がユーザーに対して`requirements.md`を提示し、問題がないかを尋ねる
|
||
- ユーザーが`requirements.md`を確認し、問題があれば Claude Code に対してフィードバックする
|
||
- ユーザーが`requirements.md`を確認し、問題がないと答えるまで`requirements.md`に対して修正を繰り返す
|
||
|
||
### 3. 設計フェーズ
|
||
|
||
- Claude Code は、`requirements.md`に記載されている要件を満たすような設計を記述した`design.md`を作成する
|
||
- Claude Code がユーザーに対して`design.md`を提示し、問題がないかを尋ねる
|
||
- ユーザーが`design.md`を確認し、問題があれば Claude Code に対してフィードバックする
|
||
- ユーザーが`design.md`を確認し、問題がないと答えるまで`design.md`に対して修正を繰り返す
|
||
|
||
### 4. 実装計画フェーズ
|
||
|
||
- Claude Code は、`design.md`に記載されている設計を実装するための`implementation-plan`を作成する
|
||
- PR の単位ごとにファイルを分けて欲しい (`implementation-plan-1`, `implementation-plan-2`, ..)
|
||
- `implementation-plan`には以下の内容を含める:
|
||
- **PR と commit の単位を意識した実装の流れ**
|
||
- PR の単位は重要:レビュー可能な単位で分割する
|
||
- commit は参考程度:実装中に適宜調整可能
|
||
- **チェックボックス形式の進捗管理**
|
||
- 各タスクにチェックボックスを用意し、進捗が瞬時にわかるようにする
|
||
- **大まかな実装の流れ**
|
||
- 具体的な設計は`design.md`に記載されているため、実装計画では大まかな流れのみを記述
|
||
- 実装順序の基本方針:
|
||
1. ドメインロジック(domain 層)から実装
|
||
2. ユースケース層(use-cases 層)を実装
|
||
3. 既存のバックエンド(GraphQL、REST API 等)と接続
|
||
4. フロントエンドと接続
|
||
- Claude Code がユーザーに対して`implementation-plan`を提示し、問題がないかを尋ねる
|
||
- ユーザーが`implementation-plan`を確認し、問題があれば Claude Code に対してフィードバックする
|
||
- ユーザーが`implementation-plan`を確認し、問題がないと答えるまで`implementation-plan`に対して修正を繰り返す
|
||
|
||
### 5. 実装フェーズ
|
||
|
||
- Claude Code は、`implementation-plan.md`に基づいて実装を開始する
|
||
- 実装するときは`requirements.md`,`design.md`に記載されている内容を守りながら実装すること
|