十分に詳細な仕様はコードである
概要
- 仕様書からのコード自動生成に対する誤解と現実を解説
- OpenAI Symphonyプロジェクトを具体例に批判
- 仕様書とコードの複雑性・労力の本質を整理
- コード生成の信頼性・実用性の課題を指摘
- 仕様書作成とコーディングの本質的な難しさを再考
仕様書駆動のコード生成に対する誤解と現実
-
agentic coding(エージェント型コーディング)推進派は、仕様書から直接コード生成が可能だと主張
-
しかし、実際にはこの主張には2つの誤解が根底に存在
- 誤解1:仕様書は対応するコードよりも単純である
- 誤解2:仕様書執筆はコーディングよりも深い思考を要する
-
仕様書を「外注の次世代」として扱い、エンジニアが仕様書を書きエージェントに実装を任せる発想
-
仕様書経由で品質が向上するという幻想
Symphonyプロジェクトの実態と課題
-
OpenAI Symphonyは、「仕様書(SPEC.md)からプロジェクト生成可能」と宣伝
-
しかし、このSPEC.mdは実質的に擬似コードやコード断片をMarkdownに書き起こしただけの内容
-
例:データベーススキーマやアルゴリズムの詳細な記述、コードそのものを含む
-
仕様書と呼べるものの、実質はコードに極めて近いものになっている事実
- 仕様書が十分に厳密であればあるほど、コードに近づく必然
- Dijkstraの「狭いインターフェース」の議論を引用し、形式的記述の限界を指摘
-
SymphonyのREADME通り、仕様書から実装(例:Haskellでの実装)を試みてもバグや動作不良が多発
-
仕様書が長大化すれば、**Borgesの「正確さについて」**の寓話のように、地図と現実が一致して無意味化
仕様書作成とコーディングの本質的な難しさ
-
仕様書作成は本来、コーディング以上に困難であるべき作業
-
仕様書作成の目的は、全体像を俯瞰し批判的思考を促すため
-
しかし、「仕様書作成はコーディングよりも容易」と考える産業的風潮により、本質的な思考が省略されがち
-
SymphonyのSPEC.mdのように、AI生成の粗雑な仕様書が生まれる背景
- 例:Section 10.5のような中途半端な仕様記述
-
結果として、仕様書とコードの境界が曖昧化し、どちらの品質も保証できない状況に陥る
まとめ
- 仕様書からのコード自動生成は、仕様書自体が実質的なコード化を要求
- 仕様書の厳密さ・詳細さを高めると、人間がコードを書くのと同等の労力を要する
- 仕様書作成やコード生成の信頼性・品質の限界を認識し、安易な自動化幻想を持たない姿勢が重要