はじめに
前回は Specification(仕様書) を作成しました。
この時点ではまだ Terraform は1行も書いていません。
完成したのは、
- Requirements
- User Story
- Acceptance Criteria
などを含む 仕様書(spec.md) です。
今回は、その仕様書をもとに
- Plan(設計)
- Tasks(タスク分解)
- Analyze(整合性チェック)
を実施していきます。
ここからいよいよ
「どう作るか」
をAIと一緒に考えていきます。
Planとは?
最初は
Specification があるなら、そのまま Terraform を作ればいいのでは?
と思っていました。
しかし SpecKit では、
その間に
という工程があります。
つまり、
仕様から
設計書
を作る工程です。
Cursor Agentへ依頼
まずは Plan を作成します。
入力した内容はこちらです。
/speckit-plan
specs/001-aws-waf-alb/spec.md の仕様に基づいて、
Terraform実装計画を作成してください。
方針:
- まだ実装はしない
- Terraform module構成を設計する
- variables / tfvars による環境差分管理
- CloudWatch Logs設計
- ALB関連付け
- ロールバック方針
- 日本語で作成する
ここでも
「まだ実装はしない」
という指示を入れています。
AIが設計書を作成
Agentは
plan.md
research.md
data-model.md
contracts/
quickstart.md
など、
設計書一式を生成しました。
正直、
ここまで細かく作られるとは思っていませんでした。
module構成まで考えてくれる
例えば、
Terraform構成として
modules/
waf-alb/
environments/
stg/
prd/
という構成を提案してくれました。
さらに、
環境差分についても
- stg → Count
- prd → Block
を
variables と tfvars で切り替える設計になっていました。
CloudWatch Logsまで設計される
Planには
CloudWatch Logsも含まれていました。
例えば
aws-waf-logs-waf-alb-stg
aws-waf-logs-waf-alb-prd
など、
ロググループ名まで整理されています。
単なる Terraform コード生成ではなく、
設計書
になっています。
次はTasks
設計が終わると
次は
/speckit-tasks
です。
ここでは
設計書から
実装タスクへ分解されます。
AI が 39 タスクへ分解
結果はこちらでした。
全部で
39 タスク
です。
最初は
多すぎる!
と思いました(笑)
しかし内容を見ると、
非常に細かく分割されていました。
例えば、
というように、
1ファイル単位でタスク化されています。
並列実行まで考えてくれる
さらに驚いたのが、
並列実行できるタスクまで提案してくれたことです。
例えば
T002
T003
T004
は
互いに依存しないため
並列実行可能
という整理までしてくれました。
AIが
プロジェクトマネージャーのような役割をしてくれています。
Analyzeも試してみる
ここで
/speckit-analyze
も実施しました。
これは
の整合性チェックです。
指摘された内容
Analyzeでは
重大な問題はありませんでした。
しかし、
改善点として
以下が提案されました。
- backend設計を明確にする
- WAFのWCU確認
- CloudWatch Metricsの整理
つまり、
コードではなく
設計
に対するレビューです。
ここが普通のAIチャットとの違いでした。
AIの指摘を採用してみる
今回は
AIから提案された
- backend
- WCU
- metrics
について、
PlanとTasksへ反映してもらいました。
その結果、
39 タスクへ増え、
さらに品質が向上しました。
この流れも
仕様駆動開発らしいところだと思います。
実装前なのにレビューができる
個人的に一番良いと思ったのは
まだTerraformを書いていない
ことです。
それでも
設計レビュー
タスクレビュー
整合性レビュー
が終わっています。
従来なら
Terraformを書いてから
レビューしていた内容です。
AIとのやり取りも変わる
以前なら
Terraformを書いてください
でした。
しかし今回は
設計を見直してください
↓
タスクを整理してください
↓
整合性を確認してください
という会話になりました。
AIを
コーディングツールではなく
設計レビューア
として使っている感覚でした。
次回予告
次回はいよいよ
/speckit-implement
を実行します。
ここから
AIがTerraformコードを生成し、
AWS WAFを構築していきます。
途中では
- Terraform Backend問題
- bootstrap追加
- WAF descriptionエラー
- ALBアタッチ不要への仕様変更
など、
実際の開発らしい試行錯誤も発生しました。
そのあたりも含めて紹介したいと思います。
おわりに
今回の工程で感じたのは、
SpecKit は
「コードを書く前の品質」を上げるためのツール
だということです。
設計書を作り、
タスクを分解し、
さらにAI自身がレビューまでしてくれます。
Terraformを書く前なのに、
かなり完成度の高い設計が出来上がりました。
次回はいよいよ Implement編 として、
Terraformを生成し、AWS WAFを実際に構築していきます。