martinfowler.com の「Exploring Gen AI」シリーズの一篇であるこの記事は、人間はソフトウェア開発プロセスの外にとどまってバイブコーディングをすべきなのか、それともプロセスの中にとどまってエージェントが書くすべての行を検査すべきなのか、と問いかける。その答えは第三の立場であり、著者はそれをヒューマン・オン・ザ・ループと呼ぶ。人間は、エージェントに任せきりにするのでも、エージェントが生み出すものを細かく管理するのでもなく、作業のループを構築し管理すべきだというのである。

議論は 2 つのループに基づいている。why ループはアイデアを動作するソフトウェアに変え、アイデアの発展に合わせて反復する。人間がこれを回すのは、それが生み出すものを望んでいるのが人間だからである。how ループはソフトウェアを構築するプロセスであり、その中では中間成果物——コード、テスト、ツール、インフラストラクチャ、設計、ADR——が作られ使われる。実際にはこのループはいくつもの入れ子のループを含んでおり、機能を仕様化して提供するループから、コードを生成してテストするループにまで至る。記事は how ループに対して人間がどこに位置するかを検討し、最後にエージェント型フライホイールと呼ぶさらなる段階を示している。

要点

  • 中間成果物、そしてそれを生み出すプラクティスやパターンは、人々が本当に関心を持つ成果のための手段であって、それ自体が成果物なのではない。
  • ループの外の人間——how ループをエージェントに任せること——は、バイブコーディングの一般的な定義だと説明されており、著者は仕様駆動開発のいくつかの解釈もほぼ同じだと述べている。
  • 重要なのは外部品質(機能的な正しさと、クラッシュしない、高速に動作する、データを漏洩しない、ホスティングコストを抑える、コンプライアンス監査に合格するといった非機能的・運用上の品質)であり、内部品質が重要になるのは外部の成果に影響する場合に限られる。著者は、内部品質はそれでも外部の成果に影響すると論じる。エージェントは、クリーンに設計され、よく構造化されたコードベースのほうが素早く理解・変更でき、迷走することも少なく、しかもシステムを構築するための時間とコストは重要だからである。
  • 記事が論じる意味でのループの中の人間は、多くの場合、最も内側のループの中で人間がゲートキーパーとして振る舞うこと、たとえばコードを 1 行ずつ手作業で検査することを意味する。著者は、エージェントは人間が検査できるよりも速くコードを生成するため、これでは人間がボトルネックになると論じ、AI による開発者の生産性についての報告がまちまちなのは、生成によって節約される時間以上に、人々がコードの仕様化とレビューに時間を費やしていることが一因かもしれないと示唆している(ヒューマン・イン・ザ・ループも参照)。
  • 「シフトレフト」の考え方を適用すると、エージェントは人間によるチェックに頼るよりも、自らコードの品質を測れるほうがより良いコードを生み出す。したがって人間は、何が求められているのか、それをどう達成するのが最善かをエージェントに指示すべきである。
  • ループの上の人間とは、エージェントが生み出すものを検査する代わりに、エージェントが成果を生み出す能力を高めることを意味する。how ループの内側のループを制御する仕様、品質チェック、ワークフローのガイダンスの集合は、著者の用語ではエージェントのハーネスであり、それを構築し保守すること——ハーネスエンジニアリング——が、人間がループの上で働くやり方である。
  • その違いは、エージェントの出力に不満があるときに何をするかに表れる。ループの中では、成果物を修正する(直接修正するか、エージェントに指示する)。ループの上では、それを生み出したハーネスを変更する。
  • エージェント型フライホイールでは、人間はエージェントにハーネスを管理・改善するよう指示する。最初はエージェントの推奨を対話的に検討するところから始まり、やがて一定のスコアを持つ推奨を自動的に承認するところまで進む可能性がある。
  • 著者は、標準的で頻繁に行われる作業では、これがループの外の人間のように見えてくるかもしれないと考えているが、ハーネスをエンジニアリングすることで、一度限りの「十分に良い」解決策ではなく、自らを継続的に改善する堅牢な、「もしかすると反脆弱ですらある」システムが得られると論じている。

背景

記事は、3 つの立場を著者自身の枠組みとして提示している。ループの上という概念に似たものは「ミドルループ」としても説明されてきたと記事は述べており、ソフトウェア開発の未来をテーマとしたリトリートの参加者によるものもその一例である。また、実践そのものについては martinfowler.com のハーネスエンジニアリングに関する別の記事にリンクしている。脚注では、Ralph Loop は口語的にはエージェントが終わるまでループさせ続けることを意味して使われることが多いが、元々の説明ではオペレーターがエージェントの舵取りに重要な役割を果たしていると指摘している。