← 最新の論文
🤖 AI

LLM Code Smells: A Taxonomy and Detection Approach

本論文は、9 種類の LLM コードスマルの洗練された分類体系を提示し、分析対象とした 692 のオープンソースプロジェクトの 73.5% においてこれらの統合問題を検出する際に高い精度と再現率を実証する静的解析ツール SpecDetect4LLM を導入する。

原著者: Zacharie Chenail-Larcher, Brahim Mahmoudi, Naouel Moha, Quentin Stiévenart, Florent Avellaneda

公開日 2026-05-25
📖 1 分で読めます☕ さくっと読める

原著者: Zacharie Chenail-Larcher, Brahim Mahmoudi, Naouel Moha, Quentin Stiévenart, Florent Avellaneda

原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

あなたは家を建てると想像してください。ただし、人間の建築家を雇うのではなく、部屋を設計し家具を選ぶのを手伝ってくれる、非常に賢く、驚くほど速い、しかし少し予測不能なロボットを雇うのです。このロボットは「大規模言語モデル(LLM)」です。それは素晴らしいものですが、明確な指示を与えたり、その作業をチェックしたりしなければ、窓の場所にドアを作ったり、雨で崩れてしまう素材を使ったりするかもしれません。

この論文は、人間の開発者がこれらのロボットをソフトウェア内で使用しようとする際に発生する「悪い習慣」(または「コードの匂い」)について扱っています。研究者たちは、散らかった台所が焦げた料理につながるのと同様に、AI と対話する際の散らかったコードは、クラッシュする、費用がかかりすぎる、あるいは誤った答えを与えるソフトウェアにつながることを発見しました。

以下に、彼らの発見を簡単なアナロジーを用いて解説します。

1. 問題:「ロボットの悪い習慣」

研究者たちは、これらの AI ロボットと対話する際に開発者が行う9 つの特定の悪い習慣を特定しました。それらを工具箱に道具を分類するように、3 つのカテゴリーにグループ化しました。

  • 「構造的」な習慣(どのように質問するか):

    • アナロジー: 料理人に「夕食を作ってください」と言うとき、ベジタリアンか、辛いか、ナッツアレルギーがあるかを伝えないでください。
    • 匂い: システムメッセージの欠如。 開発者は、AI に「あなたは誰であるべきか(例:『あなたは親切な数学のチューターです』)」を伝える「職務説明(システムメッセージ)」を与えるのをよく忘れます。これがなければ、ロボットは専門家の代わりに一般的なチャットボットのように振る舞います。
    • 匂い: 匿名呼び出し。 名前を告げずにレストランに電話するのを想像してください。料理がまずければ、レストランは誰に電話を戻せばよいか分かりません。開発者は、AI リクエストに「ユーザー ID」を添付することを忘れがちで、後で誰が問題を引き起こしたかを追跡することが不可能になります。
  • 「データ」的な習慣(何を送り、何を受け取るか):

    • アナロジー: ロボットに郵便物を整理させるよう頼むが、手紙だけを渡すのではなく、開封されていない巨大なジャンクメールの箱を渡すようなものです。
    • 匂い: 構造化された出力の欠如。 特定の形式(JSON リストなど)で材料のリストを AI に求めますが、その形式に従うよう強制しません。代わりに段落形式のテキストが返されるかもしれません。その後、あなたのソフトウェアはその段落をリストとして読み込もうとしてクラッシュします。
    • 匂い: 生ビジョンペイロード。 コード内のバグの写真を見るよう AI に頼む場合、モニター全体の 4K スクリーンショットを送るのは無駄です。まるで一冊の本について尋ねるために図書館全体を郵送するようなものです。まずは画像をバグの部分だけに切り取るべきです。
  • 「プロトコル」的な習慣(ゲームのルール):

    • アナロジー: 速度制限を設定せず、また運転している車のモデルが常に同じであると仮定して、車を運転するのを想像してください。
    • 匂い: モデルバージョンの固定(ピン留め)の欠如。 ロボットに「'GPT-4'モデルを使用してください」と伝えます。しかし、会社は明日「GPT-4」を全く異なるロボットに更新するかもしれません。ロボットが性格を変えたため、あなたのコードが壊れます。特定のバージョン(例:「2024 年 11 月の GPT-4」)にピン留めする必要があります。
    • 匂い: 無制限の最大メトリクス。 ロボットに物語を書くよう頼みますが、500 語で止めるよう指示しません。ロボットは永遠に書き続け、お金と時間をすべて食い尽くすかもしれません。
    • 匂い: 温度設定の欠如。 これはロボットがどの程度「創造的」または「ランダム」かを制御します。設定しなければ、ロボットは明日に変更される可能性のあるデフォルト設定を使用し、ソフトウェアが日によって異なる振る舞いをすることになります。

2. 解決策:「嗅ぎ犬(SpecDetect4LLM)」

研究者たちは SpecDetect4LLM というツールを構築しました。これはあなたのコードの中を歩き回る嗅ぎ犬のようなものです。

  • コードを実行するのではなく、指示(「静的解析」)を見るだけです。
  • その 9 つの悪い習慣のいずれかを行ったかどうかを嗅ぎ回ります。
  • 悪い習慣を見つけると、吠えます(フラグを立てます)。これにより、開発者はソフトウェアを公開する前に修正できます。

3. 結果:その犬はどれほど優れているか?

研究者たちは、この嗅ぎ犬を692 の異なるソフトウェアプロジェクト(171,000 以上のコードファイル)でテストしました。彼らが発見したことは以下の通りです。

  • これらの悪い習慣はどの程度頻繁に発生するか?

    • プロジェクトの**73.5%**が、これらの悪い習慣の少なくとも 1 つを持っていました。これは、家に入り、4 軒のうち 3 軒が蛇口から漏れているのを見つけるようなものです。非常に一般的です。
    • 最も一般的な悪い習慣は、モデルバージョンを固定しないこと(特定の名称ではなく一般的な名前を使用すること)でした。
  • その嗅ぎ犬はそれらを見つけるのにどれほど優れているか?

    • 精度(正確性): 犬が吠えるとき、それは**91.3%**の確率で正しいです。狼を呼ぶことはめったにありません。
    • 再現率(網羅性): 犬は実際の悪い習慣の約**71.8%**を見つけます。いくつか見逃しますが、大多数を捉えます。

4. なぜこれが重要なのか?

この論文は、これらの悪い習慣が即座にソフトウェアをクラッシュさせるわけではないが、それらは車の錆のようなものであると主張しています。

  • 後で車を修理しにくくします(保守性)。
  • 車が低速で走ったり、ガソリン代がかさんだりします(パフォーマンス)。
  • 雨の日に車が予測不可能に振る舞います(信頼性)。
  • 道路状況が変わった場合、車が安全でなくなります(堅牢性)。

まとめ

研究者たちは、AI を使用する際に開発者が行う 9 つの一般的なミスの「メニュー」を作成し、これらのミスを自動的に発見するツールを構築し、これらのミスがソフトウェアの世界の至る所に存在することを証明しました。彼らのツールはそれらを発見するのに非常に優れており、開発者が AI を使用する際に、より安全で、安価で、信頼性の高いソフトウェアを構築するのを助けます。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →