Agentic Codingがもたらす4つの問題点
Agentic Codingは、AIエージェントにプログラミングの一部または全体を任せることで、開発効率を大幅に向上させる可能性を秘めています。しかし、Lobstersの記事は、この技術がもたらす負の側面として「四騎士」と称する4つの問題を挙げています。これは、生産性向上という明るい側面に隠されがちな、開発者にとって避けては通れない課題だと感じます。
Agentic Codingは確かに非常に便利ですが、私たち、私たちの技術、そしてお互いの関係に恐ろしい影響を与えています。
具体的には、「Slop(手抜きコード)」「Alienation(疎外感)」「Deskilling(スキル低下)」、そして記事の記述はありませんでしたが、文脈から推測すると「Dependence(依存)」などが挙げられるでしょう。この記事では、特に最初の3つについて深く掘り下げていきます。
開発現場を侵食する「Slop(手抜きコード)」
AIが生成するコードには、人間が書いたコードとは異なる独特の「匂い」があると指摘されています。Lobstersの記事では、これを「Slop(手抜きコード)」と表現し、コードベースを人間にとって扱いにくいものにしていると述べています。これは、私自身もAI生成コードをレビューする際に感じる違和感に非常に近いです。
現在のLLMは、テキスト生成においては「無難で当たり障りのない」文章を生み出す傾向があると感じますが、コード生成においても同様の傾向が見られるのではないでしょうか。最新のモデルは確かに賢いですが、「雇用可能な賢さ」というよりも「奇妙な賢さ」に向かっているように見えます。
例えば、Claudeは「ワードサラダ」(意味不明な単語の羅列)を多用し、Astraは「コードゴルフ的」なスタイルで、人間には理解しにくいコードを書くという報告もあります。これらの特徴は、LLMの出力が持つ「だらしなさ」が単なる成長痛ではなく、その本質的な特性である可能性を示唆していると感じます(出典)。
| 項目 | 人間が書いたコード | AIエージェントが生成したコード(Slop) |
|---|---|---|
| 可読性 | 高い(意図が明確) | 低い(独特のスタイル、回りくどい) |
| 一貫性 | チーム内で統一されやすい | モデルによって異なる、文脈依存 |
| 保守性 | 変更・デバッグしやすい | 変更・デバッグしにくい |
| 所有感 | 開発者に帰属しやすい | 開発者が疎外感を感じやすい |
チーム開発において、コードベースが「AIの荒れ地」と化し、人間がコードを読み、変更する意欲を失ってしまうことは、プロジェクトの長期的な健全性に悪影響を及ぼすのではないでしょうか。
コードからの「Alienation(疎外感)」
ソフトウェア開発は、かつてはより「身体的」な作業でした。テキストエディタやキーボードといったツールへの強い愛着は、多くのエンジニアにとって共通の感覚だったはずです。
しかし、Agentic Codingは、エンジニアとコードとの距離を劇的に広げています。私たちはもはやコードを直接書くのではなく、漠然とした指示をエージェントに与え、そのレポートをざっと確認するだけになりがちです。
Agentic Codingは、エンジニアと彼らの仕事の成果物との距離を劇的に広げました。
この距離の拡大は、エンジニアがコードに対して抱く「所有感」や「愛着」を希薄にさせると考えられます。結果として、ソフトウェアの品質低下や、エンジニア自身のモチベーション低下につながる可能性があります。作り手の愛情が込められていないソフトウェアは、使う人にとっても喜びをもたらさない、という意見には強く共感します。
知識の陳腐化を招く「Deskilling(スキル低下)」
AIを長時間利用した後に、自身のスキルが低下したと感じるエンジニアの報告は少なくありません。これは「Deskilling(スキル低下)」という形で現れる問題です。AIが多くの定型作業や知識を代替することで、エンジニアはそれらを自力で解決する機会を失い、結果として既存のスキルが侵食され、新たな学習機会も妨げられる可能性があります。
特に、プログラミング学習中のジュニアエンジニアにとっては、AIへの過度な依存が成長を阻害するリスクがあると感じます。なぜなら、エラー解決や設計の試行錯誤といったプロセスこそが、エンジニアとしての深い理解とスキルを育むからです。AIが「答え」を与えすぎると、その過程が抜け落ちてしまう危険性があります。
参考記事には、CodeSceneがAgentic Agentを用いて30万行のC言語コードベースを3週間でリファクタリングし、そのコード健全性スコアを5.6から10.0に改善した事例が紹介されています(出典)。これはAIエージェントの能力を示す非常に興味深い結果ですが、この作業が人間のエンジニアのスキル向上にどれほど貢献したのか、という疑問も同時に感じます。私としては、このリファクタリングのプロセスで、AIがどのような「思考」をしたのかを人間が深く理解し、そこから学ぶ仕組みが重要だと考えます。
エンジニア目線で見ると:生産性向上と技術継承のバランス
Agentic Codingがもたらす「Slop」「Alienation」「Deskilling」は、現代のソフトウェア開発において真剣に議論すべきテーマです。私自身、日々の業務でClaude CodeをはじめとするAIコーディングツールを活用していますが、その恩恵を享受しつつも、記事が指摘するような負の側面には常に注意を払っています。
特に、AIが生成したコードのレビューは、従来よりも高い集中力と批判的な視点が求められると感じます。単に動けば良い、という考え方では、将来的な負債が蓄積し、やがて「AIの荒れ地」になってしまうリスクが高いのではないでしょうか。また、若手エンジニアの育成においては、AIを道具として使いこなす能力に加え、AIが生成するコードの背景にある原理や、人間がコードを書く上での「美意識」のようなものを伝えることが、これまで以上に重要になるでしょう。
将来的には、AIと人間が協調して開発を行う「ヒューマン・イン・ザ・ループ」の仕組みがより洗練されることを期待します。例えば、AIが複雑なリファクタリング案を提案し、それを人間がレビュー・承認する、あるいはAIが生成したテストケースを人間が評価するといった形です。AIを単なる「コード生成機」としてではなく、知識を深めるための「高度なツール」として捉える視点が、これらの課題を乗り越える上で不可欠だと考えます。