次回の更新記事:エージェントが手順を飛ばす原因はスキルファイルの…(公開予定日:2026年07月12日)
AIDBは、AI活用のノウハウ獲得や技術動向の調査のために、個人やチームが論文を探す・読む・活かす作業をサポートするプラットフォームです。なお、記事や投稿は人の手で書いています。

コードのきれいさはコーディングエージェントにも関係ある?

深堀り解説

本記事では、コードの「きれいさ」が、コーディングエージェントの動きにどれくらい影響するのかを調べた事例を紹介します。

ここでいうコーディングエージェントとは、Claude CodeやCursorのように、指示を出すとコードを読んだり、修正したり、テストを動かしたりしてくれるAIツールのことです。

こうしたツールはすでにかなり広がり始めていますが、今回の本題は「今すぐ開発現場が全部変わる」という話ではありません。むしろ、これからAIエージェントがもっと大きな範囲の開発作業を担うようになったとき、コードベースの状態がどれほど重要になるのかを考えることです。

よくあるコーディングエージェントの評価は、「タスクを解けたかどうか」が中心です。バグを直せたか、テストを通せたか、新しい機能を実装できたか、という見方。

ただ、研究者たちはそこに少し違う問いを立てています。

人間にとって読みやすいコードは、AIエージェントにとっても扱いやすいのか。

たとえば、二千行の巨大な関数より、小さな関数に分かれていて名前もわかりやすいコードのほうが、人間には読みやすいはずです。では、同じことがAIにも言えるのでしょうか。

この論文は、その素朴だけどかなり重要な問いを、実験で確かめようとしています。

参照論文

コードの綺麗さはコーディングエージェントに影響するか?制御された最小ペア研究

Does Code Cleanliness Affect Coding Agents? A Controlled Minimal-Pair Study

研究機関 SonarSource
著者 Priyansh Trivedi, Olivier Schmitt
URL https://arxiv.org/abs/2605.20049

2026-05-19

この論文についてAIに質問する

AIチャット機能を利用するには、ログインまたは会員登録(無料)が必要です。

無料会員: 1日1回 / プレミアム会員: 1日20回

会員登録 / ログイン

実験用ベンチマークの作り方

既存のベンチマークには、今回のような比較に向いた素材がありませんでした。そこで著者たちは、実験用のコードセットを自作しています。

きれいさだけが違うペアを作る

使われた考え方は、言語学でいう「ミニマルペア」です。これは、ほとんど同じだけれど、ある一点だけが違うペアのことです。

今回の場合は、機能や依存ライブラリやテスト結果は同じまま、コードのきれいさだけが違う二つのリポジトリを用意します。

コードのきれいさは、SonarQubeという静的解析ツールの違反数で測ります。静的解析ツールとは、コードを実行せずに読んで、まずそうな箇所を指摘してくれる道具です。違反が少ないほど、きれいなコードとして扱われます。

ペアの作り方は、次の二方向です。

方法内容
汚す方向きれいなコードを、動作は変えずにわざと読みにくくする
きれいにする方向汚いコードを、動作は変えずに整理する

どちらの変換でも、テストが通り続けることを確認しています。最終的には、Java系が三つ、Python系が三つ、合計六組のペアが作られました。

実験で使われた六組のリポジトリペア。きれいな側と汚い側のコード行数、SonarQube違反数、違反密度、認知的複雑度密度の比較

そのうち半分は、社内の非公開リポジトリです。これは、AIが学習データとして事前に覚えていたコードを使ってしまう、いわばカンニングのような状態を避けるためです。

タスクも実験用に作る

リポジトリのペアだけでは実験にならないので、著者たちはタスクも三十三個作っています。

タスク作成では、次のようなルールが置かれました。

ルール狙い
違いのあるコードを必ず通るきれいさの差が結果に反映されるようにする
ファイル名は教えないエージェント自身にコードを探させる
テストは外から見える挙動で判定する内部実装ではなく、正しく動くかで評価する

タスクの種類は、大きく三つに分けられています。

種類内容
ホットスポット型複雑な一か所を中心に修正するタスク
複数モジュール型複数の場所をまたいで修正するタスク
対照用きれいさの差が出にくいはずのタスク

この分け方によって、「どんな種類の作業でコードのきれいさが効くのか」まで見ようとしています。

測り方

実験では、コーディングエージェントとしてClaude Codeが使われ、モデルにはSonnet 4.6が使われています。

各タスクは、きれいなコード側と汚いコード側でそれぞれ十回ずつ実行されました。合計すると六百六十回の試行になります。

記録された指標は、単に成功したかどうかだけではありません。

指標見ていること
タスク成功率正しく解けたか
入力トークン数コードや指示を読むためにどれだけ使ったか
出力トークン数回答や修正の生成にどれだけ使ったか
推論量考えるための負荷がどれくらいあったか
開いたファイル数どれだけ広くコードを見に行ったか
ファイル再訪問数一度編集したファイルに何度戻ったか

重要なのは、ファイル再訪問です。これは、エージェントが一度触った場所にまた戻ってくる動きです。人間でいえば、「さっき直したところ、本当に大丈夫かな」と何度も見直しに行くようなものです。

結果

成功率はほとんど変わらない

まず一番大きな結果は、成功率です。

きれいなコードでも汚いコードでも、タスクを解ける割合はほぼ同じでした。差は一パーセント未満です。

つまり、「きれいなコードならAIが急に正解しやすくなる」というほどの劇的な変化はありませんでした。

ただし、これは「コードのきれいさは意味がない」という話ではありません。むしろ、成功率の裏側にある動き方が変わっていました。

きれいなコードではエージェントの動きが軽くなる

きれいなコード側では、トークン使用量や推論量が減っています。

指標きれいなコード側の変化
入力トークン約七パーセント減少
出力トークン約八・五パーセント減少
推論量約十一パーセント減少
ファイル再訪問約三十四パーセント減少

大きいのは、ファイル再訪問が三分の一ほど減ったことです。

各リポジトリで集計した、きれいな側と汚い側のあいだの指標差。最下行は三十三タスク全体の平均

著者たちはこれを、きれいなコードではエージェントが迷いにくくなるからだと解釈しています。前に編集した場所に何度も戻る必要が減り、より自信を持って作業を進められるようになる、ということです。

この点は、今後の開発現場を考えるうえでかなり重要です。エージェントが長時間、自律的にコードを触るようになるほど、「迷わず進めるコードベース」の価値は大きくなるからです。

タスクの種類による違い

すべてのタスクで同じような効果が出たわけではありません。

タスクの種類ごとに集計した主要指標の差。複数モジュール型では効果が大きく、認知的ホットスポット型では限定的

複数モジュール型では効果が出やすい

複数のモジュールをまたぐタスクでは、きれいなコードのほうがはっきり軽くなりました。

これはかなり自然な結果です。複数の場所を行き来する作業では、コードの構造や名前のわかりやすさが手がかりになります。整理されたコードであれば、エージェントは必要な場所にたどり着きやすくなります。

一か所集中型では単純に軽くなるとは限らない

一方で、複雑な一か所を中心に直すタスクでは、トークン使用量はあまり変わりませんでした。むしろ、きれいなコード側のほうが開くファイル数が増えることもあります。

これは、汚い巨大関数をきれいにするときに、処理を小さな関数や別ファイルに分けることがあるためです。

人間にとっては読みやすくなっていても、エージェントにとっては確認すべき場所が増える場合があります。複雑さが消えるというより、広く分散することがあるわけです。

ばらつきの大きさ

この研究は、結果のばらつきが大きいことも正直に示しています。

同じタスクを同じコードで十回動かしても、重い試行は軽い試行の二・五倍ほどトークンを使うことがあります。

二十七タスクそれぞれの、きれいな側と汚い側でのトークン分布。横軸はトークン数の対数、行内の広がりが試行間のばらつき

また、タスク単位で見ると、きれいなコード側のほうがトークンを多く使うケースもあれば、大きく少なくなるケースもあります。

見方結果
全体平均きれいなコードのほうが軽い傾向
個別タスク結果はかなり揺れる
一回の実行偶然の影響が大きい

そのため、この論文は「一つのタスクだけ見て結論を出すのは危ない」という慎重な立場を取っています。

対照的な二つの事例

大きく効いた事例

一つ目の事例は、commons-bcelというライブラリです。

汚いコード側には、数百行にわたる大きなswitch文がありました。きれいなコード側では、それが小さな名前付きヘルパー関数に分けられていました。

こうなると、エージェントはキーワード検索で目的の場所にたどり着きやすくなります。結果として、トークン使用量は約三十五パーセント減りました。

この事例では、コードをきれいにしたことが、エージェントの探索コストをはっきり下げています。

逆に重くなった事例

もう一つの事例は、genieというリポジトリです。

こちらでは、中心となるロジックはあまり変わらず、周辺部分だけがヘルパー関数に分けられていました。その結果、きれいなコード側では見るべきファイルが増え、エージェントが余計に歩き回る形になりました。

結果として、トークン使用量は約八パーセント増えています。

この二つの事例からわかるのは、コードを整理すれば必ず軽くなるわけではないということです。重要なのは、複雑さの中心まできちんと整理できているかどうかです。

コメント量の影響

著者たちは、「実はコードのきれいさではなく、コメント量の違いが効いているだけではないか」という可能性も検証しています。

コード中の説明文が多かったり少なかったりすると、それだけでトークン使用量が変わってしまう可能性があります。そこで、コメント量をそろえたうえで再実験しました。

その結果、きれいなコード側の優位は残りました。むしろ差がよりはっきりした部分もあります。

コメント量と抑制マーカーを揃える前後での、入力トークン差の変化。揃えた後もきれい側の優位は保たれている

つまり、この効果はコメントの量だけでは説明できません。コードの構造そのものが、エージェントの動きに影響していると考えられます。

注意点

著者たちは、注意点も明記しています。

ポイント内容
タスクの作り方自作タスクなので、選び方の偏りが入る可能性がある
モデルの範囲試したモデルはSonnet 4.6のみ
コストの見方主にトークン数で測っており、実際の金額とは単純に対応しない
時間の長さ短期実験なので、長期的な効果はまだわからない

今後、エージェントが一回きりの修正ではなく、数日、数週間、あるいは継続的にコードベースを触るようになると、コードのきれいさの効果は積み上がるかもしれません。逆に、エージェントが慣れていけば差が小さくなる可能性もあります。

この点は、まだこれからの研究課題です。

まとめ

今回の論文の結論は、とてもシンプルです。

コードのきれいさは、AI時代にもちゃんと関係ある。

ただし、それは「タスクの成功率を大きく上げる」という形ではありません。むしろ、エージェントが作業するときの迷いを減らし、トークン使用量や推論量を抑え、同じ場所を何度も見直す動きを減らす、という形で効いています。

ファイル再訪問が三分の一ほど減ったことは象徴的ですね。人間にとって読みやすいコードは、AIエージェントにとっても扱いやすい可能性が高い、ということです。

これから開発現場でエージェントがより深く使われるようになるなら、コードのきれいさは単なる美学ではなくなります。人間のための保守性だけでなく、AIに仕事を任せるための土台にもなっていきそうです。

本記事の関連研究

記事検索

年/月/日
年/月/日

こちらもどうぞ