🤔

AIコーディングとソースコードの可読性

に公開

ソースコードを読むことは人間の仕事ではなくなるのだろうか?

https://x.com/yuroyoro/status/1973636624404848888?s=46

コーディングはAIにさせるが、コードレビューはAIの支援も受けつつ人間が最終判断を行う、というのが現時点では多数派なように思う。人間がコードレビューを行うのだから、コードの可読性はまだまだ必要だろう。

では、将来は?コードレビューも含めたプログラミングにおける全てのプロセスを完全にAIに任せる未来は来るのだろうか?

いや、その未来はもう来ている。AIエージェントだ。AIエージェントは、目的を達成するための手順を自律的に計画し実行し修正する。「目的を達成するための手順の構築」こそが、まさにプログラミングという行為に他ならない。ここでいうAIエージェントはコーディングエージェントに限らない。AIエージェントと呼ばれるタイプのソフトウェアは、プロンプトによる指示を解釈し、自らの判断に基づきコンピュータを操り、問題解決をやってのける。そこにはソースコードという媒体は存在しない。従って、コードの可読性などという概念自体が存在しない。

以下では、ソースコードによって駆動される従来型のプログラムを古典的プログラム、プロンプトとAIエージェントによって駆動されるプログラムをエージェント型プログラムと呼ぶことにする。

エージェント型プログラムは非常に強力だが、しかし、古典的プログラムをすべて置き換えることはできないだろう。なぜなら、古典的プログラムはエージェント型プログラムに対して明確な優位性を持つからだ。古典的プログラムは、エージェント型プログラムと異なり、コンピュータを完全に人間の意図通りに制御することを保証する。

例えば、デバイスドライバやUIウィジェットといった、OS層のプログラムは今後も古典的プログラムであり続けるだろう。データベースやHTTPサーバといった厳密さやパフォーマンスが求められるミドルウェアも同様だ。

私のようなアプリケーションエンジニアの領分にも、古典的プログラムが必要な箇所は存在する。それは、ビジネスロジック、特に、データの整合性に関わる部分だ。MVCで言えば、モデル層は古典的プログラムであり続ける可能性が高い。一方で、ビュー層は古典的プログラムである必然性は薄く、エージェント型プログラムに置き換わる可能性は十分にある。その場合、モデル層の役割はデータの整合性が保証されたアトミックなアクションをMCPのようなインターフェイスで公開し、エージェント型プログラムから操作可能にすることになるだろう。

この記事を書いている最中に Apps in ChatGPT が発表された。AIエージェントがMCPを経由してモデル層に直接アクセスする世界がもうやって来てしまった。今のところチャットというインターフェイスに縛られてはいるが、今後AIエージェントが直接UIウィジェットを操作できるようになれば、GUIを伴うアプリケーションもAIエージェントに置き換えられるだろう。

さて、話を冒頭の問いに戻す。ソースコードを読むことは人間の仕事ではなくなるのだろうか?

おそらくそうはならない。ソースコードを読み品質を担保することは今後も人間の仕事であり続ける。ソースコードの可読性が不要になる未来はおそらく来ない。

なぜならば、古典的プログラムのエージェント型プログラムに対する優位性が明確に存在し、古典的プログラムが今後も残り続けるからだ。古典的プログラムにおいては、人間の意図を正確に表現することが最も重要であり、ソースコードとは人間の意図の表現そのものだ。その本質たるソースコードを人間がレビューしないのであれば、それは古典的プログラムである必要はなく、エージェント型プログラムに置き換えられる。人間のレビューを必要とするソースコードだけがソースコードとして残るだろう。

2025年現在、古典的プログラムからエージェント型プログラムへの置き換えが進行する最中にあって、我々ソフトウェアエンジニアはソースコードの品質管理にどう向き合えば良いのだろうか。1つの方針として、コードレビューが必要な箇所とそうではない箇所を明確に区別する、ということが考えられる。モデル層などプログラムの正確性が重要な箇所を他から隔離し、そこに可読性維持のためのリソースを集中するのだ。そして、エージェント型プログラムと連携する将来に備えて、隔離されたレイヤーは、外部から安全に呼び出し可能な単位で機能を公開する。

結局のところ、明確な階層構造を導入しクリティカルな部分に意識を集中するという、プログラミングの基本に忠実であることが今も重要なのだろう。

Discussion