エージェントプログラミング
近年、ソフトウェア開発者がIDEに直接コードを打ち込むケースが減少しています。その代わり、LLMにコードを生成するように指示を出し、その結果をレビューしています。これはプログラミングの本質の大きな変化であり、人間がコードを書かずに、コードを書くLLMエージェントを監督するというものです。ソフトウェアの動作や機能については、依然として人間に責任がありますが、プロダクトを開発するスキルはまったく違ったものを使うことになります。
私は「バイブコーディング」と「バイブコーディング」を明確に区別しています。バイブコーディングでは、人間はコードを見ません。その存在を忘れています。一方、エージェントプログラミングでは、人間はコードに関心を払い、詳細なレビューを行います。また、エージェントプログラミングは、LLMを(IDEの環境内で)高度なコード補完ツールとして使用する場合とも違います。
この方法に確立された名称はありませんが、「エージェントの(agentic)」という形容詞がよく使われています。たとえば、「エージェントプログラミング」「エージェント(ソフトウェア)エンジニアリング」「エージェントコーディング」などです(私は「エージェントプログラミング」が好きです)。
現時点では、エージェントツールはターミナル環境で動作します。プログラマーがプロンプトを入力しますが、LLMが従うべきガイドラインを記載したドキュメントの指示も組み込まれています。LLMは、ソースツリーの操作、ファイルの作成や編集、コードの実行、テスト結果の評価、一定期間の継続的な開発作業を行います。作業が完了したら、人間がエージェントの成果を評価します。コードをレビューしたり、テスト結果を検証したり、センサーの出力内容を精査したりします。
このプログラミング手法の変化は、これからプログラマーに求められる活動やスキルについて、非常に多くの重要な疑問を投げかけます。現時点では、LLMを取り巻くガイドやセンサーに取り組む「ハーネスエンジニアリング」が中心になりそうです。このことは、プログラマーが取り組んでいるドメインを理解することの重要性を示すものでもあります。具体的には、ユーザーや顧客と協力しながら、反復的にプロダクトを定義および構築していくことになります。