Agentic Double-loop Learning に思いを馳せる
Claude Code によるコード生成コストの低下
Claude Code と Claude Max により、一万行/日のコード生成が一般化されたことにより、「コードを生成すること」だけのコストは以前よりもはるかに安価になった。
この変化により、「既存コードを破棄する」という行動のハードルが、特に開発初期で下がり、選択しやすくなった。0 -> 1 フェーズのプロダクトでは一日でプロトタイプを作って検証し、次の日には前日のコードをすべて破棄してより良いプロダクトをゼロから作り直すことできる。一度目の検証によって得られた知見を使って作り直すことから、RPGのゲームでいう「強くてニューゲーム」のような状態になっている。
現在の AI Coding Agent の構造と限界
素の Claude Code などを例とする現在の Coding Agent は、行動 (実装 or テスト) → 結果 (エラー) → 行動 (修正) → 結果 (完成) のように、行動と結果のループが基本となっている。既存コードなどを前提として、目的 (タスク) を達成するために試行錯誤を自律的に行うエージェントである。自律的に試行錯誤してタスクを達成し、特に Claude Code (Claude Max) はその試行回数と速度を飛躍的に高めたという点において、破壊的な変化をもたらしたように思える。
しかし、その基本原理はシングル・ループ学習である。そのように作られたシステムだから仕方ないという側面はあるが。
「強くてニューゲーム」における "わかった" とは何か?
このループの中には、既存コードや設計などの前提への考察がほとんどない(少なくともプロンプトとして指示しない限り)。
ここで言う "前提" とは、既存コードやその設計、テストケースやドキュメント(仕様書など)が該当する。
しかし先に述べた "強くてニューゲーム" の「強い」状態とは、そのプロダクトに対する理解や設計、アンチパターンや難易度などがある。つまり、ある程度そのプロダクトについて「わかった」状態でもう一度始めることができる。
「わかった」ものについてもう少し深堀りすると、広木大地氏の著作『エンジニアリング組織論への招待』における 3 つの不確実性 —— 方法不確実性・目的不確実性・通信不確実性 —— のうち、方法不確実性と目的不確実性についての知見であると説明できる。
知見の蓄積はどこに行くのか?
本来、この不確実性に対する「わかった」知見は、コードやその設計、命名、テストケースなどとして表現・蓄積する。その実践を体系化したものが、例えば DDD であり TDD であろう。
では Claude Code(Claude Max)を活用した "強くてニューゲーム" の戦術において、コードを破棄した上でどこにそれらの知見を貯めるのかというと、開発者自身かドキュメント、E2E テストのような包括的なテストという、コードに密に紐づかないものが候補になる。
ダブル・ループ学習の仕組み化
素の Claude Code などの Coding Agent はシングル・ループ学習であり、指示をしない限り自律的にダブル・ループ学習を行わない。つまり、前提である仕様書や設計などの不確実性に対する知見を蓄積しようとしない。
そのため、それを仕組み化できないかを Hook などを使いながら試みていたところ、一昨日に Kiro が発表された。Kiro の Steering の自動更新は、このダブル・ループ学習を仕組み化できるのではないかと期待している。
再生成を前提としたアーキテクチャへ
また、これまでなかなか難しかった「コードは破棄するもの」という前提に立つと、「作り直せる粒度で境界を区切る」という戦略が考えられる。例えばマイクロサービスやモジュラーモノリスのような、明確な境界線を持つ独立した設計などが挙げられる。
Discussion