コーディングのギア比

2026-10-28

目次

エージェントと人間の関係を「ギア比」で表現する

9月の中頃から、ソフトウェア開発の際には「ギア比」について確認しながら進めています。

ギアという考えが浮かんだのは、現在のエージェントに関する議論ではその速度と速度に反比例するような何かの話がよく取り上げられているためだと思います。エージェントによってコードは高速に書かれるようになりました。一方、慎重なプロジェクトであるほど、人間がコードをしっかりレビューすることが求められています。人間のレビューの速度はエージェントがコードを書く速度よりもゆっくりです。レビューに限らず、コーディングにおいて人間の関与が増えるほど速度は落ちてゆきますが、慎重さ、正確さ、健康、学びなど、そこではなにか別のものを得ようとしているようにも思えます。

得ようとしているものが具体的になんであるのか?については、 #制作ノート を綴ることで考えてゆきたいと思います。詳細は、制作ノートの背景に記しました。制作ノートを書く上では、私が開発中にどの程度エージェントの力を借りているのかを、自分で把握しやすくする必要がありました。このとき、自動車のギアを比喩として用いることを思いつきました。

私のギア段

テスト駆動開発(TDD)を採用しているため、私のギア段は次のように表現できます。

1速:テストもコードも人間が書く。

2速:テストもコードも人間が書く。ただし、AIによるコード補完やリファクタリングは用いる。

3速:テストもコードもAIが書く。ただし、RGRのステップごとに人間がレビューしながら進める。

4速:テストもコードもAIが書く。人間は気になるところだけレビューする。

5速:テストもコードもAIが書く。人間はなにもしない。

ギアがLow側のほうがトルク(?)が高く、速度は遅い、という仮定での分類です。トルクが何を意味するのかはまだはっきりとは分かりません。ただ、そこにはなにか力強いものがあるのでは?という前のめりな期待が込められてはいます。

例えば、Lowギアで直接介入して試行錯誤したときに得られる人間側の気づきや形成されるメンタルモデルは、開発を駆動する上で、どういうときにどういう形であらわれうるでしょうか。トルク、というメタファーは、おそらく坂道発進のような、最初に高いハードルのある開発で効いてくるのでは?という予想にも基づいています。

開発を始めるときには、どのギアで取り掛かるかを決めます。理由があって途中でギアを変えることもあります。制作ノートにはその様子を書いてゆきます。

テスト駆動開発を用いた変速

この方法に取り掛かってすぐに気付いたことは、TDDは、開発速度を変更するのに向いた技法だということでした。タスクリストを考えてTDDのサイクルを回し、その中で試行錯誤することはトルクを上げて減速するための手順です。その一部をエージェントに委譲することでトルクは下がり、加速してゆきます。TDDは人間とエージェントがコーディングへ関与するバランスを、段階的に把握しやすくしてくれました。

なお、テスト駆動開発は、いまのところ、基本的には人間向けの技法だと思います。フルオートのエージェントがわざわざRGRサイクルを回すことの効果は、よく判らない感じがします。というのも、エージェントの場合はコードを書いてからテストを書く手順でも同じ結果になりそうです。実際、3速で進めているときには、エージェントは必ず答えのコード(実装)を知った上でテストを書いてるように感じられました。人間のテスト駆動開発では、実装方法は判らないときもまずはテストを書き始めてみるところが妙味となっています。

将来必要となるすべてのコード

将来必要となるすべてのコードを一度に書くことはできない。それができるのは、私たちが何も学ばなかったときだけだ。(Kent Beck, "Tidy First?")

エンジニアにとって、全自動の5速でエージェントにアプリを作ってもらうことは、Kent Beckが言うところの将来必要となるすべてのコードを一度に書いてしまうことかも知れないという予感を持っています。そのアプリは引き続きエージェントによって更新され、育ってゆくかもしれません。しかし、そこには本来あったはずのもの、学びもその一つだと思うのですが、なにかを取りこぼしているかもしれません。そうしたことを #制作ノート を書きながら確認してゆこうと思います。