概要
- LLM生成コード の修正・理解にかかる時間が増加傾向
- 「comprehension debt」 という新たな技術的負債の発生
- コードレビューや再作業による 生産性の鈍化
- 未読・未検証のコード がリポジトリに増加
- 今後のソフトウェア保守性への 深刻な影響
LLM生成コードと「comprehension debt」の増大
- Large Language Models(LLM) によるコード生成の普及
- LLM生成コードの 修正・理解に要する時間の増加
- レガシーシステム保守時と同様、 コードの意図や動作の把握 が前提条件
- LLMは 膨大な未読コード を高速で量産
- 品質重視チームは レビュー・再作業 を徹底、結果的に 時短効果の相殺
- 一方で、 未読・未検証のままコードを投入 するチームも増加傾向
- 理解が追いつかない速度で生成されるコード による「comprehension debt(理解負債)」の蓄積
comprehension debtのリスクと現状
- ソフトウェアが利用され続ける限り、 生成コードの修正ニーズ は必然
- 一部では「 ツールで再生成すればよい」との楽観論
- 実際には、 LLMで100%修正できるケースは少数
- 「doom loop」 :LLMで修正を試みても解決できず、何度もやり直す悪循環
- 最終的には人間による直接編集が不可避
- comprehension debt は、 コード理解にかかる追加コスト として確実に増加
- 理解負債の山 が急速に拡大中
今後の対応と課題
- コード生成の効率化 と 保守性のバランス が重要課題
- レビュー体制の強化 や LLM活用ルールの策定 の必要性
- 理解負債の可視化・管理 による長期的な品質維持
- 人間によるコード理解・編集能力 の再評価
- LLM依存リスク に対する組織的な意識の醸成
これはもともとあった問題だけど、LLMに頼ることでさらに悪化してるね。Naur(https://gwern.net/doc/cs/algorithm/1985-naur.pdf)が「理論構築」と呼んでたけど、>「プログラムの死は、その理論を持つプログラマーチームが解散するときに起こる。死んだプログラムは、コンピュータで実行され続け、有用な結果を生むこともある。実際の死の状態は、プログラムの修正要求に対して知的に答えられなくなったときに見えるようになる。プログラムの復活は、新しいプログラマーチームによってその理論を再構築することだ。」ラモートは「プログラミング ≠ コーディング」と呼んでいて、プログラミングは「達成したいこととその方法」で、コーディングは「コンピュータにどうやってやらせるか」って言ってる。これにはすごく同意するよ。たとえ開発チームが理論構築やモデリングのフェーズをスキップしても、コードを打ち込むときにモデルの一部を受動的に吸収してると思う。LLMが置き換えるのは、その偶発的なモデル構築の最後の手段だと思う。モデルや理論が必要だと思わないプログラマーと、LLMが自分たちを速くしていると報告している人たちの間には強い相関関係があるんじゃないかな。