Vue のカスタムブロックで「気軽に」始める仕様駆動開発のススメ – ANDPAD Tech Blog

ANDPAD フロントエンドエンジニアの小泉( @ykoizumi0903 )です。主に Vue で開発を行っています。

2025 年も終わりに近づいていますが、ここ 1 年のホットなトピックといえば、何とも言っても AI コーディング。

これまでの開発スタイルでは考えられない速度が出せるため、いかに AI を使いこなすかがエンジニアの生産性を大きく左右するようになっています。1 年前の今頃は、まだ Cline も Claude Code も GitHub Copilot Agent Mode も登場していなかったというのが信じられないですね……。

この記事では、そんな AI エージェントを上手く活用する方法である「仕様駆動開発」を、 Vue ならではの方法 で取り入れるアプローチについて紹介します。

【PR】

本題に入る前に宣伝です。いよいよ今週末(10/25)に迫った Vue Fes Japan 2025、アンドパッドは今年もスポンサーします。スポンサーブースではノベルティやクイズ企画などを用意していますので、参加される方はぜひお立ち寄りください!

昨年のブースの様子です

「仕様駆動開発」を実際に取り入れる難しさ

さて、AI 開発において、ここ数ヶ月で「仕様駆動開発(Spec-Driven Development)」というワードを耳にする機会が増えました。「振る舞い駆動開発(Behavior-Driven Development)」と呼ばれることもあります。

チャットベースで曖昧な指示を渡す代わりに、最初に厳密な仕様(スペック)を定義し、その仕様書を AI と人間の共通言語として開発を進めるこのアプローチは、AI の出力の品質や保守性を担保しやすく、特に GitHub Copilot Coding Agent のような自律型 AI エージェントを活用する上で効果を発揮します。

一方で、仕様駆動開発では、タスクのゴールや全体の設計をコードを書く前にイメージし、それを正確な自然言語に落とし込む能力が求められます。これは、実際に手を動かしてコードを書くことで、曖昧な要件を少しずつ明確にしていくボトムアップの開発スタイルとは真逆の流れです。この根本的な考え方・進め方の違いに上手く馴染めていないという方も多いのではないでしょうか。

仕様駆動開発ツールは銀の弾丸ではない

この導入をサポートするものとして、 OpenSpec や Kiro、Spec Kit などの仕様駆動開発ツールも次々にリリースされて盛り上がりを見せていますが、それも決して銀の弾丸ではありません。というのも、ツールが提供するのはあくまで「仕様を記述するための文法や型」であり、「何を仕様として記述すべきか」という思考の部分は、依然として人間に委ねられているからです。

私自身、Spec Kit のリリース直後に少し試してみましたが、Spec Kit によって一気に出力された仕様書をレビューする作業自体がなかなか負荷が高く、場合によっては自分が書くよりも大変で、仕様駆動開発の大変さを根本的に解消してくれるわけではないと感じました(ツールが悪いのではなく、支援してもらってもまだ難しい、という意味です)。

さらに、既存のプロジェクトに後から仕様駆動開発を導入する場合、仕様書が存在する箇所と存在しない箇所が混在してしまったり、Spec Kit などによって自動作成されるファイルやディレクトリが既存の規約と衝突したりすることもあります。

支援ツールが想定する理想の開発フローに上手く乗れないと、ツールがかえって開発の足枷になってしまうことすらあるのです。

このように、「仕様駆動開発」は AI 開発の理想的な手法ではあるものの、実際に導入するのは容易ではありません。仕様駆動開発のメリットは十分に理解した上で、「正直、ハードルが高くてついていけない……」と悩んでいるエンジニアも少なくないのではないでしょうか。

この記事では、そんな悩みに対する一つの答えとして、Vue のカスタムブロック機能を活用して、「気軽に」仕様駆動開発を取り入れるアイデアを紹介します。

Vue のカスタムブロックとは

Vue の単一ファイルコンポーネント (SFC) は通常、