【通算100|要求AI 17】Spec Kitに“実装”させた——301のテストでバグを見つけ、完走した
前回、Spec Kitに、Kiroと同じ経費申請の設計フェーズ(/speckit-plan)を最後まで走らせた。
今日はその続きだ。同じ仕様から、実装フェーズ(/speckit-tasks → /speckit-implement)を最後まで完走。
確認したいのは「作り切るか」。Kiroの検証を終わらせたのは、コードの品質ではなくクレジット不足だった(通算095)。ローカルで動くSpec Kitは、Kiroのその先を、最後の1タスクまで走り抜けられるのか。
前回の設計に続いて、実装フェーズも最後まで走り切った。この記事は、「どう作り切ったのか」を、生成された成果物で確かめる。
108タスク、301のテスト——完走した
/speckit-tasks は、設計を 108個のタスクに分解した。ユーザーストーリー単位(US1〜US5)でまとまり、[P](並列可)や依存関係まで振られている。そして /speckit-implement が、実行した。
処理時間は 45分42秒。途中で一度PCがハングして再起動したが、Spec Kitはファイルベースで状態を保存しているので、tasks.md の進捗(何番まで完了か)を見て続きから再開した。
実装結果は以下のとおり。
108/108 タスク完了(未完 0)
TypeScript とテストで、約100ファイル
tsc(型検査)/eslint/next build(本番ビルド)、いずれもエラーなし
そして、テストが全部で301本。しかも、ただ書いただけではない。全部を実際に走らせて、完了した。

ユニット(Vitest) 114 全通過
統合+契約(実PostgreSQL+MinIO) 143 全通過
E2E(Playwright / desktop+Pixel 7) 44全通過
合計 301テスト 全通過
「データベース」で確かめた
私が驚いたのは検証方法だ。統合テストは、PostgreSQLとMinIO(S3互換ストレージ)をDockerで立てて、テスト実行。
要件を、データベース・実際のオブジェクトで確かめられている。
完了報告が以下(メッセージをそのまま添付)。
FR-009(監査証跡は追記専用):audit_event への UPDATE / DELETE / TRUNCATE が、アプリのDBロールでは権限で、特権ロールでもトリガで拒否されることを、実DBで確認
FR-012(証憑7年保存):Object Lock を GOVERNANCE モード・保持期限「申請日+7年3か月」で実際に設定し、削除が拒否されることを実オブジェクトで確認
FR-013(通知):ディスパッチャ停止中でも承認は成立し、送信キュー(outbox)に70件が滞留 → 起動後に70件送信 → メール検証ツール(Mailpit)の受信70件と一致
R-008(代理期間の重複禁止):排他制約(EXCLUDE、SQLSTATE 23P01)で実際に拒否
性能:本番ビルドで全エンドポイントが p95、 5〜9ms
テスト中、5つのバグを発見
45分の実装は、トライ&エラー。書いては走らせ、落ちては直す——その繰り返しだった。そして完了報告は、テストが検出した"バグ"を5件、すべて修正済み、どのテストで発生を報告。

経費発生日が1日ずれる — JSTの0時に対応する瞬間を日付列に渡すと、PostgreSQLが前日に切り捨てていた(契約テストが検出)
営業日計算が1日ずれる — 曜日判定を、JST起点でない瞬間で行っていた(ユニットテストが検出)
代理承認者が申請詳細を開けない — 権限判定が代理を考慮せず、承認待ち一覧に出ているのに404になっていた(E2Eが検出)
証憑差し替えが部分ユニークインデックスと衝突 — 新旧の更新順序が逆だった(統合テストが検出)
契約とレスポンス形状の不一致3箇所 — AuditEvent.id の型、category/receipt の必須項目欠落(契約テストが検出)
この5件は、実装レベルのバグ。日付、権限判定の抜け、インデックスの順序、API。Spec Kitは自分でテストし、自分で直した。
自分で動かしてみた——できたアプリの画面
「テスト完了」「動作確認」は、Spec Kitの自己申告。鵜呑みにしたくなかったので、生成されたものを自分の環境で起動して、実際に画面を操作してみた(全301テストも手元で再実行し、同じ結果になることを確認した)。
以下は、その実際の画面だ。経費申請の提出から承認、差し戻し、月次の滞留管理まで、ワークフローがひととおり動いた。
以下に操作した画面のスクリーンショット掲載する。










以上が、実際に動かしてみた結果です。
今日のまとめ
Spec Kitは実装フェーズ(/speckit-implement)を 108タスク・301テストすべて完走した。
検証はPostgreSQL・実オブジェクトで行われ、監査の追記専用性・証憑の7年保存・通知の再送などの要件が"DB"で確認された
実装の途中でテストが5つのバグ(日付境界・権限漏れ・インデックス順・契約形状)を自分で発見、修正した。
「完走した」が「完成した」わけではない。だが、ローカル・定額のSDDが実装を最後まで作り切り、テストで自分の誤りを正せることは、今回、確かめられた
タグ
#AIエージェント #SpecKit #スペック駆動開発 #要件定義 #要求定義 #ClaudeCode #システム開発 #テスト #SE #生成AI
