この記事は、AIエージェント時代の開発について考えた三部作の3本目です。
1本目では「コードを書かなくなったこと」2本目では「コードを見なくなったこと」について書きました。
今回はその先にある、「プログラムを人間の支配下に置く時代は終わるのかもしれない」という話です。
ここ最近、AIエージェントを使ってアプリを作っていて...少し感じていることがあるんですよね。
プログラムというものが、もう完全に「人間が書いて、人間が読んで、人間がすべて理解するもの」ではなくなりつつあるんじゃないか...ということ。
人間のプログラマーが不要になるとか、そういう話じゃなくて。ただ、これまで当たり前だと思っていた前提が、少しずつ変わってきているような気がしてます。
1. コードは、長い間「人間のもの」だった
これまでのプログラムは、基本的には人間のものでした。
人間が仕様を考え、設計し、コードを書き、レビューし、保守する。プログラムって、人間の頭の中にある考えを、コードという形に落とし込んだものだったんだろうなと。
だから、良いコードというのは、人間にとって読みやすく、理解しやすく、意図が伝わるコードだった。
半年後の自分だけじゃなく、別の担当者や保守チーム、障害対応をする人にも読まれる。だからこそ、誰かが後から見ても理解できる形に整えておく必要があったわけです。
コードレビューも、その延長にあったんだろうなと思います。単にバグを見つけるだけじゃなく、チームのルールや設計思想をそろえて、将来の保守者が読める状態にしておく。
つまりコードレビューって、プログラムを人間の理解できる範囲に置いておくための文化でもあったのかもしれません。
2. AIを使うと、「全部自分で抱える」感じが薄れていく
AIエージェントを使っていると、まずコードを書かなくなりました。
「こういう画面を作ってほしい」「このエラーを直してほしい」と伝えると、AIがコードを書いてくれる。以前のように細かい実装をすべて自分で書く感覚とはかなり違うんですよね。
で、しばらく使っていると気づくんです。コードすら見なくなる...ということに。
AIってかなりの量のコードを書くし、修正もドラスティックに修正してきます。それを毎回すべて読んで、すべて理解して、納得してから進めるのは...正直かなり重い。
そのうち、コードをブラックボックスとして、実際に動かして確認することが増えました。期待通りに動いているか、画面が崩れていないか、操作して違和感がないか。で、違う部分があればまたAIに伝える。
このサイクルの方が速い場面が多いんですよね。
従来は「読んで、理解して、直す」という流れだったけど、AIを使うと「まず動かして、期待と違うところを見つけて、AIに伝える」流れになっていく。
コードを一行ずつ管理するというより、出来上がったものを見て、必要な方向に直していく。「コードを読むこと」そのものよりも、「期待通りに動くところまでサイクルを回すこと」の方が、開発の中心に近づいていくのかもしれません。
もちろん、認証、認可、課金、個人情報みたいなリスクの高い部分は人間がしっかり見る必要があります。ただ、通常の画面実装やプロトタイプなら、動作を見ながらフィードバックする方が自然になっていく気がしてます。
3. コードレビューの前提が変わってきている
従来のコードレビューは、とても合理的な仕組みでした。人間がコードを書く以上ミスは起きる。だから別の人間が読み、バグを見つけ、設計のズレを直す。自然な流れですよね。
ただ、AIエージェントがコードを書くようになると...この前提が少し変わってくるんです。
AIは複数ファイルを一気に変更する。設定や依存関係もまとめて直す。しかもスピードがけっこう速い。
そこに対して、これまで通りにすべての差分を人間が読み、すべてを人間の好みに合わせようとすると...AIのスピードを人間側で止めてしまうことがあるんですよね。
AIが高速に作ったものを、人間が時間をかけて自分の好みに直していく。その結果かえって動かなくなり、またAIに修正させることになる。こうなると...AIの速さを活かしているのか、従来のレビュー文化を守るためにAIを遅くしているのか、ちょっと分からなくなってきます(笑)
これ、新人教育にも少し似てるんですよね。新人が書いたコードをすべて自分の好みに直してしまうと、もうその人のコードじゃなくなっちゃう。細かい書き方ばかり直していると、お互いに疲れるし、作業も進みにくくなる。
AIに対しても同じで、大事なのはAIの頭の中を完全に理解することじゃなくて、出てきたものが期待に対して正しいかどうか。
あと、エンジニアとしての感覚の問題もあると思ってて。AIが出したコードを見ると「自分ならこうは書かないな...」って思うことがある。長くプログラムを書いていると、自分なりの美意識があるんですよね。
たぶん、AIが書いたコードって少し不気味なんだと思います。自分が書いたという感覚がない。所有感が薄い。だからこそ自分の管理下に戻したくなる...まあ、自分の部屋を他人に片付けられた感じに近いのかも。
ただ、その感覚とどう付き合うかは、AI時代の開発ではけっこう大事になりそうです。
4. レビューは「支配」から「観察」へ
じゃあ、コードレビューはなくなるのか。自分は、そうは思ってないです。ただ、役割は変わっていくんじゃないかなと。
これまでのレビューって、ある意味でコードを支配する文化だったと思うんですよね。コードを読み、理解し、指摘し、直させる。ルールに合わせ、チームの作法にそろえる。
でも、AIエージェント時代のレビューは、もう少し「観察」に近づくのかもしれません。
コードそのものを細かく裁くというより、作られたものが実際にどう振る舞うのかを見る。期待通りに動くのか、どこで違和感が出るのか、どんな条件で失敗するのか、見落としているリスクはないのか。
そういう観点で成果物を見て、必要であれば制約や条件を追加し、もう一度AIに修正させる。レビューというより...AIの出力を現実の要求に近づけていく作業に近いのかなと。
もちろん、人間が見なくていいという話じゃなくて。認証・認可、権限管理、個人情報、課金処理、データ削除、障害時の復旧...こういう部分はAIが書いたからといって無条件に信頼するのはちょっと怖いですよね。
ただ、見るべきなのは「自分の好みに合っているか」じゃなくて「リスクに関わる部分」。仕様として危険な抜けがないか、想定外の入力に耐えられるか、権限境界が破れていないか。
コードを読むこと自体が目的じゃなくて、リスクを見つけることが目的。ここを間違えないことが大事なんじゃないかなと思ってます。
セキュリティも同じで...人間がコードを眺めていれば安全、というわけでもないんですよね。目で見て「うん、大丈夫そう」って...それ、本当に大丈夫なのかっていう(笑)
むしろ今後は、自動テスト、静的解析、AIによる脆弱性検出みたいな流れを継続的に回すことの方が重要になっていく気がしてます。
5. 人間はコードの所有者から、方向づける存在へ
AIエージェント時代に、人間の役割がなくなるとは思ってません。ただ、役割は変わるんだろうなと。
これまでは、人間がコードの所有者でした。自分で書き、自分で読み、自分で直し、自分で理解する。そうやってコードを自分たちの管理下に置いてきた。
でも、これからは少し違ってくるのかもしれません。
人間はAIに対して、作るものの方向性や、守るべき制約、避けるべきリスク、正解とする状態を伝える存在になっていくんじゃないかなと。
コードを一行ずつ支配するというより、成果物が向かう方向を決める。内部のすべてを理解するより、外側から観察し、検証し、必要な制約を与える。
これ、決して楽な役割じゃないと思うんですよね。むしろ、何が正しいのかを定義する力が、これまで以上に必要になる気がしてます。
おわりに
これまで、プログラムは人間が書くものでした。人間が読み、人間が直し、人間がレビューするもの。
でも、AIエージェントがコードを書くようになると...その前提間違ってきますよね。
人間が一行ずつ書かなくても、アプリは動く。すべての実装を読まなくても、機能は形になる。完全に理解しきれていない部分があっても、ユーザーに価値を届けられる場面は増えている。
だとしたら、プログラムはもう、人間のものではないですよね。
人間はコードの所有者じゃなくて、AIが生成した成果物を観察し、検証し、方向づける存在になっていく。まぁ方向ずけるのは...書く前の設定部分なんでしょうけど...
今だけの感覚だと思いますが、それはちょっと怖い変化でもあります。自分が長く向き合ってきた「プログラム」というものが、自分の手から少し離れていくような...。
でも同時に、それはソフトウェア開発が次の段階に進んでいるということなのかもしれません。
...まあ、次の段階に進んだ先で何が待ってるのかは、正直まだよく分かってないんですけどね。
関連記事
- 【AIエージェント時代の開発①】アセンブラからAIエージェントへ:私が「書かなくなった」30年と、その先にあるもの
- 【AIエージェント時代の開発②】「書かない」から「見ない」へ:AIエージェント時代に変わるエンジニアの仕事
- 【AIエージェント時代の開発③】プログラムは、すでに人間のものではないのかもしれない
