0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Codex と Claude Code 開発、性善説で始めると速い。でも後半は性悪説が必要になる

0
Posted at

最初に

最近、Codex と Claude Code で開発をかなり続けています。
最初はほぼ Vibe Coding で進めて、機能が増えてきたあたりから、徐々に Spec Coding 寄りになっていきました。

この2つの進め方を続けていて、ふと思ったのは、かなり古いフレームワークが思いのほかよく当てはまる、ということでした。

それが、性善説と性悪説です。

孟子と荀子、そんな話のようですが、AI 開発の文脈では意外に実用的です。
今回は、それを開発の流れに沿って短くまとめます。

先に結論

結論から書くと、AI は性善でも性悪でもない。「似てる」だけ です。

  • 性善説(Vibe Coding)は前半で有効、性悪説(Spec Coding)は後半で有効
  • いずれか一本にする必要はなく、「段階で切り替える」のが正解
  • 信頼を担保するのは「信仰」ではなく「仕組み」(仕様・テスト・レビュー)

「Vibe Coding は速い、でも後半は結局何を信じていいかわからない」と感じている人には、かなり刺さる内容です。

1. まず、性善説と性悪説とは何か

伝統的な性善説・性悪説は、人の本性についての議論です。
性善説は「人はもとから良い」、性悪説は「人はもとから悪い」と言います。

でもこの議論で実際に決まっているのは、「善悪」そのものではありません。
決まっているのは**「仕組み」**です。

性善と信じれば、人に委ねても大丈夫だから、仕組みは軽くできます。
性悪と信じれば、ルールとチェックと監視を作る必要が生まれます。

つまり性善・性悪の議論は、どのくらい信頼するか、そしてどんなチェックを作るかの議論だったのだと思います。

このフレームワークは、AI 開発にもかなりそのまま当てはまります。

2. AI の本質は「似てる」だ

Codex や Claude Code を使うとき、本質的な問いはこれです。

この AI、信頼できるのか?

答えは、大きく2つに分かれます。

「AI は性善だ」というなら、Vibe Coding です。
意図を渡して、あとは自律的に動かす。

「AI は性悪だ」というなら、Spec Coding です。
要求・制約・受入基準を明文化して、検証させてから受け取る。

ただ正直、AI の本性は善でも悪でもありません。
AI は「良い開発者の書き方を似せている」だけです。

だから「それっぽく正しそう」と「本当に正しい」は、別の話になります。
ここが人の性善・性悪と根本的に違うところで、AI 版の性善・性悪議論は、倫理の話ではなく「検証のコストをどこに置くか」の話になります。

3. 性善説(Vibe Coding)で得られるもの

性善説で回すと、本当に速いです。
その速度は本物です。

  • 細かな仕様書が不要なので、始めるコストが小さい
  • ラフな形、スパイク、プロトタイプが圧倒的に速い
  • 破棄しても安いので、試せる

この段階で Spec Coding に入ると、むしろ無駄です。
前半は性善説で回していい。むしろそうすべきです。

4. 性善説で回し続けていると、どこで壊れるか

ただ、性善説を続けていくと、後半で別の種類のしんどさが出てきます。

  • 「それっぽい」のに、挙動が微妙に違う
  • 機能が増えるほど、暗黙の前提同士がぶつかる
  • 差分が肥大して、人間がレビューしきれなくなる
  • AI が根本原因に届かず、似た修正を繰り返す

これらに共通するのは1つです。
信頼が無制限で、検証がゼロなこと。

新人を丸ごと信じて全部任せているのと同じです。
相手が良ければ最高ですが、ズレたときに、どこでズレたのか見えなくなります。

5. 性悪説(Spec Coding)が効く理由

Spec Coding は、本質的には性悪説のアプローチです。
「間違えたと仮定して、間違えが必ず見える仕組みを作る」

  • 何をすべきか、何をすべきでないかを明文化する(仕様)
  • テストを最初から存在させる
  • 小さく出して、検証させてから受け取る
  • 人間は「なぜその実装なのか」を見る

これは、人に対してルールとチェックを置く性悪説型のマネジメントと同じ構造です。

生産性が高いほど、この構造は効いてきます。
コアな部分ほど、最初から性悪説で回す方が強いと思います。

6. でも性悪説だけで回すと、これもしんどい

一方で、性悪説一本足にも問題があります。

  • 仕様の書下しコストが高く、変更に追いつかなくなる
  • 信じていないと、新人の過保護な管理と同じになって速度が落ちる
  • 仕様自体が間違っていると、AI はそれを忠実に間違った形で実行してくれる

特に最後の項目が、AI 開発の特徴です。
人がズレるときは、まだズレの度合いにばらつきがありますが、AI は「仕様に忠実なほど、間違ったものがきれいに完成します」。

性悪説をデフォルトにすると、「遅くて、なおかつ脆い開発」になりやすい。
仕様書は更新し続けなければ二重管理になり、これも後半で確実に効いてきます。

7. 答えは「使い分けて、切り替える」こと

なので答えは、性善か性悪かの二者択一ではありません。
段階で切り替えることです。

  • 新規 / プロトタイプ → 性善説で回す
  • 本番 / コア / チーム開発 → 性悪説で回す
  • 変更の影響範囲が大きいほど、検証を重くする

言い換えれば、Trust, but verify です。

新人の扱いも同じです。
仕事を任せる(trust)一方で、レビューと CI というチェックを作る(verify)。
信頼できているのは、その人個人ではなく、その仕組みです。

AI への信頼も全く同じで、実行は任せ、信頼は仕組みが担います。
仕様、テスト、CI、レビュー。
「信じる」のは人間、「担保する」のは仕組み、と分けるのが、後半まで回る形だと感じています。

8. 今すぐやれること

  1. 実行前に「何をすべきか」「何をすべきでないか」を書く。1行でも良い
  2. 影響範囲が広い変更は、テストを受入条件にする
  3. PR は小さく、一言で説明できる粒度にする
  4. レビューは分担する。規約と命名は AI、設計と前提は人間
  5. 壊れたとき、最初に疑うのは「仕様」であって AI ではない

まとめ

  • AI は性善でも性悪ではなく、「似てる」だけ
  • 性善説(Vibe Coding)=前半の速度
  • 性悪説(Spec Coding)=後半の安全
  • 二者択一ではなく、段階で切り替える
  • 信頼を担保するのは、仕組みである

Vibe Coding は本当に速いです。
でも、後半で差が出るのは、AI を信じるかどうかではありません。

AI 時代の問題は「AI を信じるか」ではなく、「信じていいだけの仕組みを何作るか」だ。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?