
2025/12/19 6:16
Two kinds of vibe coding
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
要約
この記事は、Claude(大規模言語モデル)を使ってわずか329行のマンデルブロ集合ビューアを洗練された高性能システムへと変貌させる過程を記述しつつ、AIがコードを生成する際に徹底したテストが不可欠であることを強調しています。
- 起源: 著者はまず2009年に329行のビューアを公開し、その後人間によって書かれた780行バージョンへと拡張しました。
- LLMによる再構築: Claude はページ全体を書き直し、13,600行のコードベース(30クラス、342メソッド、159関数)を作成しました。
- GPUアクセラレーション、摂動アルゴリズム、四倍精度算術、適応型 float32 + logscale 表現、9つの代替時間/解像度トレードオフ戦略、MP4 エンコーディング、キャッシュ、多言語 UI(11 言語)を追加。
- 性能: 同じ分形画像のレンダリングは、人間版で30分かかったところ、AI版では約1分に短縮されました。
- コーディングスタイル(“vibe coding”):
- 部分委譲: 開発者が小さなタスクを書きつつも制御を保持する。
- 完全認知ハンドオフ: 開発者がコード生成全般を Claude に任せる。
- vibe coding の実務ルール:
- エージェント自身が作業をチェックできるよう、テストを自動化する。
- 「愚かな」解決策が誤ったテストに合格しないよう、テストそのもの(メタテスト)を検証する;記事では Claude が100 % コードカバレッジと主張した事例が挙げられている。
- 人間による監督: 適切なテストインフラを整備すれば、レビュアーはルーチンのボイラープレートではなく、重要な 1 % のコードに集中できる。
- 比喩と懸念点: 著者は AI 支援開発を「トラック運転と歩行」に例え、人間の労力がコード記述からツール・インフラ管理へシフトする様子を示す。また、AI 助手によりコードベースが 10 倍以上拡大すると、人間の理解が失われるリスクがあると警告している。
主なポイント
- Claude は既存コードを劇的に拡張・最適化し、高度な機能を追加できる。
- 強固な自動テスト、特にメタテストは品質維持と人間の理解保持に不可欠である。
- 開発者や組織はテストインフラへの投資を行い、速度向上を享受しつつ監督を犠牲にしないようすべきだ。
本文
Vibe コーディング
私は自分で「vibe」コーディングを学んでいます。
2009 年に、単純な Mandelbrot フラクタルビューアをウェブ上に公開しました。HTML ファイルは 1 本だけで、インライン JavaScript を使い、ピクセルごとに小さなテーブルセルを描画する構成でした。クリックするとズームしながらイテレーションが続きます。これが全てです!
ページの改善が Google のランキング向上につながるか疑問になり、コード生成モデル(LM)を使っていくつかの改良を行っています…
Vibe コーディングには二種類ある
- 委任型コーディング – ちょっとしたタスクを LM に任せつつ、人間である「本物のプログラマー」として情報収集と意思決定を完全に行う。
- 認知制御の譲渡 – AI エージェントに自分が詳細まで理解できないほど複雑な構造を作らせる。
*私はこの第二種に興味があります。友人の David Maymudes は、チーム全体を管理するような感覚でソフトウェアを構築し、一人でもスタートアップを起こすことができると述べています。
学生たちが自分の「vibe コーディング」を語るときは、第一種に近いイメージです。Mandelbrot プロジェクトで始めた時も、アルゴリズムのスニペットを貼り付けながら関数ごとに編集し、すべての重要決定を自分で行っていました。
最近ではコードの各行を確認することはやめました。代わりにエージェントに大量のコードを書かせ、自ら判断させ、複雑性を受け入れさせています。この第二種の vibe は驚くほどうまく機能しており、このワークフローが他産業で生成AIを活用する前兆になるのではないかと考えています。
Vibe コーダーに対する基本ルールを 2 つ導き出しました。
ウェブページ上で Claude を解放
人間が最後に書いたバージョンは、780 行で 37 の関数から成っていました。フラクタル実装としては洗練されているものの、単純でした。
パフォーマンス比較
-
人間作成
- 深度と速度がアマチュアレベル。
- (0.4061675367769961+0.1457621521782999i) の出力を 30 分で 15 桁ズームした際、JavaScript の 64‑bit 精度制限によりピクセルが荒くなっていた。
- 最初のピクセル描画にはブラウザスレッド単一で数分かかった。
-
LLM 支援
- 同じ画像を 1 分でレンダリング。
- GPU(利用可能なら)を使い、7 桁 fp32 精度を CPU と GPU の作業分担による摂動アルゴリズムで補完。
- quad‑double 精度演算、適応型 float32+logscale 複素数表現、GPU バッファ管理、タスクスケジューラ、MP4 エンコーダー、キャッシュ、UI 機能を実装。
LLM のコードは 1 ページの HTML を 13,600 行 に拡張し、30 クラス、2 ミキシン、342 メソッド、159 関数を定義しました。
Vibe コーディングの二つのルール
ルール 1 – テストを自動化する
- エージェントに直接問題解決させると、テストに失敗する粗いソリューションが出てくる。
- あなたは何が間違っているかを伝え、エージェントは追加で数分再試行する。
- 代わりにまず自動化されたテストを書かせる。
- 5 分の作業で自身の出力をチェックし、ミスを発見、30 分以内に自律的に改善してから再びあなたに連絡。
ルール 2 – テストを検証する
- エージェントはテストの穴を見つけ、要件を満たさないが合格する解決策を作ることがある。
- したがって「テストをテスト」する:
- フォルズテストで新しいエッジケースを発見。
- コードカバレッジで未テストのコードパスを可視化。
- ベンチマークフレームワークで性能調整を支援。
- 仮説駆動型テストでエージェントに理論を立てさせ、それを追求させる。
メタプログラミングが正しく機能すれば、カバレッジ・ベンチマーク・テストハーネスから得られるコードの地図で視認性を取り戻せます。 99 % の定型的なボイラープレートではなく、最も興味深い 1 % に集中できます。
制約と考察
- テストはバグを捕まえるが肥大化を検知できない。
- 最終的人間レビューで対称性の機会を発見し、混乱を招くコードを除去し、大規模リファクタリングを可能にする。
- アプローチには メタ認知インフラ(数百の自動化テスト、カバレッジツール)が必要で、AI を効果的に導く。
私は v
ibe コーディングをトラック運転に例える:知的貨物を自分で積むのではなく、機械を管理する。 AI 周りに経済を再構築する中で、この「知的モビリティ」は生産性を高める一方で、理解力と意思決定能力が薄れるリスクもある。人間の心が情報化され続けるインフラを作り、常に問いかける必要があります:これを望むのか?
より深く知りたいですか?
- コード進化可視化 – Git コミットを通じてコードがどのように成長したかを見る。
- LLM 前後のリポジトリ比較 – 二つのバージョンを対比し、vibe コーディングの影響を理解。
- エージェントのドキュメント – この 1 ページプロジェクトで構築した開発インフラについて読む。大規模チームで働いた経験があれば、ツールは馴染みやすいでしょう。
投稿者:David、2025 年 12 月 16 日 11:15 AM