ソフトウェアはろくろの上の粘土

ceramics
目次

この記事は Dries Buytaert の公式ブログ「dri.es」の翻訳記事です。Driesブログの記事一覧よりすべての翻訳記事をご覧いただけます。

数週間前、Simon Willison氏はコーディングエージェントを起動し、家族とクリスマスツリーの飾り付けに行き、映画を観て、戻ってきたら動作するHTML5パーサーが完成していました。

まるで手品のように聞こえます。しかし、これが機能したのは、結果を確認するのが簡単だったからです。ユニットテストは合格するか失敗するかのどちらかです。型チェッカーはコードを受け入れるか拒否するかのどちらかです。そのような環境では、作業はほとんど監視なしに進み続けることができます。

Geoffrey Huntley氏のRalph Wiggumループは、おそらく私が見た中でこのアイデアの最も明確な表現であり、急速に人気が高まっています。彼のデモ動画では、AIエージェントとの会話を通じて仕様を作成し、ループを実行させる様子が紹介されています。各反復は新しく始まります。エージェントは仕様を読み、残っている最も重要なタスクを選び、実装し、テストを実行します。テストが合格すれば、Gitにコミットして終了します。次の反復は空のコンテキストから始まり、ディスクから現在の状態を読み取り、前回の実行が終わったところから再開します。

考えてみれば、これは人間のプロンプト作業がすでにそうなっているものです。プロンプトを出し、待ち、レビューし、また プロンプトを出す。陶芸家が粘土を形作るように、コードやテキストを形作っているのです。少し押し、ろくろを回し、見て、また押す。Ralph ループは、このろくろを回すことを自動化するだけで、それがはるかに野心的なタスクを実現可能にします。

重要な違いは、状態の扱い方です。手作業でこの方法で作業する場合、会話全体が一緒についてきます。Ralphループでは、各反復がクリーンな状態で始まります。

なぜでしょうか? すべてを常に持ち歩くことは、前に進むのをやめる最良の方法だからです。何百回もの反復で問題に取り組む場合、物事が積み重なり始めます。トークンが蓄積するにつれ、シグナルがノイズに埋もれてしまうことがあります。反復の間にコンテキストをフラッシュし、状態をファイルに保存することで、各実行をクリーンな状態で開始できます。

Simon Willison氏のPythonからJavaScriptへのHTML5ライブラリの移植は、この原理をより大規模に示しました。Codex CLIを通じて`--yolo`フラグ(中断なし実行)でGPT-5.2を使用し、いくつかのプロンプトを与えた後、家族とクリスマスツリーを飾り、映画を観ている間、実行させ続けました。

4時間半後、エージェントは動作するHTML5パーサーを生成していました。公式のhtml5lib-testsスイートから9,200以上のテストに合格しました。

HTML5の解析は複雑で悪名高いものですが、仕様は不正な形式のマークアップさえもどのように処理されるべきかを正確に定義しており、長年にわたって蓄積された何千ものエッジケースがあります。テストはAIエージェントに絶え間ない現実との接点を与えました。各テスト実行は、エラーが積み重なる前に現実に引き戻したのです。

Simon氏が言うように、「問題を堅牢なテストスイートに還元できれば、コーディングエージェントのループを解き放って、最終的に成功するという高い確信を持てる」のです。Ralphループとwillison氏のアプローチは構造が異なりますが、どちらもテストを真実の源として依存しています。

Cursorのエージェントのスケーリングに関する研究は、これがエンタープライズ規模で機能し始めていることを確認しています。彼らのチームは、何百ものエージェントが数週間にわたって単一のコードベース上で同時に作業する場合に何が起こるかを調査しました。ある実験では、ウェブブラウザをゼロから構築しました。1,000ファイルにわたる100万行以上のコードが1週間で生成されました。そしてブラウザは動作しました

それが安全で、高速で、出荷できるものだという意味ではありません。ただ、与えられた基準を満たしたという意味です。セキュリティやパフォーマンスをチェックすることを決めれば、それに向けても機能します。しかし、重要なのはパターンです。明確なテスト、継続的な検証、そして完了したことを知るエージェント。

単独のループから並行して実行される数百のエージェントまで、同じパターンが繰り返し現れています。何か根本的なものが結晶化しているように感じられます。自律型AIは、成功を事前に正確に定義できる場合にうまく機能し始めているのです。

Willison氏の成功基準は「シンプル」でした。9,200のテストすべてが合格する必要がありました。それは多くのテストですが、エージェントはそこに到達しました。明確な成功基準が自律性を可能にしたのです。

AIはインターフェースをフラットにし、基盤を深化させるで私が主張したように、これは人間が価値を付加する場所を変えます。

人間は、最初に方向性を設定し、最後に結果を洗練させる場所に移行しています。AIはその間のすべてを処理します。

この記事のタイトルはGeoffrey Huntley氏から来ています。彼はソフトウェアをろくろの上の粘土に例えており、一度この方法で作業すると、他の方法で考えるのが難しくなります。Huntley氏はこう書いています。「何かが正しくなければ、ろくろに戻して続ける」。それはまさに、私が最初のRalph Wiggumループを構築した時の感覚でした。投げ返し、磨き、正しくなるまで再び回す。

もちろん、Ralph Wiggumループには限界があります。検証が明確な場合にうまく機能します。ユニットテストは合格か不合格を返します。しかし、すべての問題に明確なテストがあるわけではありません。そして、テストを書くことは多くの作業になることがあります。

例えば、非技術系ユーザーがページを構築するDrupalで、このようなループがどのように機能するかを考えています。「このページをもっとブランドに合ったものにする」というのは、実行できるテストではありません。

それともそうでしょうか? AIエージェントは、ブランドガイドラインに対してページを評価し、合格か不合格を返すことができるかもしれません。読みやすさのレベルをチェックし、基本的なアクセシビリティテストさえ実行できるかもしれません。検証者は従来のテストスイートである必要はありません。明確なフィードバックを提供しさえすればよいのです。

これらすべては、私たちがすでに直感的に理解していることを明らかにするだけです。成功を定義することは難しい。本当に難しいのです。人々が手作業でページを構築する場合、「正しく感じる」まで反復することがよくあります。彼らは見た時にそれが欲しいものだとわかりますが、事前にそれを明確に表現できるとは限りません。または、長年の経験からその判断力を持つ専門家を雇います。これが自動化が最も困難な作業の部分です。技術は実装から仕様と検証へと上流に移行しています。

あらゆるタスクの問いは次のようになっています。結果が良くなっているか悪くなっているかを、確実に判断できるか? できる場合、ループが引き継ぎます。できない場合、あなたの判断がまだ重要です。

その境界は急速に動き続けています。1年前、私は写真のために良い`alt`テキストを生成するためにローカルLLMと格闘していました。今日、AIエージェントは映画を観ている間に動作するHTML5パーサーを構築します。それが少し馬鹿げていると感じないのは難しいことです。そして、ワクワクしないのも難しいことです。

By Dries Buytaert

この記事は「Software as clay on the wheel」(投稿日:2026-01-20)の翻訳記事です。

カテゴリ