今日は「コーディングエージェントとルンバは似ている」という話を雑談的に話したいと思います。この記事は、私の思いつきメモを音声入力して、AI校正をして、私が最終的な文章を調整したものになっています。
ルンバは自動で掃除します
ルンバは、ボタンを押すと自動で掃除をしてくれます。ルンバに自動で掃除させる前に、私たちは、ルンバに部屋をスキャンさせて、ルンバに住居の構造を把握させます。さらに、解析された住居の見取り図を見て、部屋やスペースに名前をつけておくと掃除の指示を出しやすくできます。
外出の前にルンバは、掃除指示を出しておくと外出中に掃除を行ってくれます。スマホからルンバに指示を出すこともできますし、位置情報や時間でルールを設定して、自動で掃除が始まるようにもできます。
自動ゴミ収集機能がついているルンバもあります。ゴミがいっぱいになったら、掃除ロボットは、ゴミステーションにゴミを捨てに行きます。ゴミステーションの場所も覚えさせることになります。
コーディングエージェントも自動で掃除します
一方で、同じようにコーディングエージェントも指示を出すとコーディングを始めてます。コーディングエージェントをうまく動かすためには準備が必要です。エージェントは支持されずとも最初に既存コードベースをスキャンすることが多いでしょう。
現在は、コーディング開始時にスキャンすることが多いように見えますが、そのうちにコードベースを把握するフェーズが事前フェーズになり、実際のコーディングするフェーズと分かれていくでしょう。変更情報もキャッシュし始めると思います。
さらには、エージェントが収集した情報に対して、利用者が名前を付けられるようになったり、責務の説明を追加できるようにもなっていくでしょう。指示を出す側は、それらを考慮して、効率的にコーディング指示できるようになっていくのが予想できます。
最近のコーディングエージェントはスマホから指示を出せます。コーディングエージェントの実行時間は日々伸びていますし、待ち時間も多いです。なので、スマホ経由で状況を確認して次の指示を出したいというニーズがあるのでしょう。
さらに、伸びていく実行時間への対策として、コーディングエージェントの作業を並列化して高速化しようとする動きもあります。私の予想としては、並列化すると一気に作業難易度が上がり、品質保証が高難度化するので、基本的には直列で安定して動く安価なエージェントが民生品として普及していくと予想してます。
コーディングエージェントは進化し続けています
また、コーディングエージェントの活躍でコードがどんどん増え、ソフトウェアの複雑性も増していきます。複雑性に影響を与える機械の制御は、フィードバック制御が使われるのが一般的だと私は認識しています。コーディングエージェントもフィードバック制御でコーディングを実施させることになります。
コーディングエージェントに関係なくソフトウェア開発では、早期にフィードバックを得るために、Linterや自動テストの仕組みがあります。なので、コーディングエージェントもそれらを活用して素早くフィードバックをして、開発すべきソフトウェアの発見を効率化するしていく流れになります。
私は、「大規模なソフトウェア開発は中長期的に、こんな感じになるんじゃないのかな」と思っていることがあります。まず、デジタルツインとか将棋AIには、すでにシミュレーションで複数のパターンを見て、その中から最善の一手を選ぶという考え方があります。その考え方がソフトウェア開発に適応されるとしたら、複数の開発マシンを起動してブランチを複数切って、並列で異なる実装パターンを使って実装を進めてみて、その結果を見た上で最終的な実装方針を選択する風になるんじゃないかなと思います。
複数の実装アプローチを実装コストとリスクなどを考慮しながら、比較して選択するような仕組みです。このような仕組みがMAGNIFICENT 7の中で実装されていると言われても驚きませんが、私はもっと身近なユースケースを考えていきたいと思ってます。
コーディングエージェントのために環境を用意する?
今の現実を見ていくと、とりあえずコーディングエージェントをうまく使うなら、コーディングエージェントが動きやすいように環境を整えなければいけません。例えば、分かりやすく一貫性のあるコードベースがなければAIのコードを評価できませんし、とか、丁寧なLinterや自動テスト、ドキュメント云々を整備して云々かんぬん、といろんな話があるわけですね。
当然ながら開発対象のソフトウェアや領域によってそれらがどこまで必要かも違いますので、最近はそれをハーネスエンジニアリングという言葉で束ねようとしているイメージがあります。これまでも活動してきたソフトウェアエンジニアからすれば、今までやってきたことの延長のように見えます。
そういえば、ルンバのための家を作ったことがあった
私はこの状況を見ながら、「これはルンバをうまく使うために環境を整備する必要がある話に似ているな」と思いました。
ルンバをうまく走らせるためには、例えば足のある家具を選ぶ必要がありますし、ルンバが入るスペースを確保する必要があります。他にも段差が少ない部屋を選ぶ必要もあります。
さらに日々の運用として、導線に物を置かないようにするとか、部屋に落ちていてルンバの邪魔になるようなゴミはルンバの稼働前に拾わないといけません。さらに、定期メンテナンスとしてルンバのステーションのゴミを回収するとか、掃除備品をメンテナンスするとか、そういう話も出てきますよね。
これは、ルンバがいるかどうかに関わらず、誰かに価値を見出されてきたことなんですが、私はルンバを導入・運用してから明確に意識が高まりました。その構造が、なんか似てるんだよな、と思ってます。
だから何?という話はないんですけど、雑談としてこんな感じです。
さて、普段は和歌山にいる私ですがゴールデンウィークは東京にいます。東京でイベントに参加したり人と色んな会って話をしたいので、気になった方は声をかけてもらえると喜びます。