見出し画像

【通算105|要求AI 22】Speckitのトークン数を減らしたのは、「ツール」ではなく「図解」だった

前回(通算104)、SDDでは「要件を1つ足す修正」が「ゼロから作り直す」より高くつくことがわかった。その原因は修正のたびに全ドキュメントをLLMに読ませ直すから。工程別に測定して突き止めた。そして「次にやること」に2つ書いた。

  • ① トークンを減らす既知の手法を探す。

  • ② テキストだけで要件定義をすると見落としや思考停止するので、直感的に判断できる方法を考える。

今回もYWT(やったこと・わかったこと・次にやることの略)で、事実その解釈を分けて書く。

やったこと

① トークンを圧縮するツールを探して、試した

自分で圧縮の仕組みを作り込む前に、同じ問題——成果物が後工程で毎回読み直される——を扱う既存ツールを探した。すると Spec Kit のエコシステムに spec-kit-token-budget という拡張が見つかった。成果物をその場で圧縮して、後工程が読むトークンを減らす、というツールだ。

今回の経費精算のドキュメントに実際に適用して、トークンがどれだけ減るかを測った(104と同じ使い捨てブランチ・Opus 5。圧縮レベルを medium → aggressive と上げて比較)。

② 見落とし・思考停止を防ぐために、「図解」を試した

こちらはトークン削減が目的ではない。前回②——長い仕様をテキストのままYes/Noで確認していくと、見落とすし途中で思考停止する——を受けて、承認ルール(費目マスタ+FR-016)を「日本語の文章」「表」「図(Mermaid)」の3通りで書き分け、どれがいちばん直感的に判断できるかを試した。その時に、表現の違いでトークン数がどう変わるかを測定した。

わかったこと

① トークンを圧縮するツールを探して、試した

既にあるトークン圧縮ツールは"英語前提"で、日本語にはほとんど効かなかった


トークン数削減結果

ツールのドキュメントに書かれていた削減例(-40〜50%)は、この仕様では効果はなかった。しかもツールを動かすのに約 $4.34 かかった。

圧縮後のドキュメントを確認した。原因は "英語前提" と思われる。

  • 圧縮方法が英語の言い回しを削除するからと想定される。medium の規則は「first…second…」「as well as」等の英語の水増しを省略するもので、日本語の言い回しには効果がない。だから medium は効果なし(-1.1%)。

  • 要件IDが圧縮を止める。FR- / T / US- / AC- を含む行は圧縮対象外=構造的に削れない。

  • 削れた中身は"なぜ(WHY)"だった。aggressive で最も圧縮 research.md(-42.9%) 。要件本体(IDと表)は1バイトも縮まず、削れたのは"なぜ(WHY)"だけ

英語の冗長さを削る前提のツールなので、簡潔な日本語+要件IDの"簡潔な仕様"には、構造的に効果がない。

② 見落とし・思考停止を防ぐために、「図解」を試した

図解は「見落とし防止」に効果があり(定性評価)、そのうえトークン数まで減らした(定量評価)

②はそもそも見落としや思考停止を防ぐのが狙いだった(自己評価)——同じルールでも、表や図のほうが「どの費目がどの承認段階か」を一目で追え、直感的にYes/Noを出せた。

想定外なのは、同じ意味内容の表・図は文章よりトークン数が少なかった(tiktoken実測)。

表・図のトークン数の削減効果

図解に表現を変えた結果、情報量は変わらず(むしろ人に見やすく)、トークン数削減効果が約4倍。

次にやること

①トークン数削減対策は一旦区切りをつける。
トークン数を削ること自体を目的に追うのは、ここで一旦終える。 104〜105で、テキスト圧縮では日本語の仕様は縮まないこと、効くのは"見せ方そのもの"を変えることだと分かった。これからトークン数は「目的」ではなく、下に置く評価軸の1つとして扱う。

目標・人間・システム・データの4視点すべてを埋める要件を1つ用意して、各視点を「文章のままがよいか、それともER図・Mermaid のようなコンピューターに馴染む視覚モデルがよいか」で表し直す。目標や"なぜ"は文章で残し、人間・システム・データについては視覚モデルにする——というあたりをつけて、実際にやってみる。


要求を可視化する4つの視点
4つの視点で図解化を検討する

その要件が4つの視点をちゃんと満たしているかを確かめながら、見やすさとトークン数の削減を両立する。

見やすさ(定性)と表現方法(定性と定量)とトークン数(定量)

人間には図・表として承認を取り、AIにはその元データ(Mermaid-DSL・CSV)を渡す。図のレンダリングは元データからの変換なので、二重管理は起きない。※但し、画像そのものをLLMに読ませると"画像トークン"がかかるので、画像は対象外にする。

タグ

#AIエージェント #SpecKit #スペック駆動開発 #要件定義 #要求定義 #ClaudeCode #データモデリング #トークン #ERD #生成AI


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