芋出し画像

💥予枬が珟実に──゚ヌゞェント゚ンゞニアリングを実際にやった人が珟れた

毎床rorosukeです。

少し前に、こんな蚘事を曞きたした。

どんな内容かずいうず、「今話題のバむブコヌディングの先に、゚ヌゞェント゚ンゞニアリングっおのが来るらしいよ」ずいう内容です。

これが実珟されれば、たずえば10䞇行もあるような倧芏暡なプログラムも、党郚AIが自動的に䜜っおくれるずいうのですから、マゞか っお感じです。

ずは蚀ったものの、

「でもたあ、そのうちでしょ」

ずも思っおいたのですが、なな、なんず、

もう来たした
しかも「NOTE」内で、今たさにバズり䞭です



🀖実蚌した人が珟れた

それが、チヌムみらいの䌊藀゚ディ氏の次の蚘事です。

どんな内容かずいうず、「人間がほずんど指瀺しなくおも、AIが勝手に開発を進め続ける仕組みを䜜った」ずいう報告です。具䜓的にはこう曞かれおいたす。

「3〜4時間のロングセッションで、数千〜1䞇行皋床の、比范的品質の高い実装が安定しお完成する」

これは぀たり「ClaudeCodeでずある手法本蚘事では「䌊藀メ゜ッド」ず呌称を確立したんだけど、やっおみたら数千〜1䞇行皋床の品質の高いコヌドを、安定的に䜜るこずができたよ。3〜4時間かけるけどね」ずいう意味になりたす。

ここで私ピンずきたした。
「これっお゚ヌゞェント゚ンゞニアリングの実蚌実隓じゃん」
えっ、えっ、すごい すごすぎる

でも、ちょっず埅およ・・・
ただ、この報告に、少しひっかかる郚分がありたした。

「AIを3〜4時間も動かしお1䞇行皋床のコヌドしか䜜れないの 時間かかりすぎじゃない」

私の経隓ではClaudeで2千行のコヌドを䜜っおも、数分しかかからないからです。しかし、これはおそらく、コヌドを曞く時間よりテスト実行・マヌゞ・怜蚌のルヌプの埅ち時間の方が長いからなのだず思いたす。぀たり「ちゃんず動くものを確認しながら䜜る」こずぞのコストが倧半を占めおいる、っおこず・・。

蚘事の内容を読むたで、「それ、ほんたかいな」ず少し思いたした。ただ、仕組みを読み解いおみるず、䞊蚘のような疑問も「なるほど」ず玍埗するものがありたす。時間がかかるのも理にかなったこずをやっおいる蚌拠に芋えおきたした。やっぱ、すごいこずが起きおいるんじゃないの



🀖䜕をやったのか、かみ砕いお説明する

ここからは実際の蚘事内容を、できるだけ平易に解説しおみたいず思いたす。ずいうのは、この方のスキルが高すぎお簡単に理解できないからです。そこで、私レベルでもわかるようにかみ砕いお説明しおみたいず思いたす。いわゆる「䞭孊生レベルでもわかるようにしお」です。

なお、本蚘事の最埌に、甚語蟞兞を远加しおおきたしたので、元蚘事を読むずきの参考にでもしおもらえればず思いたす。

バむブコヌディングの匱点のおさらい

私の前回蚘事でも指摘しおいるのですが、バむブコヌディングには次の2぀の倧きな匱点がありたす。

ブラックボックス問題 1぀目はブラックボックス問題です。AIが生成したコヌドは動いおはいる。でも「なぜこの構造なのか」「どこを倉えるず䜕が壊れるか」が人間偎に芋えにくい。䌁業が本栌導入をためらう最倧の理由です。

スケヌルの壁問題 2぀目はスケヌルの壁です。2,000行皋床なら問題なく䜜れたすが、10䞇行芏暡になるずAIのコンテキスト限界でシステム党䜓の敎合性が保おなくなる。郚分的には動くコヌドが生成できおも、党䜓ずしお䞀貫したシステムにならない。

以䞊を螏たえお、䌊藀メ゜ッドがどうこの問題を解決しようずしおいるのかを説明しおいきたす。

コンテキスト問題をどう解決したか

AIには「䞀床に芚えられる量」に限界がありたす。これをコンテキストずいいたす。すっごい昔のこずは忘れおしたう、ずいうや぀です。

Claudeはコンテキストが倧きいほうなので、2,000行皋床のプログラムなら䞀気に䜜れたす。しかし1〜10䞇行のプログラムになるず、前半で決めたルヌルを埌半で忘れ始め、どんどん敎合性が厩れおくるこずになりたす。これが「スケヌルの壁」の正䜓です。

䌊藀メ゜ッドの解決策はシンプルです。

「1セッションに詰め蟌みすぎなければいい」

プログラムを機胜単䜍に分割し、それぞれを「新鮮な状態のAI」に別々に䜜らせる。そしお出来䞊がったものを順次合䜓マヌゞさせおいく。

工堎のラむン䜜業に近いむメヌゞです。

分割はどうやるか

ポむントは「行数で分割するわけではない」ずいうこずです。

分割の単䜍は機胜です。ログむン機胜、怜玢機胜、デヌタ保存機胜  ずいった単䜍で1タスクになりたす。そしおこのタスクの䞭身は、関数・モゞュヌル・クラスずいった゜フトりェア蚭蚈の自然な単䜍になりたす。぀たり、分割ずいっおも行数で分割するのではなく、あくたでもプログラムのブロック単䜍での分割ずなりたす。

実際のずころ、タスクは3぀の階局で管理しおいるそうです。

  • マむルストヌン倧「ログむン機胜が動く」レベル

  • りェヌブ䞭䟝存関係の順序

  • タスク小1぀のAIセッションが担う䜜業

10䞇行クラスになれば、この分割も、ものすごく倚局的になりたす。ブロック→モゞュヌル→関数、ずいう入れ子構造のオンパレヌドですね。

3぀の゚ヌゞェントが分業する

䌊藀メ゜ッドのもう䞀぀の特城が、AIを3圹に分けおいるこずです。

  • Planner蚭蚈担圓仕様曞を曞き、タスクに分解する

  • Builder実装担圓個別のタスクを実際に実装する耇数が同時䞊列で動く

  • Verifier怜蚌担圓できたものを぀なぎ合わせ、動䜜確認する

なぜ分けるのか それは1぀のAIに「蚭蚈も実装も怜蚌もやれ」ず蚀うず、耇数の目的を持たせおしたうこずで、質が䞋がっおしたうからです。そこで、圹割を蚭けお分担するこずで質の䜎䞋を防いでいるわけです。

以䞊をたずめるず「うたく回っおいる䌚瀟みたいにしたよ」っおこずですね。䞊局郚がちゃんず党䜓蚭蚈をしお、䞭間管理職が間に入っお、珟堎がしっかり䜜業するっお感じです。

肝は「10個のファむル」

これで党䜓的なしくみは、うっすらずわかりたしたが、じゃあ実際どうやっおんの っお話になりたす。

それがなんず、この仕組み党䜓を動かしおいるのが、「たった10個のファむル」なんだそうです。
しかも、プログラムコヌドは1ファむルだけ。残り9぀は党郚、人間が曞いた「指瀺曞」や「芏玄集」ずいうこずです。

$$
\begin{array}{|c|c|} \hline
\text{ファむル} & \text{圹割} \\ \hline
\text{plan.md} & \text{芁件から蚭蚈曞を䜜る呜什} \\ \hline
\text{gen-milestones.md} & \text{蚭蚈曞からマむルストヌンを䜜る呜什} \\ \hline
\text{run.sh} & \text{ルヌプを回す叞什塔170行} \\ \hline
\text{planner.md} & \text{Plannerぞの指瀺曞} \\ \hline
\text{builder.md} & \text{Builderぞの指瀺曞} \\ \hline
\text{verifier.md} & \text{Verifierぞの指瀺曞} \\ \hline
\text{architecture.md} & \text{コヌド構造の芏玄} \\ \hline
\text{frontend.md} & \text{画面たわりの芏玄} \\ \hline
\text{infrastructure.md} & \text{むンフラの芏玄} \\ \hline
\text{quality.md} & \text{テスト・品質の基準} \\ \hline
\end{array}
$$

私の蚘事でも曞いたのですが、「゚ヌゞェント゚ンゞニアリング」ずいう蚀葉の本質は、コヌドを曞く技術ではなく、「AIに仕事をさせる構造を蚭蚈する技術」ずいう蚘述ず完璧にシンクロしたす。たすたす、AIに仕事をさせる構造を蚭蚈するのが人間の圹割っおこずを実感するばかりです。

いずれにしおも、䌊藀メ゜ッドが実際に機胜し、コヌドが䜜成できた  実蚌できちゃった、ずいうこずで「゚ヌゞェント゚ンゞニアリング」が予枬の段階から、完党に珟実ぞの段階ぞず移行したずみおいいでしょう。

「スピヌドが速くお、気持ちが远い付かない」
そりゃもう、私も同感です



🀖この手法が特に茝く堎面──耇数プログラムの連携

ここからは、私の話になりたす。

個人的に䌊藀メ゜ッドが䜿えそうず思ったのが、耇数の独立したプログラムを連携させお䜜るケヌスです。

たずえばネットワヌクプログラムでは、送信偎・受信偎・サヌバヌ偎ず、最䜎でも3぀のプログラムを同時に䜜る必芁がありたす。それぞれが小さくおも、互いに敎合性が取れおいないず動きたせん。これを䞀人でやるのは、それなりに倧倉ですずいうか頭が混乱の極みです。

たた、Google AI Studioで䜜るようなアプリでも、HTML・JavaScript・サヌバヌ偎の凊理など、耇数のファむルが絡み合っおいるので、これを䞀人で䜜るのは党郚の知識も必芁ですし「あヌめんどくさい」っお思いたすだからGoogle AI Studioは画期的なんですが  。

しかし、䌊藀メ゜ッドを䜿えば、それぞれを別のBuilder゚ヌゞェントが同時䞊列で担圓したす。連携仕様を蚭蚈曞に曞いおおけば、各゚ヌゞェントがむンタヌフェヌスを守りながら独立しお実装を進め、最埌にVerifierが぀なぎ合わせおくれるこずになりたす。これは、いろんな䌚瀟を束ねお、もの䜜りをするようなものですね。

私個人が数䞇行のコヌドを䜜る必芁に迫られるこずは、たずありたせんが、䞊蚘のような耇数のプログラムで成立しおいるネットワヌクプログラムやWebアプリが䞀人で、しかもAIが蚭蚈からデバッグたで行っおくれるずしたら、これほど歓迎したいこずはありたせん。



🀔疑問も正盎に曞く

なんか、もうパラダむスっお感じになっおきおいたすが、ここでいったん気持ちを静めたしょう。「すごいこれで䜕でもできる」ず受け止めおしたうのは、い぀でも危険なものです。

条件付きの話である

䌊藀氏自身がはっきり曞いおおられるのですが、実蚌に甚いたのは、TypeScript + Next.jsネット䞊に実䟋が豊富で、AIが埗意ずする技術を䜿甚しおいお、バグが臎呜的にならないタむプのプロダクトで、か぀1人開発ずいう条件が揃ったずいう前提の䞊でのこずです。最善のものを甚意したし、䞍足しおいるものがないっおいうこずです。

「完璧な蚭蚈曞」はできない

AIが䜜る蚭蚈曞は、必ずしも完璧ではありたせん。曖昧な郚分や矛盟が生じるこずもありたす。最終的な刀断や責任は人間に残りたす。なんの知識も経隓もない人が、「10䞇行のコヌドを䜜っお」ずいっおも、うたくいくはずがありたせん。

郚分修正の問題

仮に10䞇行のプログラムコヌドができたずしたしょう。しかし、コヌドは完成埌もアップデヌトされるものです。そのずき、「ここを盎したいんだけど」ずなったずき、AIが䜜ったコヌドは構造の意図が芋えにくいですし、修正が別の堎所に圱響する堎合もありたす。このアップデヌトやメンテナンスをどうするかずいう問題は、ただ残りたす。

぀たり、䌁業の仕事レベルで甚いるこずができるようになるためには、解決しなければならない問題がいっぱいあるっおこずですね。



たずめ最初の突砎口はできたけど本圓に気になるのは  

いかがでしょうか 自分でもやっおみたい、切実にそう思いたす。
しかし、ここで私が䞀番気がかりなのは䜕か

それはコストです。

3〜4時間・耇数゚ヌゞェント䞊列で回すっお、それいくらかかるのよ

AIに詊算しおもらいたした。

💻の回答
元蚘事にコストの具䜓的な蚘茉はありたせんでした。なので以䞋は掚蚈です。3〜4時間・耇数゚ヌゞェント䞊列で回すず、おそらく総トヌクン数は500䞇〜2,000䞇トヌクン皋床ず掚枬されたす。
抂算で3,000円〜15,000円前埌ではないかず思いたす。
モデルがOpusなら5倍以䞊になりたす。䞊列数・りェヌブ数によっお倧きく倉わりたす。あくたで掚蚈であり、実際は著者本人しか知りたせん。

ですよねヌ。そしおAIはこうも答えおいたす。

💻の回答続き
1䞇行のプログラムが3〜4時間・1䞇円以内で完成するなら、フリヌランス゚ンゞニアに頌む堎合ず比べるず桁が2぀くらい違いたす。コスパずしおは盞圓砎栌だず思いたす。

ごもっずも。

そんなわけで、ずもかく波は「ざっぶヌん」ず来おいたす。
乗れるかどうかはあなた次第
ですね。

以䞊

PS内容の粟査が足りおない郚分があったらすみたせん。



✚぀いに私もやっおみたした

理屈はわかった。

でも、実際どうなんだろう。

そう思ったので、觊っおみたした。



📖甚語蟞兞

「甚語が難しくお」ずお嘆きの方のために甚意したうれしい甚語蟞兞です。

【ツヌル・サヌビス名】

Claude Code AnthropicのAI「Claude」をプログラミング専甚に特化させたツヌル。タヌミナルコマンド画面から操䜜し、コヌドの生成・修正・テストたでを自埋的に行える。

ralph-loop AIコヌディング゚ヌゞェントを無限ルヌプで自埋的に動かすパタヌンの名称。発芋・呜名したGeoffrey Huntley氏の愛犬の名前に由来するずされる。

Git / Gitワヌクツリヌworktree Gitはプログラムのバヌゞョン管理ツヌル。「い぀・誰が・䜕を倉えたか」を蚘録する。ワヌクツリヌは「耇数の䜜業スペヌスを同時に開ける」機胜で、耇数のAIが別々の堎所で同時に䜜業するために䜿われる。

TypeScript / Next.js TypeScriptはJavaScriptWebサむトを動かすプログラム蚀語を䜿いやすく改良したもの。Next.jsはWebアプリを䜜るためのフレヌムワヌク土台ずなる道具セット。どちらもAIが埗意ずする技術スタックずしお知られる。

E2Eテスト 「End to End端から端たでテスト」の略。実際にブラりザを操䜜しお「ボタンを抌したら正しく動くか」を自動確認するテストのこず。


【抂念・手法】

コンテキスト文脈制限 AIが「䞀床に芚えられる量」の䞊限のこず。人間でいうず䜜業台の広さに盞圓する。䜜業台が狭いず、前の資料を脇に眮かないず新しい資料が広げられない。AIも同様で、長い䌚話や倧量のコヌドを扱うず、前半の内容を「忘れ始める」。

バむブコヌディング 「ノリVibeでコヌドを曞く」ずいう意味で、AIにざっくり指瀺しおコヌドを生成させる手法。AIが普及し始めた頃に流行した蚀葉で、OpenAIの研究者アンドレむ・カヌパシヌ氏が呜名した。

゚ヌゞェント゚ンゞニアリング AIを「指瀺を受けお動くだけ」ではなく「自埋的に刀断しお動く」゚ヌゞェント代理人ずしお扱い、その動き方を蚭蚈・管理する手法。バむブコヌディングの次の段階ずされる。

ルヌプ凊理 / 無限ルヌプ 同じ凊理を繰り返し実行するこず。この蚘事では「タスクが党郚終わるたでAIを䜕床も起動し続ける」仕組みを指す。通垞、無限ルヌプはプログラムのバグずしお嫌われるが、ここでは意図的に䜿っおいる。

マヌゞ統合・合䜓 別々に䜜ったプログラムを1぀に合䜓させるこず。耇数人が分担しお䜜ったコヌドを最終的に1本にたずめる䜜業。

ブランチ䜜業スペヌス Gitの機胜で、本䜓のコヌドを壊さずに「別の堎所で詊䜜する」ための分岐。朚の枝branchに䟋えられる。詊䜜がうたくいったら本䜓にマヌゞする。

䞊列実行 耇数の凊理を同時に走らせるこず。この蚘事では耇数のBuilder゚ヌゞェントが同時に別々の機胜を実装するこずを指す。順番にやるより倧幅に時間が短瞮できる。

モック / スタブごたかし実装 本来぀なぐべきデヌタベヌスや倖郚サヌビスの代わりに、「ずりあえず決たった倀を返すだけ」の仮の郚品を䜿うこず。テストを通すためのごたかし手段ずしお䜿われるこずがある。実際にDBを繋ぐず動かないケヌスが倚い。


【蚭蚈・開発甚語】

アヌキテクチャ プログラム党䜓の「蚭蚈思想・構造」のこず。建物の蚭蚈図に䟋えられる。どのように機胜を分けるか、デヌタはどう流れるかを定めたもの。

DDDドメむン駆動蚭蚈 「ビゞネスの䞖界ドメむンをそのたたプログラムの構造に反映させよう」ずいう蚭蚈手法。たずえば「泚文」「顧客」「圚庫」ずいったビゞネス䞊の抂念をそのたたプログラムの郚品にする考え方。

レむダヌドアヌキテクチャ プログラムを「局レむダヌ」に分けお蚭蚈する手法。画面の凊理・ビゞネスロゞック・デヌタ保存、ずいった圹割ごずに局を分け、互いに干枉しすぎないようにする。

ナニットテスト プログラムの「小さな郚品ひず぀ひず぀」が正しく動くかを確認するテスト。党䜓をたずめおテストするのではなく、関数1぀・クラス1぀ずいった単䜍で行う。

lint / typecheck lintはコヌドの「曞き方の乱れ」を自動怜出するツヌル。typecheckは「型デヌタの皮類の䜿い方が正しいか」を確認するツヌル。どちらもバグを未然に防ぐための自動チェック機胜。

オヌケストレヌション オヌケストラの指揮者のように、耇数の゚ヌゞェントAIや凊理を統括・調敎するこず。誰に䜕をい぀やらせるか、を管理する圹割を指す。

ハヌネス゚ンゞニアリング テストや怜蚌の仕組みハヌネス銬具・装具を䞁寧に敎備するこず。AIが間違った実装をしたずきに自動的に怜知できる仕組みを䜜るこずで、品質を安定させる。

SDD仕様駆動開発 「仕様曞Specを先に曞いおから開発する」手法。コヌドを曞く前に「䜕を䜜るか」を文曞化しおおき、それに沿っお実装を進める。AIに察しお「これを守っお実装せよ」ず指瀺できる。

いいなず思ったら応揎しよう

ROROSUKE LABO 蚘事なり、プログラムなりが圹に立ったず思った方は、 チップの応揎よろしくお願いいたしたす。 次の開発もがんばろうかな、ずいう気になりたすのだ 笑