見出し画像

【通算103|要求AI 20】ゼロから作るコストより、要件を1つ追加するコストの方が高かった——直観に反する結果が出た

前回(通算102)、要件を1つ足すのに約$31・実装28分かかった。重い技術スタック(TypeScript・PostgreSQL・Docker・331本のテスト)のせいだ。そこで「要件定義段階は、HTMLとJavaScript程度の軽い実装で回せばいい」と書いた。

今回、それをやってみた。同じシステムを軽い技術スタックで作り、前回と一字一句同じ要件(FR-016)を足して、コストを測る。

狙いどおりコストは下がった。だが、直観に反する結果が出た
ゼロから作るコストより、要件を1つ追加するコストの方が高かった。
今回もYWT(やったこと・わかったこと・次にやること)で測った事実その解釈・これから確かめることを書く。

やったこと

(1)前回のシステム(TypeScript/Next.js/Prisma/PostgreSQL/Docker)を、同じ要求仕様のまま、軽いスタックで作り直した。

  • 技術スタック:静的HTML+JavaScript+localStorage。ビルドなし、npm依存なし、DBなし・Dockerなし・自動テストなし。データはdata.jsonとlocalStorage。

  • 要件は同一:FR-001〜015をそのまま。そこに、前回と同じFR-016(接待交際費は金額にかかわらず経理承認を必須)を足す。

  • 手順:/speckit-analyze → /speckit-clarify → /speckit-plan → /speckit-converge → /speckit-implement。

  • 測り方:gitでベースラインを固定、/usageで金額・トークン・時間を記録。

(2)動作確認(E2Eは使わずに手動で確認)

実際に動かして、追加要件等を確認した。簡易チェックは74件通過(FR-016ぶんが18件増えた)。画面でも確かめた。接待交際費・30,000円(5万円未満)——追加前なら「上長のみ」で完了していた金額だ。

入力に合わせて「必要承認段階: 2段階(費目: 接待交際費)」と即表示される。5万円未満でも、費目が接待交際費なら経理確認が要る(FR-004 / FR-016)
申請詳細。5万円未満でも2段階。「再提出時は修正後の金額と費目で再判定される」=差し戻し経由の抜け穴も塞いである(FR-006)
上長が承認しても「完了」にならず「経理確認」へ進んだ。これがFR-016の効果——追加前は上長承認で完了していた

わかったこと

(1) 軽くしたら、同じ要件追加が約1/3のコストになった

/usageで測った数字を、前回(重いスタック)と比較。

前回(重いスタック)
 約$31
33ファイル・約900行
331本のテスト全回し(E2E 3.7分/回)

今回(軽いスタック)
約$10.56
4ファイル・+186/−39行
手動+純粋ロジックの簡易チェック

同じ要件、同じ完成度の「動くもの」。違うのは技術スタックだけで、追加のコストが約1/3に減った。 DBのマイグレーションと、Dockerを立てての統合テスト・ブラウザE2Eが消えたぶんだ。ここは前回の仮説どおり

(2) 要件を追加するコスト($10.56)が、ゼロから全部作る($5.04)より高かった

  • 初回ビルド(何もない状態から全部作る):約$5.04

  • そこに要件を1つ足す(FR-016):約$10.56

要件を1つ足すほうが、システムをゼロから全部作るより高い。 足したコードは186行だけ。これは直感に反する。

(3)初回ビルドと要件追加では、回した工程の数が違う

  • 初回ビルド:plan → tasks → implement(3工程)

  • 要件追加:analyze → clarify → plan → converge → implement(5工程)

要件追加のほうが、analyze・clarify・converge を余計に回している。clarifyでは6問に回答した。

次にやること

工程別にコストを測定して。初回になかった工程(analyze・clarify・converge)を軸に、以下を確かめる。

  • その工程は、本当に必要なのか。 省けるものはあるか、毎回要るのか。

  • 必要なら、どの工程にコストがかかっているのか。 同じ要件追加をもう一度やり、各工程のあいだに/usageを挟んで差分を取り、工程別のコストを測る

タグ

#AIエージェント #SpecKit #スペック駆動開発 #要件定義 #要求定義 #ClaudeCode #システム開発 #テスト #SE #生成AI




いいなと思ったら応援しよう!