- 最近のコンピュータ利用者は、自分の意思とは無関係に、数多くの意味のない作業を繰り返し実行し、コンピュータに言われるがまま従っている
- LLMが開発者のAPI設計のやり方に影響を与え、実際にAIが提案した機能を開発者が受け入れ、まもなくコードの大半をAIが書くようになるという予測まで現れている
- たとえば、SoundsliceはChatGPTが誤って案内した機能を実際に追加した
- これは、LLMが数多くのAPIを分析し、開発者が最初に思い浮かべそうな直感的な設計を提案するため
- 新しいアイデアや独特なアプローチを開発する際にはLLMは適していないが、多くの場合、最も当然な設計に従うことが効果的でありうる
- いまやAIがツールの利用だけでなく、ツールの設計方法まで主導する時代に入りつつある
Gaslight-driven development
日常化した無意味な作業
- この10年、コンピュータを使う人々は、会員登録、メール認証、Cookie同意、CAPTCHA入力など、本質的には不要な作業を繰り返してきた
- ユーザーは望んでいなくても、コンピュータが命じるとおりに従うしかなかった
- こうした反復作業を通じて、私たちはすでにある程度、機械に言われるまま従う生活に慣れてしまっている
LLMが変える開発の現実
- 最近では、LLMがAPIやインターフェースがどうあるべきかについて意見を言い始めている
- 2025年9月にはコード全体の90%をAIが書くようになるという見通しまで出ている
- Soundsliceの事例のように、ChatGPTが存在しない機能をあると勘違いし、その機能を求める顧客要望が続いた結果、実際にその機能を追加したこともある
- Instantでも似た事例が発生し、従来は
tx.updateでinsertとupdateの両方を処理していたが、LLMがtx.createを使うコードを出し続けたため、最終的にtx.createメソッドを追加することになった
この現象の意味
- この変化が肯定的なのか否定的なのか判断しにくい
- 一方で、LLMは数多くのAPIを学習してきたため、開発者にとって「最も直感的」な方法を提案する効果がある
- 初心者の視点(newbie’s POV)でAPIをテストできる新しい方法でもある
- 以前は開発者がミスをすると自分でドキュメントを調べて修正していたが、いまはLLMが誤った使用例を継続的に提示することで、開発者側も問題をより早く認識できる
限界と悩み
- 革新的な作業にはこのアプローチは向いていない
- LLMは馴染みのないパターンや、まったく新しい概念を理解できない
- 結局、APIのような領域では「平凡さ」が最善なのかもしれない
- 多くの状況では複雑に設計するよりも、AIと開発者の双方が直感的に理解できる形のほうが有利だ
結論: 新しい時代の始まり
- AIはもはや与えられたツールを使うだけにとどまらず、ツール自体がどう設計されるべきかについて意見を持ち始めている
- そしてその意見はしばしば、「もともとそうだったかのように」開発者や組織をガスライティングする形にもなりうる
- 今後はAIの期待と常識に合わせた開発が自然な標準になる可能性が高まっている
6件のコメント
たまに、経路依存性という大きな概念に、LLM依存性という強力な釘が打ち込まれているように感じることがあります。『以前から使っていたから』が『LLMが好むから』へと変わっていく感覚は、結局どうなっていくのでしょうか……
以前から使っていたものを、LLMが学習したんですよね..
「もうコンピューターの電源を切っても大丈夫です」
完璧な比喩!!
Hacker Newsの意見
421: Misdirected Requestステータスコードを返したらどうなるか想像してみた。あるいは実際の501: Not Implementedを使う手もある。もし501だとニュアンスが合わないなら、513: Your Coding Assistant Is Wrongという新しいステータスコードを提案したいHTTPステータスコードのWiki
513: Your Coding Assistant Is Wrongというアイデアがとても面白かった。おかげで楽しめた。一方でHTTP 407 Hallucinationも推したい。サーバーがリクエスト自体は理解しているが、現実とは一致しないと判断した、という意味だGPS is wrongの事例
(JavaScriptコードあり)
科学論文リンク, 神経科学のWiki
Chess Royaleのスクリーンショット
tx.update関数がエンティティの挿入と更新を両方担当するようになっているが、LLMはずっとtx.createを書くので、結局tx.create関数も作った。こういう紛らわしい部分で、LLMだけでなく実際の開発者たちも無駄に多くの時間を費やしてきたのではないかと思うtx.createが最初から存在しなかったなら、誰かが時間を無駄にすることもなかったのではないかupdateよりputと名付けるほうが正しいと思う。updateは誤解を招きうるupsertが適切だと思うputという名前は既存内容を上書きすることを示唆し、upsertは挿入/更新の両方を意味する、という違いがあるユーザーがメール認証や会員登録をする理由も、コンピュータに命じられたからではなく、人間による設計上の選択だったと思う
thesis(論旨)と呼ぶこと自体が寛大すぎる解釈だと思う。自分はその部分を見てすぐページを閉じた今後はコードの可読性やSOLID原則、複雑性に集中するのではなく、自分が使うagentic IDEがコードコンテキストをどれだけうまくインデックスできるか、モデルがそのコードからどれだけ良い生成能力を見せられるかのほうが重要になりそうだ
コード変更の速度が非常に速くなるぶん、コードの保守性がむしろ中核的な指標になり、プロンプトとコードの整合性や、偶然うまく噛み合ったコードの有用性がより注目される世界が来るだろう
たとえばAWSの領域には
dev``prodがあり、Expoにはtest``productionがあるので、複数のプロジェクトを行き来すると、思った以上に頭を使わされるLLMもこうした問題をはるかに大きな規模で経験しているのだろうと思う
こうした不要なAPI命名/挙動の混乱に使われていた脳のシナプスを、本当に意味のあることへもっと回せるなら、それが最善だと思う
LLMがどれだけ賢く名前を付けても、incoherent stochastic process(首尾一貫しない確率的過程)に基づく以上、問題は残る
そして、なぜ環境の命名が統一されていないのか真面目に問い直したことがあるのか、と聞きたい
以前CTOだった立場からすると、こうした点は組織内のコミュニケーションや基準不足など、改善すべき兆候だと思う
実際に文化を改善し、メンバーの意識も高められるのだから、簡単に直せるこの種のことをLLMに任せるのではなく、もっと直接面倒を見るべきだと言いたい
以前のHacker News議論を見る
Soundsliceのバイラルな成功