AGIテスト駆動開発 — 要件定義から公開までを8つの工程で通す作り方。
「とりあえず動くアプリ」は、
なぜ数日で壊れるのか。
答え
テストが書かれていないから。
理由はこれ一つです。見た目が整っていても、動くことを機械が確かめた記録が無ければ、次の変更でどこが壊れたか誰にも分かりません。このページは、その一点をどうやって埋めるかの説明です。
AIに日本語で指示するだけでアプリが数分ででき、公開から数日で重大なバグが見つかる。2024年から2025年にかけて、この繰り返しがあちこちで起きました。以下は、そうならないための道具立てを、原理から順に見ていくものです。
- フェーズ
- 8
- 書類
- 11
- バグの種類
- 3
- 本番での修正コスト
- 10,000
バグは3種類しかない
バグとは、期待される動作と実際の動作のずれのことです。ひと口にバグと言っても、生まれ方は3通りに分かれます。どれなのかが分かれば、どこを直せばいいかも決まります。下のタブを押して切り替えてください。
仕様書・設計書に対するバグ
そもそもの設計が間違っている、あるいは何も書かれていない場合です。コードそのものに問題が無くても起きます。仕様書が曖昧だったり記載が抜けていたりすると、完璧に実装されたコードでも、使う人の期待と違う動きをします。
例:ECサイトの要件定義に「ユーザーは商品をカートに追加できる」と書いてあるのに、カートの合計金額を計算するルールが書かれていない。すると作る人が自分の解釈で実装することになります。
締め切り通知機能で起きること
タスク管理アプリの要件に「締め切り通知機能」とだけ書かれていた場合、次の3つが決まっていません。
- ?締め切りの何時間前に通知するのか
- ?通知方法はメールか、プッシュ通知か
- ?タイムゾーンはどう扱うのか
ここが書かれていなければ、作る人ごとに実装が変わります。そして後から「バグです」と報告されます。
コード仕様に対するバグ
設計は正しいのに、実装のロジックが間違っているケースです。よくあるのは次の3つです。
- 境界値の処理ミス
- 仕様書に「1以上10以下」と書かれているのに、コードでは
value > 1 && value < 10と書いてしまい、1と10が範囲から漏れる。 - 型の不一致
- 数値として比べるべきところを、文字列として比べてしまう。
- 非同期処理の競合
- データベースへの書き込みが終わる前に読み込みが走り、古いデータが表示される。
「1以上10以下」のつもりで書いた value > 1 && value < 10 が通す範囲
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
漏れる通る
この種類のバグは、テスト駆動開発でいちばん効果的に防げます。入力と期待する出力を先に決めておけば、実装した直後に見つかります。
実装環境に対するバグ
コードそのものは正しいのに、動かす場所の違いで起きるバグです。
- OS依存
- Windowsでは動くが、macOSでは動かない。
- ブラウザ依存
- Chromeでは正常に表示されるが、Safariではレイアウトが崩れる。
- Node.jsバージョンの違い
- 開発環境ではv18を使っているが、本番環境ではv16が動いている。
- データベースの設定差異
- ローカルのMySQLと、クラウドのAurora MySQLで挙動が異なる。
この種類は、Docker などのコンテナ技術(アプリと動作環境を丸ごと箱に詰める仕組み)で環境を統一すると大幅に減らせます。
多くの開発者は、バグが出たとき「コードのどこが間違っているか」だけを探します。この3分類を知っていれば、原因を効率よく特定できます。AGIテスト駆動開発では、Phase 1 の要件定義、Phase 2 の設計、Phase 6 の Docker 環境構築という3段階で、3種類のバグを体系的に防ぎます。
なぜテストを先に書くのか
テスト駆動開発(TDD / Test-Driven Development)は Kent Beck が提唱した作り方です。正しく動くと確かめた部品を積み上げれば、正しく動くアプリになる、という考え方に立っています。下のボタンで1段ずつ進めてください。
1 / 4テスト設計
実装する機能について、入力と期待される出力の組み合わせを先に決めます。ログイン機能なら「正しいメールアドレスとパスワードならログイン成功」「パスワードが違えばエラーメッセージ」「メールアドレスの形式が不正ならバリデーションエラー」といった具合です。
テスト駆動開発の4つの利点
01
設計品質の向上
テストを先に書くと、「この関数は何を受け取って何を返すのか」を最初に決めることになります。曖昧な設計のまま実装に突入する事態を防げます。
02
バグの早期発見
テストが常にあるので、コードを変えるたびに既存の機能が壊れていないかをすぐ確認できます。発見が遅れるほど修正コストは跳ね上がるので、早さがそのまま費用の削減になります。
03
リファクタリングの安全網
テストがあれば、コードの構造を大胆に変えても、テストが通る限り動作は保証されます。テスト無しの作り直しは「祈りながらのコード変更」で、非常に危険です。
04
ドキュメントとしての機能
テストコードはそのまま「この機能はこう動くべき」という仕様書になります。後から参加した人は、テストを読めば仕様が分かります。
それでも普及しなかった理由
利点は広く知られています。それでも実際にやっているチームは多くありません。最大の理由はコストです。
100行の機能コードに必要なテストコード
単体テスト・結合テスト・E2Eテストを合わせると、本体の2倍以上になることは珍しくありません。
- 量が多い本体コードに対して2倍以上のテストコードを書く必要がある。
- 速度の圧力スタートアップやアジャイル開発では「まず動くものを出す」が最優先。テストを書く時間があるなら機能を1つでも多く、という圧力が常にある。結果、テストは後回しにされ「技術的負債」として積み上がる。
- 必要なスキルが高い良いテストを書くには、テスト対象のコードだけでなく、テスティングフレームワークの使い方、モックやスタブの設計、テストデータの管理など幅広い知識が要る。
これらの障壁が普及を阻んできました。AGI の登場で、この状況が変わりつつあります。
雰囲気で作ることの光と影
バイブコーディング(Vibe Coding)とは、AIに自然言語で指示を出し、その場の雰囲気(バイブ)でアプリを組み立てる作り方のことです。2024年後半から急速に広まりました。プログラミングの民主化という点では画期的です。
「Todoアプリを作って」「ログイン機能を追加して」「デザインをモダンにして」。こうした日本語の指示だけで、見た目のよいアプリが数分で出てきます。経験が無くても、思いつきをすぐ形にできる時代になりました。
典型的な流れと、そこに無いもの
「動作を目視で確認する」は、正常なパターンの一部を人間の目で見ているだけです。だから次のようなものが見落とされます。
境界値のバグ
0件のときの表示。大量データでの速度。
エラーハンドリングの欠如
ネットワークエラーが起きたときにアプリがクラッシュする。
セキュリティの脆弱性
SQLインジェクション、XSS、認証のバイパス。
データ整合性の問題
同時に処理が走ったときにデータが壊れる。
アクセシビリティの欠如
スクリーンリーダーで操作できない。
「速い、作れる」の先にある崩壊
- 1ユーザーが増えるにつれて、エッジケースのバグが次々に報告される
- 2バグを直そうとすると、別の箇所が壊れる(回帰バグ)
- 3影響範囲を確認する手段が無いので、直すたびに新しいバグが出るモグラ叩き状態になる
- 4コードベースが複雑になりすぎて誰も直せなくなり、プロジェクトが放棄される
2024年から2025年にかけて、この作り方で生まれたサービスが次々公開され、次々消えていきました。「一瞬にして崩壊する」という言い方は、残念ながら多くのプロジェクトの現実をそのまま表しています。
バイブコーディングが悪いのではありません。問題は、そのやり方に品質保証の仕組みが組み込まれていないことです。
AGIテスト駆動開発は、バイブコーディングの「速さ」と「手軽さ」を保ったまま、TDD の「品質保証」を両立させます。テスト設計・テストコード生成・テスト実行を AGI が自動で行うので、指示を出す側の感覚は今までどおりのまま、テスト付きのコードが返ってきます。
回帰テスト — バグが生まれる本当の理由
回帰テスト(かいきテスト / Regression Test)とは、コードを変えた後に、これまで動いていた機能がちゃんと動き続けているかを確かめるテストのことです。新しい機能を足したり、バグを直したりしたときに、その変更が他の場所に悪さをしていないかを検証します。
たとえばタスク管理アプリに「タスクの優先度設定」を足したとします。この後で「タスク作成」「タスク編集」「タスク削除」「締め切り通知」がすべて今までどおり動くかを確かめるのが、回帰テストです。
直すたびに別の場所が壊れる、を見る
機能Aを直すと機能Bが壊れ、Bを直すとCが壊れる。この連鎖を「デグレード(degradation)」と呼びます。下の2つのボタンで、回帰テストがある場合と無い場合を見比べてください。
ボタンを押すと、機能Aに手を入れた後に何が起きるかが動きます。
なぜ実施されないのか
結論から言えば、ほとんどのエンジニアは回帰テストを実施していません。理由は3つです。
- 時間がかかる手作業で全機能をテストすると、小規模なアプリでも数時間、中規模なら数日かかります。毎回の変更でこれをやるのは現実的ではありません。
- 自動テストが整備されていない効率よくやるには自動テストの一式が要ります。しかし前章のとおり、テストコードを書くコストが障壁になり、多くのプロジェクトでは揃っていません。
- 変更の影響範囲が把握できない「この関数を直したらどこに影響するのか」を正確に掴むのは、コードが大きくなるほど難しくなります。範囲が分からなければ何をテストすべきかも分からず、事実上できません。
回帰テストをしないことの代償
- デグレードが起きるたび、コードベースの信頼性が下がる
- チームが変更に対して臆病になる
- 「触らない方がいい」「動いているコードは変えるな」が広まる
- 技術的負債が雪だるま式に膨らむ
- 「何もコードを変更できない」膠着状態に陥り、成長が止まる
これは多くの企業が実際に直面している問題です。
AGI が解決すること
一貫した文脈を保持できる
テスト設計から実装まで同じ知能が担当します。「テスト設計を書いた人」と「実装した人」が違うことで生じる認識のずれがありません。
影響範囲を正確に把握できる
コードベース全体を理解した上で、どのテストを再実行すべきかを判断します。
実行コストがほぼゼロ
AGI が自動でテストを走らせて結果を報告するので、人間の作業時間はほとんどかかりません。
ひと言で済む
「回帰テストを実行して」という一つの指示で、対象箇所以外に手を入れていないことの確認と、影響が出ていないかの検証が自動で行われます。これが AGI テスト駆動開発の最大の価値です。
AGIとは何か、なぜ一貫できるのか
AGI(Artificial General Intelligence / 汎用人工知能)とは、特定の作業に特化するのではなく、人間のように幅広い知的作業をこなせるAIのことです。いまの大規模言語モデル(LLM)は「狭いAI(Narrow AI)」に分類されますが、AGIレベルのシステムは、複数の領域にまたがる推論・計画・学習を統合して行えます。
ここで言う AGI が持つ能力
- 自然言語で書かれた要件を理解し、技術的な設計に変換できる
- 設計にもとづいてテストケースを自動生成できる
- テストケースに合格する本体のコードを実装できる
- 変更が加えられたときに、影響範囲を分析して回帰テストを実行できる
- これらすべてを、一貫した文脈(コンテキスト)を保ちながら遂行できる
「高速なレスポンス」がずれていく
人間のチームでテスト駆動開発をやるとき、最大の課題は一貫性の維持です。要件定義を書くプロダクトマネージャー、設計するアーキテクト、テストを設計するQAエンジニア、実装するプログラマーは、通常は別々の人間です。それぞれ違う解釈、違う前提、違う優先順位を持つので、工程の間で認識のずれが必ず起きます。
人間のチーム
要件定義:「高速なレスポンス」
- 設計者200ms以内のことだろう
- テスト設計者500ms以内なら合格でいい
- 実装者とりあえず動けばいい
解釈が3通りに割れた。ここがバグの温床になる。
AGI
要件定義:「高速なレスポンス」
- 設計200ms以内、と数値に変換
- テスト設計200msを検証するテストを作成
- 実装200msを満たすコードを書く
- テスト実行200msを実測して検証
ひとつの知能が最後まで担当するので、数値がずれない。
環境の用意
AGIテスト駆動開発を実践するための道具として ccagi-sdk が提供されています。手順は3つです。公式サイトからインストーラーを取得する。VS Code(Visual Studio Code)にAGI拡張機能をインストールする。プロジェクトの初期設定を行い、AGIがプロジェクトの構造を認識できる状態にする。
VS Code を使うのは、拡張機能が豊富で、ターミナルが統合されているためです。AGIとのやり取りが同じ画面の中で完結します。AGIへの指示は、VS Code のターミナルかコマンドパレットから出します。
全8フェーズ 実践ワークフロー
ここからが実務です。Phase 1 から Phase 8 まで、各フェーズで必要な書類、AGIへの具体的な指示、レビューで見るところを並べます。枠で囲った日本語が、実際にAGIへ言う言葉です。そのままコピーして使えます。フェーズの帯から選んでください。
Phase 1要件定義 — すべての品質はここから始まる
要件定義の品質が、プロジェクト全体の品質を決めます。ここが曖昧なら、どれだけ優れた設計・実装・テストをしても、求められたものは作れません。AGIテスト駆動開発では、要件定義もAGIとの対話で作ります。
AGIに言う言葉
タスク管理アプリの要件定義を作成して。ユーザー認証、タスクのCRUD、締め切り通知機能が必要
この指示に対して、AGIは3つのドキュメントを生成します。
docs/requirements/requirements.md機能要件書
「このアプリは何ができるか」を定義します。ユーザー認証機能なら、メールアドレスとパスワードによるログイン、ソーシャルログイン、パスワードリセット、セッション管理など、具体的な機能を並べます。
見るところ各機能の受け入れ基準(Acceptance Criteria)が具体的に書かれているか。「ユーザーはログインできる」では足りません。この程度の具体性が要ります。
- 正しい認証情報でログインに成功すると、ダッシュボードにリダイレクトされる
- 3回連続でログインに失敗すると、アカウントが15分間ロックされる
docs/requirements/non-functional.md非機能要件書
「このアプリはどのように動くべきか」を定義します。パフォーマンス要件(レスポンスタイム、同時接続数)、セキュリティ要件(暗号化方式、認証トークンの有効期限)、可用性要件(稼働率、障害復旧時間)、スケーラビリティ要件(将来のユーザー数増加への対応)などです。
見るところここはテスト設計に直結します。「レスポンスタイムは200ms以内」と書けば、そのままパフォーマンステストの合格ラインになります。曖昧に書けばテストの基準も曖昧になり、品質保証が機能しなくなります。
docs/requirements/design-requirements.mdデザイン要件書
ユーザーインターフェースに関する要件です。対象デバイス(PC、タブレット、スマートフォン)、対応ブラウザ、アクセシビリティ基準(WCAG 2.1準拠など)、ブランドガイドライン(カラーパレット、タイポグラフィ)が入ります。
見るところレスポンシブデザインの基準が具体的か。「モバイル対応」という漠然とした書き方ではなく、次のように書けているかを見ます。
- 375px幅(iPhone SE)から1440px幅(デスクトップ)まで、主要なブレークポイントでレイアウトが適切に変化する
Phase 2設計 — テストできる設計を作る
要件定義にもとづいて、システムの設計を行います。次の4つを順番に言います。
AGIに言う言葉
仕様書を作成してデザインシステムを作ってUIの設計方針を決めてテスト設計書を作成してdocs/design/spec.md機能仕様書
要件定義を技術的な設計に落とし込んだ書類です。データモデル(テーブル設計、リレーション)、APIエンドポイント(URL、HTTPメソッド、リクエスト/レスポンスの形式)、画面遷移図、状態管理の設計が入ります。
見るところ要件定義とのトレーサビリティ(たどれること)。すべての機能要件が、仕様書のどこかの設計に紐づいている必要があります。要件にある機能が仕様書に反映されていなければ、その機能は実装されません。
docs/design/design-system.ymlデザインシステム
UIの一貫性を保つためのルール一式です。カラーパレット、タイポグラフィ(フォント、サイズ、行間)、スペーシング(余白のルール)、コンポーネントライブラリ(ボタン、フォーム、カードなどの統一デザイン)を定義します。
効き目YAMLというファイル形式で定義しておくと、AGIがUIを実装するときにこれを参照します。すべての部品が同じスタイルで実装されることが保証されます。
docs/design/ui-guidelines.mdUI設計方針
ユーザー体験(UX)に関する具体的な指針です。ナビゲーションの構造、フォームのバリデーションの表示方法、エラーメッセージの文言ルール、ローディング状態の表示方法、アニメーションの使い方などを書きます。
テスト設計書(3種)Phase 2 の最重要成果物
テスト駆動開発の根幹です。次の3つが生成されます。
単体テスト設計書
個々の関数やコンポーネントが正しく動くかを検証するための設計。各関数の入力と出力の期待値を一覧にしたものです。
結合テスト設計書
複数の部品が連携して正しく動くかを検証するための設計。「ログインAPI → セッション管理 → ダッシュボード表示」という一連の流れが機能するかを確認します。
E2Eテスト設計書
ユーザーの操作シナリオ全体を通して正しく動くかを検証するための設計。実際のブラウザを使って、人が行う操作をシミュレートします。
Phase 3計画 — SSOT Issue と UXレビュー
実装前の最終確認と、計画の策定を行います。
AGIに言う言葉
SSOT(Single Source of Truth)Issueを作成してUXレビューをしてSSOT とは
SSOT(Single Source of Truth)は「信頼できる唯一の情報源」という意味です。開発では要件定義、設計書、テスト設計書、実装コードなど複数の書類が存在し、その間に矛盾が生じることは珍しくありません。
SSOT Issue とは、各フェーズで作った書類の整合性を確認し、矛盾があれば解決するためのタスクです。AGIがすべての書類を横断してチェックします。
- 要件定義の記述と、仕様書の設計が一致しているか
- テスト設計が、仕様書のすべての機能をカバーしているか
- デザインシステムとUI設計方針に矛盾がないか
UXレビューの3観点
画面遷移の自然さ
ある操作をした後、次にどの画面へ移るかが直感的に分かるかどうか。
情報設計の適切さ
必要な情報が目に入りやすい位置にあるか。不要な情報でノイズが出ていないか。
エラー体験の設計
エラーが起きたとき「何が起こったのか」「どうすれば解決できるのか」がすぐ分かるメッセージが出るか。
Phase 4実装 — AGIによるコード生成
Phase 2 で作ったテスト設計にもとづいて、実際のコードを生成します。
AGIに言う言葉
アプリを実装してUIをスタイリングしてレスポンシブ対応して「アプリを実装して」の中で起きていること
大事なのは、AGIが内部でTDDのサイクルを実行しているという点です。ひと言の指示に対して、次の4つが自動で走ります。
- 1テスト設計書にもとづいてテストコードを生成する
- 2テストコードが合格する最小限の本体コードを実装する
- 3テストを実行して全件合格を確認する
- 4コードを整理して品質を上げる
このすべてが自動なので、指示を出す側は「アプリを実装して」と言うだけで、テスト付きのコードを受け取れます。
スタイリングとレスポンシブ対応
「UIをスタイリングして」では、Phase 2 で作ったデザインシステムとUI設計方針にもとづいて、CSSや部品のスタイルが当たります。カラーパレット、タイポグラフィ、スペーシングが正確に反映されます。
「レスポンシブ対応して」では、デザイン要件で決めたブレークポイントにもとづいて、各画面サイズに合うレイアウトが実装されます。対応後は、E2Eテストの一部として画面サイズを変えたテストが自動で走り、すべてのブレークポイントでUIが正しく表示されることが検証されます。
Phase 5テスト — 4段階の品質検証
Phase 4 で実装されたコードに対して、粒度の違う4段階のテストを実行します。
AGIに言う言葉
単体テストを実行して結合テストを実行してE2Eテストを実行してフローテストを実行して粒度の違い
単体テスト(Unit Test)
個々の関数やコンポーネントが正しく動くかを検証します。最も粒度が細かく、バグの原因を特定しやすいのが特徴です。実行が速く、数百〜数千のテストケースを数秒で走らせられます。
結合テスト(Integration Test)
複数の部品やモジュールが連携して正しく動くかを検証します。フロントエンドからAPIを呼び出し、バックエンドがデータベースに保存し、正しい返事を返す、という一連の流れをテストします。
E2Eテスト(End-to-End Test)
ユーザーの操作シナリオ全体を検証します。実際のブラウザ(Cypress や Playwright)を使って人の操作を再現します。ログインしてタスクを作成し、編集して削除する、という流れが端から端まで正しく動くかを確認します。
フローテスト(Flow Test)
業務ロジック全体の整合性を検証します。「タスクの締め切りが過ぎたら通知が送信され、ユーザーがその通知を確認したら既読になる」というビジネスフロー全体が機能するかを確認します。
Phase 5.5品質ゲート — 出荷前の最終防衛ライン
テストに合格したコードに対して、さらに高い品質基準を当てるフェーズです。
AGIに言う言葉
モックデータが残っていないかチェックしてUI品質をレビューして品質チェックしてモックデータのチェック
開発中に使ったダミーデータが本番に残っていないかを確認します。次のようなものが本番の画面に出てしまうのは、非常に恥ずかしく、使う人の信頼を損ないます。
John Doetest@example.comLorem ipsum
UI品質レビュー
デザインシステムとの一致度、レイアウトの崩れ、アクセシビリティの問題、パフォーマンスの問題をまとめて確認します。ピクセル単位で検証し、デザイン要件とのずれがあれば報告されます。
品質チェック
コード品質・セキュリティ・パフォーマンスを総合的に評価する最終チェックです。次の4つが含まれます。
- コードの静的解析
- 依存パッケージの脆弱性チェック
- パフォーマンスプロファイリング
- アクセシビリティ監査
Phase 6ビルドとデプロイ — Docker統合環境の構築
アプリを Docker 環境でビルドし、ローカルサーバー上で動作確認を行います。
AGIに言う言葉
ccagi-sdk 対象アプリをDocker上にデータベース、バックエンド、フロントエンドをまとめてビルドして、ローカルサーバー上に起動してください
なぜ Docker なのか
第1章で挙げた「実装環境に対するバグ」を排除するためです。Docker 上で動作が確認できれば、同じ Docker イメージを使って本番環境にデプロイすることで、環境差異によるバグを防止できます。
データベース、バックエンド、フロントエンドを一つの Docker Compose ファイルにまとめると、複数のサービスに分かれたアプリでも、ローカル環境で本番と同等の環境を再現できます。
ひとつの箱にまとめる
この箱ごと本番へ運ぶので、「自分の機械では動いた」が起きなくなります。
Phase 7機能追加と仕様変更 — 回帰テストの真価
アプリが完成した後、ユーザーからの声や新しい要件にもとづいて変更を加えます。この作り方の真価がいちばん出るフェーズです。
AGIに言う言葉
/user-feedback ボタンの色を青に変更してほしい回帰テストを実行して「ボタンの色を変えるだけ」が波及する
一見すると些細な変更ですが、他の部品に影響が出る可能性は常にあります。たとえばボタンの色がCSSの変数で管理されている場合、その変数を参照している他の部品の色も一緒に変わってしまうかもしれません。
「回帰テストを実行して」で自動で走ること
- 変更が対象箇所のみに限定されていることを確認する
- 既存のすべてのテストケースを再実行し、合格することを確認する
- 変更に関連するテストケースが無い場合は、新しいテストケースを追加する
ほとんどのエンジニアは回帰テストをしません。だからバグを勝手に生み出すのです。
AGIテスト駆動開発では、この問題が構造的に解決されます。
Phase 8保存と共有 — ドキュメントとGit管理
成果物を適切に保存・共有するフェーズです。
AGIに言う言葉
READMEもしくはユーザーズガイドを作成してccagi-sdk 全ての変更点をgithubにプッシュしてREADME/ユーザーズガイドに入るもの
- プロジェクトのセットアップ手順
- 利用方法
- アーキテクチャの概要
- テストの実行方法
- デプロイ手順
GitHubへのプッシュ
コードの変更履歴が記録され、チームでの共同開発やコードレビューができるようになります。AGIが生成したすべてのコード(テストコードを含む)が、リポジトリに保存されます。
11の書類と、その存在理由
コードを書く前に、これだけの書類を作ります。一見すると面倒に思えますが、それぞれに明確な理由があります。人間が手作業で全部作るのは膨大な労力ですが、AGIが自動生成するので負担は最小限です。
01
AGIへの指示書
AGIがコードを生成するときに参照する情報源です。書類の品質が、そのままコードの品質になります。
02
チームの共通言語
要件定義は「何を作るか」、設計書は「どう作るか」、テスト設計書は「何をもって正しいとするか」を、全員で共有するために存在します。
03
変更管理の基盤
仕様変更が起きたとき、影響範囲を特定して適切に直すには、いまの仕様が正確に文書化されている必要があります。
| フェーズ | ファイル/名称 | 日本語名 | 何を書くか |
|---|---|---|---|
| Phase 1要件定義 | requirements.md | 機能要件書 | このアプリは何ができるか。受け入れ基準まで。 |
non-functional.md | 非機能要件書 | どのように動くべきか。速度・安全・可用性・拡張性。 | |
design-requirements.md | デザイン要件書 | 対象デバイス、対応ブラウザ、アクセシビリティ基準、ブランド。 | |
| Phase 2設計 | spec.md | 機能仕様書 | データモデル、APIエンドポイント、画面遷移、状態管理。 |
design-system.yml | デザインシステム | 色・書体・余白・部品の統一ルール。AGIが実装時に参照。 | |
ui-guidelines.md | UI設計方針 | ナビゲーション、バリデーション表示、文言、ローディング。 | |
| 単体テスト設計書 | 単体テスト設計書 | 各関数の入力と出力の期待値の一覧。 | |
| 結合テスト設計書 | 結合テスト設計書 | 複数の部品が連携する流れの検証設計。 | |
| E2Eテスト設計書 | E2Eテスト設計書 | ユーザーの操作シナリオ全体の検証設計。 | |
| Phase 3計画 | SSOT Issue | 整合性確認タスク | 書類どうしの矛盾を横断チェックして解決する。 |
| Phase 8保存と共有 | README / ユーザーズガイド | 取扱説明書 | セットアップ、利用方法、構成、テスト実行、デプロイ手順。 |
Phase 1 で3つ、Phase 2 で6つ、Phase 3 で1つ、Phase 8 で1つ。合計 11 の書類が、この作り方の土台になります。
品質はコストではなく投資
バグの修正コストは、発見が遅れるほど指数関数的に増えます。要件定義の段階で見つけたバグの修正コストを1とすると、次のようになる、というのがソフトウェア工学の教科書で紹介される定説です。
AGIテスト駆動開発は、バグをできるだけ左側で見つけて直します。それが開発費用の総額を大きく下げます。
バイブコーディングからの卒業
バイブコーディングは、ソフトウェア開発の裾野を広げた素晴らしい動きでした。しかし「動くものを作る」だけでは、長く使えるソフトウェアは作れません。AGIテスト駆動開発は、その手軽さを保ちながら、仕事として通用する品質保証を実現します。日本語で指示を出すだけで、テスト付きのコードが出てくる。これは開発の歴史における大きな転換点です。
回帰テストが当たり前になる世界
この作り方が広まれば、「回帰テストをしない」という選択肢は無くなります。コードを変えるたびに自動で回帰テストが走り、既存機能の破壊がその場で見つかります。デグレードの悪夢から解放され、チームは安心してコードを変えられるようになります。技術的負債の蓄積が抑えられ、プロジェクトの長期的な健全性が保たれます。
コストは劇的に下がった
テスト駆動開発を「コストが高い」と敬遠してきたチームは多いはずです。しかし AGI がテストコードの生成を自動化したことで、その「コスト」は劇的に下がりました。品質への投資は、いちばん確実なコスト削減策です。