仕様を書いて、実装はAIに動いてもらう仕様駆動開発──まずは全体像から
FPTジャパンホールディングス株式会社 FPTデータ&AIインテグレーション エグゼクティブエバンジェリスト
鈴木 章太郎氏
本稿では仕様駆動開発の手法を用いて、クロスプラットフォームのモバイルアプリを開発する時のリアルな一部始終を一挙に紹介する。仕様駆動開発は「仕様」からコード、テスト、ドキュメント、インフラを作り上げる開発手法だ。開発スピードが高まるだけではなく、アプリ品質やドキュメント整合性も向上するのがメリットだ。全体の流れとしては、まず要件定義(specify)から始まり、設計(plan)、タスク分解(task)、実装、テストへと進む。
今回は肝心の「仕様」をSpec Kitで作成する。その仕様の実体はMarkdown形式のファイルだ。実装はGitHub CopilotのAgent Skillsで複数のAIを使い分ける。複数のAIはAgent HQで統合管理し、MCP Serverと連携して開発を進めていく。
サンプルとして開発するのは文房具のECアプリ。商品データをデータベースに1000アイテムほど保有し、アプリにはセマンティック検索やAIによる商品推薦などの機能を実装する。技術スタックはバックエンドにSpring Boot 3.xとJava 17(Zeaburとの互換性により)、モバイルはSwift(iOS)およびKotlin(Android)、データベースはAzure PostgreSQLとpgvectorを用いる。ここまでは典型的だが、デプロイ部分はクラウドPaaSのZeabur、AI推論エンジンはOpenAIとFPT AI Factoryを併用する。
なお今回採用するSpec Kitとは、仕様を書くためのテンプレートと自動化ツールで、GitHubがオープンソースで公開している。仕様をMarkdownで整理しやすく、設計やタスク分解まで一貫して進められるのが便利な点だ。ただし仕様駆動開発でSpec Kitは必須ではない。重要なのはAIが読める形(JSON/YAML/Markdownなど)で仕様を整えておくこと。仕様さえあれば、実装はCursorでもGitHub Copilotでもいい。鈴木氏は「仕様駆動開発は、ソースコードよりも仕様ファイルのメンテナンスをメインにやっていくという考え方になっています」と説明する。
仕様が「何を作るか」を定めたものなら、「どう作るか」や制約を規定するのが「Constitution.md(プロジェクト憲章)」だ。AIが実装で暴走しないように、プロジェクトの基本原則・価値観・制約を明文化しておくことで、ガードレールを設けるようなイメージだ。ゼロトラスト原則の規範化や、AIツールの一貫性を担保する観点からも重要になる。ここにセキュリティポリシー、技術スタックの制約、コーディング規約・禁止事項などを記載する。
仕様を整えたら、AIが仕様を解析して必要なタスクに分解する。例えばデータベースの構造を定義するDDL(データ定義言語)、API実装、UIコンポーネント、テストコードなどだ。タスクが分解されると、GitHub Copilotなどに送信する準備が整う。
いまやAIにはさまざまなモデルがあり、性能や利用料で使い分けるのが日常になっている。複数のAIエージェントを一元管理できるのが、GitHubが提供するAIエージェントの統合プラットフォーム「Agent HQ」だ。これにより、例えばGitHub Issuesから自動でタスクを分割しながら、複数のエージェントが並行して実装作業やコンフリクトの自動解決などを行える。

