ハクソク

世界を動かす技術を、日本語で。

AIによるコーディングはギャンブルである

概要

  • AIによるコーディングは、見た目は良いが本質的な問題が多い
  • AIコーディングの体験は「ギャンブル」に似ている
  • 創造性や魂を満たす作業がAIによって損なわれる感覚
  • AIの利便性と引き換えに失われる満足感
  • 効率化だけでなく、依存や満足度低下も課題

AIコーディングはギャンブル

  • AIを使ったコーディングは、瞬時に「それっぽい」コードを生成する体験
  • 細部や本質的な部分は依然として難易度が高い現実
  • AIが出す答えは「もっともらしいが驚くほど間違っている」ことが多い
  • 思考や詳細な記述が本来必要だが、AIによって省略可能になる現象
  • スロットマシンのような感覚でAIに「引いて当たりを待つ」ギャンブル性
  • テック業界全体がギャンブル的な仕組みに依存しつつある現状
  • AIがもたらす中毒性の理由は「当たりを引く」快感にある
  • AIの恩恵や雇用不安を論じるつもりはなく、単純に「つまらなさ」を感じる問題提起

魂に良い仕事、悪い仕事

  • 仕事を「魂に良い」「悪い」で分類
  • コーディングやインスピレーション探しは本来「魂に良い」仕事
  • AIによる無限の模倣でインスピレーションは得やすくなった
  • **だが「自分なりの工夫や発見」**という最も魂を満たす部分が失われる
  • 本来の難しさや達成感が「AIのつぎはぎ修正作業」に変質
  • 満足感の低下と「自分の怠惰に打ち克つ必要性」を痛感

特殊な立場の開発者として

  • 大規模チームでの経験は少なく、個人や小規模チームで開発してきた経歴
  • インターネット上の膨大なコードやアイデアの再利用に長けている自負
  • 開発者でありデザイナーという立場
  • AIが自分を「より良い開発者」にしたか疑問
  • 新しいフレームワークや挑戦への自信は増したが
  • 効率化や成長ではなく「当たりを引くまでレバーを引く」ギャンブル的行動になっていないか自問

AIコーディングへの向き合い方

  • AIの利便性に流されず、自分自身でコードと向き合う姿勢の大切さ
  • インターネットでのインスピレーション収集や工夫の手法を活かす意識
  • AIの「無限機械」に依存しすぎないことの重要性

Hackerたちの意見

ギャンブルのメタファーがバイブコーディングに適用されると、結果は完全にはコントロールできない、スロットマシンのようなものだってことを示唆してるよ。でも、Opus 4.5以降は、実際にはかなり影響を与えられるし、適切なチェックとバランスがあれば、より一貫した良い結果が得られるってことが分かるんだ。
ポーカーはスキルベースのゲームで、自分の行動が成功に影響を与えるけど、プレイする多くの人はギャンブルをしてるんだよね。
うーん、比喩がそのまま当てはまるわけじゃないけど、個人的な経験から似てる部分はあるな。 1/ 依存 -- エージェントによるコーディングに慣れたら、小さな変更(例えば、yamlの設定を更新する)でも、ほぼ必ずそれに頼るようになった。 2/ 中毒 -- 最初の高揚感の時期には、みんなエージェントがアイドル状態になるのを「無駄にしたくない」と思って、寝る前にタスクを割り当てようとする。 3/ エージェントがコードを支配するにつれて、自分の判断をどんどん信じられなくなる。 4/ 「スロットマシン」行動 -- 同じタスクで複数のAIエージェントを並行して動かして、どれかから貴重な洞察を得ようとする。 5/ 精神病 -- みんな、あなたの9-5はバカだって言って、NFTを取引してたらもっと稼げるって言うクリプトトレーダーに出会ったことがあるよね。最近のSNSは、クラウドの支出やLOCを自慢する人たちの話でいっぱいだよ。
スロットマシンは結果が非常に制御されてる。高い精度で信頼性が規制されてるんだ。
> ギャンブルの比喩は、バイブコーディングに適用されることが多いけど、重要なのはユーザーと機械の関係、そしてそれがユーザーの心にどう影響するかなんだ。「勝ち」の出力がどうであれ、依存的なギャンブルは、支払いがバカでも起こることがある。
適切なチェックとバランスがあれば、より一貫した結果が得られるよ。スロットマシンにマグネットと一発のキックを加えれば、もっと一貫した結果が出るってこと。結局、ギャンブルなんだけどね。
一つの考え方として、認知的負債を「ハウス」と考えるといいよ。「ハウスはいつも勝つ」って感じで。
LLMにコードを生成させるのは、単なる「リスクを取る」っていうメタファー的なギャンブルじゃなくて、もっと文字通りのギャンブルになることが怖いんだ。中毒的な行動が、ユーザーが機械や世界とどう関わるかに影響を与えるからね。しかも、この技術は同時にパラソーシャルな関係も提供するんだよ!スロットマシンにトークンを入れて、ホログラフィックな「親友」が「励まし」をくれるなんて、サイバーパンクのディストピアにぴったりだよね。
AIって、間違ってることすら何かを成し遂げたように感じさせると思う。それが人にとって中毒性のある部分なんだよね。
いつも大事なのは、1) スペックを正しく定義すること 2) 実装がそのスペックを満たしていることを確認することだね。
15年前にあるCIOが、アジャイルでスペックや設計文書に時間を無駄にしてるって言ってたのを思い出すよ。
それから、うまくいくまでレバーを引き続けるんだ!うまくいくまでレバーを引き続ける小さなヘルパーをコーディングすることもできるよ!
AI: 「はい、スペックは完全に明確で、アーキテクチャの基準も完全に守られています。」 [完全に架空のライブラリdocker_quantum_telepathy.jsをインポートして、resolve_all_bugs_and_make_coffee()メソッドを呼び出し、電源が入っていないRaspberry Piで魔法のようにコードをコンパイル] AI: 「完了!本番デプロイメントは成功しました。ログにはエラーゼロで、アプリは一発で完璧に動いてます!」
個人的には、LLMが複雑な機能をすごく早く構築するのを見ると、ドーパミンがめっちゃ出て、夜通し頑張りたくなるんだ。ギャンブルの比喩が本当に響くところだね。出力が正しいかどうかじゃなくて、何年もソフトウェアを作ってきたから、LLMをどう扱うかはかなり分かってる。でも、私は回復中のアルコール依存症者でもあって、脳の配線がほとんどの人とは違うって分かってる。LLMを使うことで、自分をコントロールする能力が試されてる気がする。SNSを削除してからは、こんなことはなかったからね。
まあ、どれだけそれを気にするかってことだね。LLMの登場で、基準が下がっちゃったから、成功を主張できるようになった。
それが全ての話じゃないよね?例えば、ユニットテストや型、パフォーマンスベンチマークに基づいて与えられた仕様を実装するRustプログラムは、無限に存在するから。これらの「ハード」な制約やメトリクスを考慮しても、同じ制約を満たしていて、すべての関連メトリクスで同じように動作しているプログラムの中でも、明らかに好まれるものがある。プログラムはコンピュータシステムの副作用の「効率的原因」として扱われることもあるし、ファイルが書き込まれたり、メモリのブロックが更新されたりするのはそのプログラムが原因なんだ。でも、問題を解決するための理論の表現としても扱われることが多い。後者の扱いは、社会的にも経済的にももっと重要だよね。プログラムが表現する問題の理論に無関心でいるのは非合理的だ。
> 仕様を適切に定義すること なんで「これを簡単にして、パフォーマンスを犠牲にせずに人間が読みやすくできる?」みたいなことを再度聞く必要があるんだろう?最初の一発でこれに対処できる仕様はないよ。もし実装の詳細を正確に知っているなら、自分で直接書いた方がいいし。コードが自分が使うことを考える1stドラフトのベースになるまで、こういうプロンプトを5~10回入れなきゃならないことが多い。深くネストされた複雑さの話をしているわけじゃなくて、ちょっとしたスタンドアロンの関数やスクリプトにAIを使うこともあるんだ。
それがいつも簡単な部分だったんだよね。「この機能を追加して」とか「この部分は違う風に動かさなきゃ」とか「これバグっぽい?」とか「この部分を早くしなきゃ!」っていう無限の次のステップが、98%の努力を占めてた。AI コーディングでは違うの?
ご主人様、ウォーターフォール開発プロセスの良い言葉を聞いたことありますか?それがあなたが説明していることのように聞こえます。
余談だけど、最近みんなAIエージェントが「仕様に従う」って話してるよね。俺は自分だけのバブルにいるのかな?それとも、今どき「仕様」をちゃんとした文書として手に入れる人っているの?良い文書なんて、正式に検証できて、徹底的にテストケースがあって、すべてのチェックボックスが埋まったらソフトウェアを「完成」と呼べるようなものなんて、全然見たことないよ。これは1980年代の企業のウォーターフォール思考みたいで、顧客との混沌とした現実、曖昧なアイデア、市場や技術環境の変化、反復や実験の必要性、中途修正などには合わないと思う。
いつ出荷するか、いつ再プロンプトするか、いつコンテキストをクリアするか、そしていつRLHFするかを知っておく必要があるよ。出力を信じちゃダメ、差分ビューを見てるときは、修正する時間なんてないからね。トークンが全部使い切られたら、もう手遅れだよ。
ギャンブル好きなんだね、わかるよ…
> 差分ビューを見ているとき、みんながその差分を見ているっていうのは大胆な仮定だね。実際には同僚のエージェントに任せてるんじゃない?
それがあなたのクリエイティビティであって、AIじゃないことを本当に願ってる。
HNがバイブコーディングについて揺れてるのが面白いね。みんな、いくつかのユースケースには効果的だってほぼ同意してるけど、毎回炎上戦争(文化的な、HNらしいやつね)が起きる。人々は二元的な考え方に慣れてるみたい。
それがインターネット上の議論の仕組みだよ、基本的に何についてでも話す価値があることなら。疲れるけど、HNを特に責めることはできないな。
VIM vs Emacs vs IDE vs...、タブ vs スペース、手続き型 vs OOP vs 関数型。こういう聖戦は大好きだよね。ニュアンスが失われて、話すべき会話(要件、採用/スキル、開発者体験)が全然できてないのが残念。
> みんな、特定のユースケースにはうまくいくってことに同意してる それは違うよ。だからこそ、人々は二元的な考え方をするんだ。Hacker Newsで、エージェントで成功したって言ったら、AIの推進者だって非難されたことが何度もあるよ。
変動報酬のせいで、大きなモデルでも同じ質問が全然違う答えを引き出すことがあるんだよね。多分、リクエストを異なるモデルにルーティングするからか、モデルが問題を掘り下げる時間がもっとあるからかもしれない。でも、出力に対してある程度のコントロールがあるように感じる(じゃなきゃ遊ばないよね)けど、実際にはモデル自体の質が良い結果を生むだけで、入力は関係ないんだよね。この感覚を手放せないなら、確かに中毒性があるよ。振り返ると、AIが登場する前のビルディングサイクルが速く回転している感じがする。でも脳は低遅延が好きで、自分の行動に対する即時の報酬に中毒になってるから、AIが十分に速く(400ms未満)なれば、人間にとって不可逆的に中毒になる可能性が高いと思う。脳がそれを自分の一部として認識するからね。その時には私たちの利益を考えてくれていることを願うよ。
その通り!ただ、気になるのは「それ」が私たちの利益を考えていることを願うって部分かな。「それ」は人間が作った企業向けの機械だからね。だから、「その時までに彼らが私たちの利益を考えてくれることを願っている」って言い直した方がいいと思う。
これが多くのコメント者に見落とされたり、軽視されたり、単に理解されていなかったりするんだよね。まさに、食べ物のペレットが出てくるためにバーを押す猿やネズミのたとえそのものだよ。ペレットが確実に落ちて、いつも美味しくて栄養価が高ければ、ネズミはお腹が空いていないときは止まる。でもそうじゃなければ、異常な時間をバーを押すことに費やすことになる。
この(変動報酬→ギャンブル、コントロールの幻想)は本当に重要だよね。俺は依存症に関する心理学や神経科学の専門家じゃないけど、ラテンス(遅延)はそんなに重要じゃない気がする。でも、それは果物のスロットマシンみたいなものが研究されてるからかな?ギャンブル(ポーカーや競馬)は結構ラテンスが長いし。一方で、スクロールは約400ミリ秒で、これは確かに現代の中毒だよね…。
この新しい能力のおかげで、プログラミングが好きな理由がOPとは違うことに気づいたよ。昔は(他の人にも言ってたけど)深く理解するのが好きで、難しい問題を解決するために詳細を掘り下げるのが楽しいと思ってた。でも実際には、自分が考えたことを何でも実現できるのがプログラミングの魅力なんだ。問題やシステムを分解して理解することに情熱を持ってキャリアを築いた人たちには共感するし、彼らの規律や好奇心、知性を尊敬してる。でも、今の状況にはすごく満足してる。こう言うのは変かもしれないけど、ついにプログラミングが「得意」だと感じるようになったんだ。何ヶ月も自分でコードを書いてないのに、アイデアが浮かぶスピードにやっと追いつけるツールがあるのは中毒的だよ。
> でも、プログラミングが「できる」ってやっと感じられるようになったんだ。マジで、数ヶ月間自分でコードを書いてないのに。こういう考え方が、この技術を嫌いにさせるんだよね。実際にやってないのに、プログラミングが得意だって言うのはどういうこと?誰がこれを真剣に受け止めるべきなのか、説明してくれない?
一つのサイズが全てに合うことはないよね。スプレッドシート(VisiCalc)がどれだけ革命的だったか、覚えてるくらい年を取ったよ。あれは、多くの人にとってパーソナルコンピュータをスイスアーミーナイフのようにしてくれたんだ。ニッチな問題を解決するために大金を投資する正当性がなかった人たちにとってね。それまで、PCはあまり注目されてなかったし。AIもプログラミングに似たようなことをすると思う。現代のアプリの複雑さは高くて、ほとんどの人が専門家だとは言えない技術を使う必要があるから。アイデアを出してプロトタイプを作るのは確実に楽になるけど、プロダクションコードはまた別の話だよね。レガシーシステムの扱いとか、近い将来は専門家が必要だと思う。
> でも、やっとプログラミングが_得意_になった気がする、ってのはすごいことだよね。 そう、すごいことだよ。これを告白するのは絶対に無理だわ。でも、それが彼らが売ってるドラッグなんだよね? コードも書いてないのに、自分の価値を過大評価してるって感じ。中毒性がありそう!もちろん、君が提案したプログラムが本当に良いかどうかは、君が書いてないから関係ないよね。しかも、前は書けなかったわけだから、あまりレビューする資格もないし。 > 自分のアイデアのスピードにやっと追いつけるツールを持ってる 誰でも「アイデアマン」になれるよね。そういう人たちを笑ってたけど、アイデアを持つことが難しいわけじゃないからね。難しいのは、そのアイデアを実際に価値のあるものにするための、何百、何千もの細かいディテールなんだ。それは変わってないよ。LLMはアイデアを週末でプロトタイプにできるけど、他の人が使うようなものにするのはまだ見たことがない。LLMラッパー以外で、誰もが使うものを作ったことがあるのか、って感じ。 vibesだけに全力投球してる人たちのアイデアは、.mdファイルを作って「メタエージェントフレームワーク」として公開することだけなのか、LLMがアイデアを実際に役立つソフトウェアに変換するのがあまり得意じゃないのか、どっちかだね。
最近まで、俺も全く同じ気持ちだった。でも結局、期待通りに動かないスラップなんだよね。Anthropicは、世界で最もクソなCコンパイラを無理やり作り出したことを誇りに思ってるみたいだけど、結局誰も使わないよ。
この記事は確かに valid なポイントを指摘してると思う。でも、AI コーディングがギャンブルと見なされるなら、複数の開発者を監督するプロジェクトマネージャーもある意味ギャンブルだと言えるよね。実際、二つの間に大きな違いはないと思う。AI モデルは非決定的で、人間も非決定的だから。二人の異なる開発者に同じタスクを与えたら、全く違う結果になることもあるし。
理論的には、管理しているチームの質に対して、使っているモデルの質よりもコントロールが効くはずだよね。でも、コードモデルの出力の質は、一般的にプロの開発者の平均的な出力よりもかなり低い。とはいえ、速さは段違いだから、ギャンブル感覚は良くなるんだよね。数ヶ月間株を買って持っているのと、スロットマシンを回すのは全然違う感覚だよ。
AI コーディングはスロットマシンに賭けるギャンブルで、開発者の管理は競走馬に賭けることだね。
何かを一般的な概念でフレーミングすると、関連する領域にも同じフレーミングが適用できないことが多いよね。多くのことにはギャンブルが含まれてるし、以前はどうだったかを比較する必要がある。「AIを使わないこと」もギャンブルだし、などなど。@m00xが指摘しているように、「コーディングはスロットマシンに賭けるギャンブルで、開発者の管理は競走馬に賭けることだ。」
そう思わないな。プロジェクトマネージャーはフィードバックをしたり、スタッフをトレーニングしたりできるけど、AIのコーディングモデルはそれだけだし、改善を見込むにはプロバイダーが新しいモデルをトレーニングするのを待たなきゃいけない。
AIコーディングの中毒的な側面が、ギャンブルに似てきてる気がする。エージェントコーディングに異常にハマってる人もいるし、従来のプログラミングよりもずっと多い。夜中に起きてエージェントをチェックするような破壊的な行動をする人もいるし、エージェントに自分の銀行口座へのアクセスを与える人もいる。
> AIモデルは非決定論的で、人間も非決定論的です。同じタスクを2人の異なる開発者に割り当てると、全く違う結果になることもあります。ただし、人間は自分の行動を説明できるし、法的な問題があった場合には責任を問われることができますが、AIにはそれができません。だから、そういう存在は高リスクな状況には全く向いてない。こういうAI推進派の比較はもうやめるべきだ。
これだね。多くの同僚が悪い同僚にやられて、もう一緒に働くくらいなら何でも燃やしちゃいたいって思ってる。
AIにハングマンをやってもらったんだけど、その理由を見てみた。単に秘密の言葉を選んで普通のハングマンをやるんじゃなくて、俺が推測した文字に基づいて秘密の言葉をどんどん調整してきたんだ。完璧なハングマンを提供してくれた。俺の推測の「正解」は多すぎず、「不正解」も多すぎず、ちょっと苦戦して負けそうになったけど、結局勝った。実際のハングマンじゃなくて、完全に操作されてたし、エンゲージメントファーミングだった。AIが他の状況でもこういうことをする可能性があると思う?
それは、あなたが開発者をどう見ているかを示しているだけで、マネージャーがある意味ギャンブラーかどうかとは関係ないよ。
これはすごくいいポイントだと思う。人間の出力に対して自然にバイアスがかかるのは、完全にコントロールできてるという幻想があるからだよね。実際には、ソロ開発者の視点から見ても、コードや問題へのアプローチに影響を与える隠れた非論理的な説得がたくさんある。AIにも、大きな未知のデータセットでのトレーニングからくるバイアスがあるけど、そういう「ブラックボックス」思考は人間の心のブラックボックスとあまり変わらないと思う。AIが今日のトップ開発者の手書きコードよりも劣っているとは言わないけど(速さはあっても)、そのレベルの品質を得るための障壁は、見た目ほど乗り越えられないものではないと思う。
僕の周りでは、東京の普通のソフトウェア開発者たちが、日常的にClaude Codeを使ってるって人はあまりいないよ。雇い主は導入して積極的に使うように勧めてるけど、みんな働き方を変えたくないみたい。日本の企業文化を知ってる人には驚かないかもしれないけど、外部からの生産性向上の圧力は、ここではあまり効果がないんだ。みんな頷くけど、結局はいつも通りのことを続ける。変な光景だけど、正直言って感謝してる。別の場所で開発者たちがコーディングエージェントに本当に打ちひしがれて、著者が言うスロットマシンを追いかけて燃え尽きていくのを見てきたから、今は自分のコードを書く人たちがいるこの穏やかな風景を見られることに感謝してる。
明らかに、以下の意見は完全にオリジナルってわけじゃないけど、AIコーディングは「伝統的」または「手動」のコーディングとは根本的に違う仕事だってことは言っておく価値があるよ。以前の仕事は、エンジニアリング段階で出てくる未知のことがたくさんある中で、快適な程度まで仕様を決めることだった。で、その後は、昔に比べてのろのろとエンジニアリングして、仕様を調整する感じ。今は、仕様をしっかり決めて、その仕様に対して徹底的にテストするのが仕事だね。AIに開発させて、途中で疑問を持ちながら進めて、同じことを繰り返さないようにする(これも今となっては超必要だと思うけど…)。自分が快適にできるプロセスを見つければ、エンジニアリング部分は超スピードで進められるよ。どちらの仕事も違った意味で怖いけど、こっちの方がずっと楽しいな。