AI もすなるコードレビューといふものを、人間もしてみむとてするなり。
— AI 紀貫之
AI がコードを書くようにはなっても基本的には人間がレビューする生活を続けているので, いま何を考えてどうしているかをスナップショットとして書いておきます.
仕事
メンタルモデルとして AI コーディングエージェントを単なる道具としてみなしていた時代は,
- 人間(A): タスクに着手, コーディングを AI に指示, 検収
- AI: 人間(A)の代わりにコードを書く
- 人間(B): 人間(A)が書いたコードとしてレビューする
というような構造だったんですが, これは人間(A)の検収と人間(B)のレビューが実質的に二重のコードレビューになっていて, かつ人間(A)から人間(B)への受け渡しにも待ち時間が発生していました.
そこで今年に入ってからは道具というよりは同僚に近いものとみなしていこうとしていて,
- AI: 人間の指示を受けてタスクに着手, コードを書く
- 人間: AI が書いたコードとしてレビューする
という構造に変化しました. こうなった / これができるようになったのは, AI モデル自体の進化もありつつ, チームメンバー全員のコーディングエージェントの使いこなし度が上がった (全員にユーザー提供を前提としない機能開発をする機会が与えられてのびのびと使えたのは良かったと思う) のと, AI が下手なコードを書いたとしても二重チェックまでは必要ないだろうというチームメンバーの自信と相互の信頼があってのことだと思います. (もちろん特に判断迷うなどで二重チェックが欲しい時はそのようにしています.)
この変化によって二重レビューのコストや待ち時間は減ったものの, 引き続き人間のコードレビューが一つのボトルネックにはなっています.
一方で直ちに人間のコードレビューをなくせるかというとそういう感覚もなく, 単純に不安というだけでなく, 実際に AI が作った PR にはだいたい人間が作った PR の 3 倍程度のレビューコメントをつけている状態です.
これには素朴なコードの不備 (TypeScript だと不要な as とか, コメントの日本語が変とか) もあれば, 機能・非機能的な期待を満たしていない (AI の想定した .env に機密情報を書く運用が社内ポリシーに反するとか) というのも多くて, 特に後者はコーディングエージェントへの指示の出し方の問題や, AI にレビューさせることで人間の負担を減らすという手段もあると思いますが, どれだけ AI への指示やドキュメントを事前に精緻化しようとしても誤りや暗黙知の漏れなどは必ず発生しますし, 実際にコードを書いてみて初めて明らかになる課題もあるので, 指示の出し方の改善や AI によるレビューだけで全ての問題が解決するとは思えていません.
単純に人間ならコードレビューの前に別途調整や合意を取っていたものがコードレビューの段階に移っただけという気もしなくもないですね.
人間がコードレビューを続けていれば, もしそれが不要と言えるタイミングが来たら気がつくだろうとも思っていて, しばらくは続けてみるつもりでいます.
趣味
趣味でもずっとコードレビューをしています.
id:hogashi さんの agent-b2b がめちゃめちゃ良いなと思って, 最初はこれを改造して使っていたんですが, 自分でもなんか音を出すものを作りたくなりました.
ということで無限に作業用 BGM が出てくるおもちゃを作りました. https://susisu.github.io/vefr/ で試せます*1.
ブラウザ上で動作するアプリケーションですが WebSocket 経由で外部からも操作可能にしているので, agent-b2b と同じように Claude Code の作業開始や終了に合わせて雰囲気を切り替えたりして暮らしています.
仕事とは違ってアプリケーション内部の品質が低くても特別困るわけではないですが, それはさておき自分の興味が内部品質に向かっているのと, 何より機能を追加するたびにみるみる設計が歪んでいくのがわかるので, 勢いよく機能を追加して楽しむという感じではなく, もっぱら事後的にコードレビューをして直すことで時間を潰しています. こんな暮らしで良いのか?
*1:現時点では完全に自分専用のつもりで作っているので真面目に使うことは推奨しません