世界を動かす技術を、日本語で。

コードの雑さを測定する

2026年9月11日原文(earendil.com)

概要

  • LLM によるコード生成はほぼ完璧だが、 品質問題 やスロップ(冗長・重複)の懸念
  • コードの スロップ評価 は難しく、人間の直感やセンスが依然重要
  • SlopCodeBench などによる定量指標(冗長性・侵食度)が提案
  • LLMやエージェント自身による評価には限界
  • コード品質評価の今後の課題と展望

LLMによるコード生成とスロップ問題

  • LLM はほぼ完璧な形式的正しさでコードを生成
  • 形式的に正しくても 不要な抽象化や重複、悪い設計 が混入するリスク
  • 機能追加ごとに コード行数(LOC)爆発 の現象
  • 巨大プロジェクトでは 人間の管理能力の限界 が露呈
  • エージェントに任せても 品質低下(スロップ)問題 は解決困難

コードスロップの定量的評価指標

  • LOC増減 の単純な計測は意外と有効だが、最適化すると意味を失う
  • SlopCodeBench 論文で提案された指標
    • 冗長性(Verbosity): 重複・冗長な行数の割合
      • AST-Grepとクローン検出によるフラグ付き行数/全LOC
    • 侵食度(Erosion): 巨大・複雑な関数にコードが集中する割合
      • 関数ごとの複雑度(CC)と行数(SLOC)から質量を算出
      • CC>10の関数の質量/全関数の質量

評価結果と人間コードとの比較

  • SlopCodeBench評価 での平均値
    • リポジトリ :冗長性0.15±0.06、侵食度0.31±0.17
    • エージェント生成コード :冗長性0.33±0.10、侵食度0.68±0.20
  • エージェントコードは人間コードの約2倍の冗長性・侵食度
  • 自分の“vibe-coded”プロジェクトでも高いスロップ値を確認

LLM/エージェントによるコード評価の限界

  • AIによる評価
    • 1-10点評価はランダムに等しい
    • 解答A/Bの比較も、名前を変えるだけで結果が変わる場合あり
    • ルーブリックや自動テスト生成も、スロップ排除には不十分
  • 人間による評価
    • 可読性・品質確保には最善
    • だが大規模データセットやAI訓練には非現実的

SlopCodeBenchの実験設計と示唆

  • 通常のコードベンチマークと異なり 複数ラウンド・文脈消去 で評価
  • 悪い設計判断が 累積 し、最新モデルでも 全テスト通過率0%
  • 大量のLOC追加 がもたらすリスクの警鐘

コード品質評価の今後

  • 関数の結合度コードの変動率(churn)凝集度(cohesion) など他指標も検討余地
  • コード進捗=LOC増加という誤解への注意喚起
  • 人間の感覚 が今も評価に不可欠という現状

まとめ

  • LLM/エージェント によるコード生成の品質管理は未解決課題
  • 定量指標 は有効だが、万能ではない
  • 人間の直感・センス を補完する新たな評価軸の開発が今後の鍵