Claude codeは電気ひつじの夢を見るか
タイトルは完全に釣りです😝
数カ月前から、Claude codeを使った開発というものをやってみています。当初はVibe Codingという感じで、最初のプロンプトで要件をすべて与え、後はその都度Claude codeからの質問に答える形でWebアプリを生成するという形でやってみていました。
ところが、これが、ぜんぜん思ったものが出来ません。笑ってしまうくらい出来ません(笑)
仕様駆動開発
そんなこんなで四苦八苦していたところ、AIコーディング界に「仕様駆動開発」という言葉が飛び込んで来ました。この「仕様駆動開発」というものは、もともとはAmazonが作った「Kiro」という開発IDE(エディタ)に付いていた、ひとつの機能でした。このKiroは、普通にダウンロードして使うという事が出来ず、使うためにはウェイティングリストに登録し、招待されるのを待つ必要があったためすぐに試してみるというわけにはいきませんでした。それまでは、試した人のblogなどを読むくらいしかすることが出来ず、自分で仕様駆動開発を体験してみることは出来ませんでした。
しかし、そんな便利そうなものを、AIツール開発界隈がみすみすと見過ごすはずもなく、ほどなくGitHubが「Spec-kit」というものを発表します。これは、Claude codeとGemini CLIで仕様駆動開発をすることが出来るライブラリでした。
Spec-kit
私のプライベートメールアドレスへはKiroの招待が来ていたのですが、仕事で使うメールアドレスは登録していなかったので、仕事でKiroを使うことが出来ずとりあえずGitHubのSpec-kitを使ってみることにしました。
Spec-kitを使ってみることにしたのはいいのですが、「仕様駆動開発」というものをちゃんと理解しないで始めたので、いろいろハマります。
まず最初に「要件定義」をClaude codeに伝え、「仕様書」を作成するのですが、作成するアプリケーション全体の要件を、すべて要件定義書に書いてしまったため、Claude codeが作成してくる仕様書が膨大になってしまい、これでは仕様の確認に時間が掛かり過ぎてしまいます。
そこで、作成するアプリの要件を、機能毎に分割しておきます。通常の開発時に分割する粒度で分割します。そして、要件定義に「Step 1」のように、開発する順番に分けて記述しておきます。そして、Spec-kitの「specify」で要件を伝える時に「◯◯というファイルのStep 1を要件として仕様書を作成します」とするようにします。
こうすることで、機能ひとつにフォーカスした仕様書を作成してくれます。壁打ちもStep 1の範疇を越えないので、仕様書が巨大化しません。Step 1を越える要素があったとしても「この要件はStep 2の範疇ですが、Step 1で実装しますか?」と訊いてくるので、Step 1でやっといてもいいかな?という場合には「Step 1で実装します」と返せばStep 1の仕様書に取り込んでくれます。
スクラム開発
こんな感じでClaude codeに開発をやらせてみたところ、それまでの苦労はなんだったのかというくらい開発という作業をコントロール出来るようになりました。この状態で機能を2〜3個作ってみたところで、ふと「これってなんかに似てるな?」と気付きました。そうです「スクラム開発」です。
スクラム開発では、1〜2週間で開発出来る粒度で開発作業の分割を行い、作業者に割り振ってCIしていきますが、この開発作業をClaude codeがやってくれている感覚でした。
現在は、新規機能作成・追加の時はSpec-kitを使い、機能自体をさらに細かく分割し要件定義書を作成し、その要件定義書に沿って開発させています。修正に関してはこちらで仕様書を作成し、Claude codeと壁打ちしながら曖昧なところをなくしてから開発させています。
AIを使うことの意味
AIを使う利点として、「人間が検索するより正確」とはよく言われますが、こういう開発スタイルを取っていると、仕様を決める時に本当に実現可能なのか、実装する時にオフィシャルサイト(しかも英語で書いてあることが多い)をじっくり読んだりする作業を、AIが代わりに、人間が行うより早く正確に行ってくれるので、開発自体の速度が上がっているのを実感出来ます。
Discussion