Large Language Models for Code Generation from Multilingual Prompts: A Curated Benchmark and a Study on Code Quality
本論文は、厳選された多言語ベンチマークを導入し、プロンプトに使用される言語がLLMによって生成されるコードの機能的な正確性、構造的な品質、および語彙的特性に大きく影響することを示す研究を提示しており、英語のプロンプトが一貫して最良の結果をもたらすわけではなく、その影響はモデルやプログラミング言語によって異なることを明らかにしている。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
偉大なるコード翻訳実験
想像してみてください。あなたには、簡単な鳥小屋から複雑な宇宙船まで、何でも作ることができる超スマートなロボットの友達がいます。このロボットは「大規模言語モデル(LLM)」と呼ばれ、インターネット上に書かれたほぼすべての文章、数百万行ものコンピュータコードを読み込んできました。これほど多くのものを読み込んできたため、このロボットは、私たちに代わって新しいコードを書くための指示に従うことが驚くほど得意です。通常、私たちはこのロボットと英語で会話します。なぜなら、それがロボットが学んだコードの多くが書かれていた言語だからです。しかし、もしあなたがこのロボットに、スペイン語、ヒンディー語、あるいは中国語の指示を使って宇宙船を作ってほしいと頼んだらどうなるでしょうか?ロボットは混乱してしまうでしょうか?宇宙船はバラバラになってしまうでしょうか?それとも、アクセントが変わるだけで、全く同じものを作り上げるのでしょうか?
これは、ある研究チームによる新しい研究の背後にある大きな疑問です。彼らは、私たちが使う言語が、AIロボットが書くコードの質を変えてしまうのかどうかを確かめたいと考えました。ソフトウェアエンジニアリングの世界では、「コード」とはコンピュータに何をすべきかを伝える指示のセットのことです。「正当性(Correctness)」とは、コードが実際に機能し、すべてのテストに合格すること、例えば、橋が車を支え続け、崩壊しないことのようなものです。「品質(Quality)」はもう少し広い概念です。それは、コードが読みやすく、その地域のルールに従っており(例えば、歩道にゴミを放置しないことなど)、後で壊れる原因となる隠れた罠がないことを意味します。研究者たちは、英語以外の言語で橋の作り方を頼んだ場合、ロボットがぐらつく橋を作ってしまうのか、それともロボックはどの言語でも同じように優秀なのかを知りたかったのです。
実験:マルチリンガル・コーディング・チャレンジ
これを確認するために、研究者たちは大規模なコーディング・コンテストを設定しました。彼らは、有名なベンチマークである「CoderEval」から、460種類の異なるプログラミング・タスク(Python用230、Java用230)を取り出しました。これらは単なる「Hello Worldを表示する」といった単純なタスクではありません。AIが問題を解決し、データを扱い、構造を構築することを要求される、現実世界の挑戦的な課題でした。
次に、彼らは巧妙なことをしました。AIに英語だけで聞くのではなく、これらの460のタスクを、中国語、ヒンディー語、スペイン語、イタリア語の4つの言語に翻訳したのです。ただし、単なる機械翻訳を使ったのではありません。彼らは、コンピュータサイエンスの専門家であるネイティブスピーカーに、すべての翻訳を手作業でチェックし、修正させました。指示が完璧で自然なものになるよう、まるで人間が友人に助けを求める時のようにしたかったのです。
その後、これらの翻訳された指示を、現在利用可能な最も強力な3つのAIロボット(GPT-4o mini、DeepSeek、Claude)に投入しました。彼らは各ロボットに対し、これら5つの言語(英語+他の4言語)すべてで、同じ460の問題を解くよう求めました。合計で、比較のための数千ものコードが生成されました。
大きな驚き:英語が常に王様とは限らない
結果は衝撃的でした。一般的な通説では、AIが最も多く学習した言語である英語で尋ねれば、最高のコードが得られると考えられていました。しかし、研究の結果、これは必ずしも真実ではないことが分かりました。
実際、Pythonのタスクにおいては、AIに中国語で指示を出すことで、英語で指示を出すよりも優れた結果が得られました!中国語のプロンプトから生成されたコードは、より多くのテストに合格し、より確実に動作しました。これは、シェフに料理を作るよう頼むようなものです。時には、異なる言語でレシピを与えることで、シェフがより良い調理法を思いつくことがあります。しかし、この「中国語の優位性」は、すべてのロボットやすべての種類のタスクで見られたわけではありません。Javaについては結果はより混在しており、明確な勝者は存在しませんでした。主な教訓は、AIに英語で話しかけることが最高のコードを保証するわけではなく、別の言語で話しかけることが自動的にコードを悪化させるわけでもないということです。
コードの見た目は変わるが、質は悪くなるのか?
研究者たちは、単に動くかどうかだけでなく、コードの「品質」についても調べました。彼らは以下の点を確認しました:
- 複雑性(Complexity): コードはもつれた塊か、それとも直線的なものか?
- コメント(Comments): ロボットは何をしているのかを説明したか?
- 警告(Warnings): コードはルールに違反していないか、あるいは乱雑に見えないか?
彼らは、英語以外の言語で生成されたコードが必ずしも「悪い」わけではないことを発見しました。ただ、見た目が異なるだけなのです。例えば、中国語のプロンプトから書かれたコードは、まるでロボットがより親切であろうとしているかのように、より多くのコメントが含まれていることがよくありました。ヒンディー語のプロンプトによるコードは、句読点の欠落や奇妙な空白といったスタイルの間違いが時折見られましたが、これらは通常、簡単に修正できる小さな問題でした。
興味深い発見の一つは、ヒンディー語に関するものでした。AIにヒンディー語でコーディングするよう求めると、時として、バグの可能性や混乱を招くロジックが多い、少しリスクの高いコードを生成することがありました。しかし、スペイン語やイタリア語については、コードは一般的に英語バージョンと同等であり、特定のミスを避けるという点では、時には英語よりも優れていました。
「ミックス・アンド・マッチ」の問題
ここからは少しややこしい話になります。コードの論理(ロジック)自体は素晴らしいかもしれませんが、コード内の「言葉」はしばしば混乱した混合状態にありました。研究者たちは、たとえスペイン語や中国語で指示を出しても、ロボットがコメント(コードを説明する注釈)や変数名(データのラベル)を英語で書いてしまうことが多いことを発見しました。
これは、シェフにイタリア語でレシピを書いてもらうよう頼んだのに、シェフが材料リストを英語で書き、手順を両方の言語を混ぜて書いているようなものです。研究者たちは、AIが非常に一貫性に欠けていることを発見しました。ある時は指示通りの言語に従い、ある時は従わないのです。これは、コードを一貫した言語にする必要がある開発者チームにとって問題となります。コードを特定の言語にするには、単にその言語でコードを求めては不十分で、注釈やラベルも同じ言語に保つよう、より具体的に指示する必要があるかもしれません。
これは私たちにとって何を意味するのか?
この研究は、AIコーディングアシスタントと対話するために、自分の母国語を使うことを恐れる必要はない、と結論付けています。スペイン語、中国語、あるいはヒンディー語でコードを求めても、ロボットが失敗することを心配する必要はありません。Pythonのようなケースでは、より良い結果が得られることさえあります!
ただし、注意すべき点が2つあります:
- 「スタイル」の問題: 非英語圏の言語で書かれる場合、コードに小さなフォーマットエラー(カンマの欠落や長い行など)が生じることがあります。しかし、これらは自動化ツールで簡単に修正できます。
- 「言語の混在」の問題: AIは、あなたが求めた言語でコメントやラベルを維持しないことがあります。もしすべてを一つの言語にする必要があるなら、コードを再確認するか、AIに追加の指示を与える必要があるかもしれません。
全体として、この研究はAIがより柔軟になっていることを示しています。AIは多くの言語で理解し、構築することができるようになっており、優れたコードを得るために全員が英語を話さなければならないという障壁を打ち破っています。しかし、あらゆる新しい道具と同様に、AIにも癖があります。最高の成果を得るためには、その扱い方を学ぶ必要があるのです。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。