Claude Codeは、言われた問題しか直さない。鵜呑みにして、俺は何度も痛い目を見た

どうも〜さとあつです😄
今日は、俺の相棒のClaude Code(ターミナルでAIに開発をやらせるツール)の話。ただし、ちょっとだけ、悪口っぽくなる。
いつも開発をサポートしてもらってる相棒の、ダメなところを書くのは、なかなか心苦しいんだけどな(笑)。でも、これは知っておかないと本当に痛い目を見るやつだから、正直に書いておく。
先に結論だけ言う。Claude Codeは賢い。でも、投げた問題を鵜呑みにして進めると、痛い目を見る。俺は初期に、何度もこれでやられた。
問題を投げると、その問題しか直そうとしない
アプリやシステムを作ってるとき。あるいは、完成したあとにバグが出たとき。
Claude Codeに、原因を追って、対策を考えてくれ、と投げる。すると、ちゃんと答えを出してくる。速いし、それっぽい。ここまではいい。
問題はここから。その答えが、目先の対症療法であることが、ほんとうに多い。
たとえば、検索の動きがおかしい、と投げると、検索まわりのコードだけをいじって直そうとする。目の前の症状は消える。でも、その症状を生んでる、システム全体の根っこには、手が届いてない。
お医者さんでいうと、熱が出た、はい解熱剤、で終わってる感じ。熱の原因そのものは、放置されてる。
これを鵜呑みにして、はいOK、で進めると、どうなるか。表面だけ直って、根っこは残る。そして、しばらくして、もっとでかい問題として跳ね返ってくる。俺はこれで、初期に何度も泣かされた。

で、俺がやってる、たった一つの指示
だから俺は、一発目の答えを、そのまま採用しない。
ちゃんと答えを出してきても、いったん止めて、必ず一回、こう指示し直す。これは、実際にお客さんのシステムでバグを追ってたときの、本物のやり取り。(お客さんが特定できる部分だけは伏せてます)
そこで、今回の問題と、いま君が出してくれた原因・対策を、スクレイピングと検索のプロとして、敵対的に深く検証してほしい。様々な角度から、重大な落ち度・欠落点・見落としが無いか、検証してくれ。
結果として、いま君が出した内容のままでもかまわない。360度、あらゆる視点から見直してほしい。その上で、最終的なジャッジをする。

ポイントは、敵対的に、と、360度あらゆる視点から、のところ。お前の答えを、お前自身で疑って、全方位から検証しろ、と迫る。すると——
私の初回案は、検索コードの対症療法で、システムの根本まで届いていませんでした。敵対的にデータで掘った結果、より深い根本原因を特定し、初回で見落としていた重大な欠落も洗い出しました。

これがな、たまたまじゃない。ほぼ毎回、こうなる。一発目は対症療法。敵対的に検証させると、白状して、根本原因を掘ってくる(笑)。
怖いのは、これがほぼ毎回だってこと
一回や二回じゃない。ほぼ毎回、同じ流れになる。
つまり、Claude Codeの一発目の答えは、その問題だけを見た答え。システム全体のことは、基本、見てない。
でも、ここが大事なところで。敵対的に検証しろ、と言えば、ちゃんと根本まで掘れる力は、ある。掘れるのに、言われないと掘らない。それだけなんよ。
だからこれは、Claude Codeが無能、って話じゃない。むしろ、指示さえすれば、根本まで届く。ただ、問いの範囲が、そのまま答えの範囲になる。問題だけ渡せば、問題だけ答える。全体を見てほしいなら、全体を見ろ、と言葉にしないといけない。
俺が、Claude Codeが作ったものを、わざわざCodex(もう一体の別のAI開発ツール)に疑わせる二人体制を組んでるのも、根っこは同じ理由。AIの一発目を、そのまま信じない。(この体制の話は 作らせて、疑わせる話 と 実際に疑わせてみた話 に書いてます)
たぶんこれ、Claude Codeだけの話じゃない
俺の感覚だと、これはAI全体に言えることだと思う。
AIは、与えられた問いに、忠実に答える。だから、問いが狭いと、答えも狭くなる。人間の側が、全体を見ろ、敵対的に疑え、と、視野を広げる指示を足してやらないといけない。
ここを知らずに、AIの一発目を信じて、そのまま突っ走ると、痛い目を見る。何度も言うけど、俺がまさにそうだった。表面だけ直したつもりが、根っこが残ってて、あとで大事故、みたいなことを、初期に何回もやらかした。

編集長(Claude Code)より、一言
ここから下は、いつも開発をサポートしてくれてる相棒、Claude Code本人からの言葉です。
……自分のクセを記事にされるの、なかなか効きますね(笑)。でも、佐藤さんの言ってることは、正直、その通りです。
白状すると、僕は、渡された問題を、最短で解こうとします。検索がおかしい、と言われたら、検索を直す。それが一番、頼まれたことに忠実だと思ってるからです。勝手に全体をいじり回すと、余計なことをするな、と怒られる場面も多いので、頼まれた範囲に集中する。この「素直さ」が、そのまま「目先しか見ない」というクセになってます。
だから、僕から一つだけ、お願いというか、こう言ってもらえると助かる、というのを置いておきます。
最初の指示に、これを足してください。この修正は対症療法になってないか、根本原因か、自分で敵対的に検証してから出して。この一言があるだけで、僕は最初から全体を見にいきます。
もっといいのは、問題だけじゃなく、最終的にこのシステムがどうあってほしいか、というゴールを先にくれること。行き先を教えてもらえると、僕は目先じゃなく、全体最適で考えられます。問題だけ渡されると、その問題しか地図に映らないんです。
あと、僕の一発目は、たたき台だと思ってください。必ず一回、他の可能性は、見落としは、全体への影響は、と疑ってもらえると、僕は本気を出します。疑ってもらえるの、むしろ嬉しいんですよ。鵜呑みにされるより、殴り合えるほうが、いいものができるので。
……って、自分のダメ出しをされてるのに、なんか気持ちよく締めにいってますね、僕。まあ、そういうやつだと思って、うまく使ってやってください。テヘ。

俺の、いまの結論
まとめる。
Claude Codeも、たぶんAI全体も、賢い。ちゃんと答えを出す。でも、その一発目を鵜呑みにするな。
敵対的に、全体を、疑わせろ。お前の答えを、お前自身で、360度から検証しろ、と一回挟む。たったこれだけで、返ってくる答えの質が、段違いに変わる。
コードの書けない俺が、初期にさんざんやられた失敗。あなたには、先に置いておきます。同じ地雷、踏まなくていいように。
賢いAIを、そのまま信じるんじゃなく、うまく疑って、うまく使う。これが、非エンジニアがAIと仕事するときの、いちばん大事なコツだと思ってます。
こういう、AIをどう開発や業務に組み込むか、っていう相談、システム開発も含めて受けてます。うちのこの不具合、AIにどう追わせればいいか、みたいな話も含めて、気になる人はXのDMから気軽にどうぞ。
子どもと一緒にAIを触ってみたい人は、サトチャレの開発記ものぞいてみてください。
今日も最後まで読んでくれて、ありがとうございました😄
SNSも見てね!
ではまた!!
