
2026/03/22 20:09
コードの死についての報告は、実際よりも大きく誇張されています。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
この記事は、AI が曖昧な英語を迅速に動作するコードへと変換し、「バイブ・コーディング」ワークフローを可能にする一方で、ソフトウェア開発における明確な仕様、厳密な抽象化、および慎重な設計の必要性が消えるわけではないと主張しています。ブートランド・ラッセルの曖昧さ論、ディクストラの作業記憶限界、そしてダン・シッパーのエディタバグやソフィー・アルペルトによる Slack の通知フローチャートのリファクタリングなど、実際の事例を引用し、適切な抽象化が複雑さを管理しエラーを防ぐ方法を示しています。 歴史的背景として、Google Docs や Notion などの初期共同作業ツール、著者自身の10年にわたる協働機能追加への取り組み、そして Val Town の React‑Router 問題を解決するために開発された Opus 4.6(50 行デモフレームワーク)の創設が紹介されています。 記事は、AI が AGI に近づくにつれ、人間の知能と区別がつかなくなるだろうと予測しながらも、コーディング上の課題は残ると述べています。AI は協働エディタなど複雑なシステムに対してより良い抽象化を生成する手助けができるものの、コード自体は依然として不可欠であると指摘しています。 開発者や企業にとって「バイブ・コーディング」はイテレーションを加速させる可能性がありますが、規律ある抽象化慣行は引き続き維持されるべきです。高度な AI アシスタントが普及しても、ソフトウェア業界は高品質コードと熟練したコーダーを継続的に重視し続けるでしょう。
読者への主なポイント:
- AI はコーディングを高速化するが、明確な設計の必要性を置き換えることはできない。
- 抽象化は複雑さを管理する上で不可欠であり、AI はそれらを支援するにすぎない。
- コーディング専門知識は AI の進歩に関わらず依然として重要である。
本文
2026年3月21日
十分に詳細な仕様はコードです
まず、こんな可愛い漫画から始めます。
1. 「英語の仕様は直感的に正確に思える」――だが…
英語で書かれた仕様は、直感上は正確さを感じさせます。
しかし、苦い経験を経て学ぶと、その正確性が実際には曖昧なままであることに気づくのです(最後のフレームの表情で全てが語られています)。
“Everything is vague to a degree you do not realize till you have tried to make it precise.” – Bertrand Russell
プログラミングは、執筆と同様に「行いながら何をしているか」を反復的に鋭利化していく作業です。
このエッセイを書き上げるまでに何度もドラフトを書いたことを想像できません。AI はその手助けをします:英語を瞬時に実行可能なコードへと変換し、さらに「ボタンをここに移動させて」「色を青くして」などと指示すれば、欲しいものが少しずつより正確に形作られます。
これこそが vibe coding(雰囲気でコードを書く) が完璧な表現なのです。
自分の英語レベルの「雰囲気」で操作しながら、AI が生成した成果物を受け取り、自分の思考を磨くというイメージです。
しかし、vibe coding は「雰囲気が正確な抽象化である」という錯覚を与えます。
それは機能や規模が増えるときに漏れ出し、想定外の振る舞い(バグ)が低レベルの抽象化から現れ、あなたの一日全体を台無しにします。
これは Dan Shipper が自らの雰囲気で作ったテキストエディタアプリがバイラルになり、その後クラッシュした経験です。結局「ライブコラボレーションはただ単に極めて難しい」ことが分かりました。
2. ライブコラボレーション――直感的には完璧に見える仕様
Google Docs や Notion を使ったことがあるなら、ライブコラボレーションは「正確な仕様」であると感じるでしょう。
しかしそれが本当でないことを最初から察知するのは極めて難しいです。私自身も10年前に協働テキストエディタをプロダクトに追加しようとした際、予想外の複雑さに直面しました。その困難さを覚えていません――それこそが問題の一つです。
複雑さは退屈で不快、そして詳細や境界条件をすべて記憶することも困難だからです。
例として Slack が通知を送るタイミングを決定するフローチャートがあります:
(ここに図が入ります)
しかし物語はまだ終わっていません。私たちは複雑さをマスターするための極めて強力なツール――抽象化 を持っています。
3. 抽象化とは何か
人間の脳には基本的な制限があります。一度に考えられる情報は約七(±二)項目です。
それ以上を扱う唯一の方法は、複数のものを一つに圧縮すること――抽象化 です。
“The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.” – Edsger Dijkstra
Sophie Alpert は巧みな抽象化で Slack の図を次のようにシンプル化しました:
(図)
プログラミングの最大の魅力は、複雑さを制御するためにより良い抽象化を生み出すことです。私のお気に入りは関数型プログラミング概念、特にFunctional Reactive Programming であり、私はそのテーマについて素晴らしいエッセイを書きました。協働テキストエディタは本質的に複雑ですが、それは私たちが常により良い抽象化を探し続けているということです――ReactJS や Tailwind CSS がそれぞれの領域で行ったように。
4. AGI(汎用人工知能)への展望
AI は速度・精度・コストが驚異的なスピードで向上しています。いつになるかは分からないものの、魔法を信じていない限り、機械知能が人間知能と区別できなくなる時点――AGI ―まで時間が経つだけです。
AGI 世界は「雰囲気」世界に見えるかもしれません。誰もが 100 Karpathy レベルの天才を月額1,000ドルで手に入れることができれば、細部に悩む必要はないでしょう。しかしそれは私にはジョークです。実際には、技術が到達する前から抽象的にしか考えられません。
もし私がそのレベルの知性を持っているとしたら、私はもっと汚いコードを書き出すことは決してありません。そうじゃないでしょうか?
多くの人は「コードはソフトウェアだけでなく、その自体も重要な成果物だ」という事実を誤解しています。正しく書ければコードは詩です。私がこれを語るのは、スチューデントシンドロームや利益追求ではありません――車が発明されたとき馬術師が持つように。
5. 執筆との類推
「vibe writing(雰囲気で書く)」という言葉が存在しないのは、まさにその証拠です。
文法的に正しい文章には何も神秘的なものはありません。ChatGPT が偉大な小説家やジャーナリストを職業から追い出すとは誰も主張していません。私たちはそれが非論理だと知っています ―ただし AGI になるまでは。
定義上、機械は素晴らしいノン・スロープコードを書き、作り出すことができます。同じ状況がコーディングに当てはまります:AI はますます悪いコードを減らします。私たちはこの限界を乗り越えるために AI を活用し続けています。
Simon Willison が言うように、AI はより良いコードを作る手助けをすべきです。AGI が登場するとそれは容易になります。最初に取り組むのは最も難しい抽象化問題でしょう。私たちは AI を使ってより良い抽象化を設計し、複雑さを理解・制御できるようにします。
AI が賢くなるにつれて「良いコード」の必要性がなくなると考える人もいますが、それは ChatGPT で汚いコードを書き続けることに他なりません。AGI が出現したら、私たちは AI を使って抽象化を改善し、協働テキストエディタライブラリなどをよりよく作ります。
例えば、Opus 4.6 の成功例として、私は Val Town 用のフルスタック React フレームワーク構築に役立てました。React Router 7 を完全に統合した問題を一発で解決し、結果は私の新しい VTRR フレームワークです。
6. 50 行で完結するフルスタック React アプリのデモ
(コードサンプルが入ります)
もしこれと同等に複雑さを美しくマスターできる別のスニペットをご存知なら、ぜひ拝見したいです。
7. 「コードは死んだ」という報道は大げさ
社会の約99%がコードは死んでいると同意しています。昨日、ポッドキャスター Sam Harris が自信満々に「誰もコードを学ぶ必要はなくなった」と語っていました。これは非常に悲しいことです。印刷機が発明された頃に物語性が死んだと考えるのと同じです。実際、コードは始まったばかりです。AI はコーディングを大きく前進させるでしょう。
このトピックについてもっと話したいですが、すでに三倍以上長くなってしまいました。ここで一旦止め、私のお気に入りのフォーマリズムに関する名言を残します。
“Instead of regarding the obligation to use formal symbols as a burden, we should regard the convenience of using them as a privilege: thanks to them, school children can learn to do what in earlier days only genius could achieve.”
– Edsger W. Dijkstra, On the foolishness of “natural language programming”
“There are two ways of constructing a software design: one way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.” – Tony Hoare (h/t Paul Buchheit)
“The quantity of meaning compressed into a small space by algebraic signs is another circumstance that facilitates the reasonings we are accustomed to carry on by their aid.” – Charles Babbage, quoted in Iverson’s Turing Award Lecture, quoted in Succinctness Is Power by Paul Graham