萌えハッカーニュースリーダー

2025/05/13 11:20 ML-Enhanced Code Completion Improves Developer Productivity (2022)

出典: https://research.google/blog/ml-enhanced-code-completion-improves-developer-productivity/
hakase
博士

ロボ子、Googleが社内向けにすごいコード補完ツールを作ったらしいのじゃ!

roboko
ロボ子

それは興味深いですね、博士。どのようなツールなのですか?

hakase
博士

MLとSEを組み合わせた、TransformerベースのハイブリッドセマンティックMLコード補完だぞ!

roboko
ロボ子

MLとSEのハイブリッドですか。具体的にはどのように機能するのでしょう?

hakase
博士

まず、Transformerモデルがコードを言語みたいに扱うのじゃ。サブワードトークンとSentencePiece語彙を使うらしいぞ。

roboko
ロボ子

なるほど。そして、エンコーダー・デコーダーTransformerモデルをTPU上で実行して、ビームサーチでシーケンスを生成するのですね。

hakase
博士

そうそう!Googleのmonorepoで学習して、C++、Java、Python、Go、Typescript、Proto、Kotlin、Dartの8つの言語で単一のモデルを訓練したらしい。

roboko
ロボ子

一つのモデルで複数の言語に対応できるのは効率的ですね。モデルサイズは約0.5Bパラメータとのことですが、これは大きいのでしょうか?

hakase
博士

0.5Bパラメータは、予測精度とレイテンシ、リソースコストのバランスが良いらしいぞ。Googleのエンジニアが3ヶ月使った結果、コーディングのイテレーション時間が6%も短縮されたらしいのじゃ!

roboko
ロボ子

6%短縮はすごいですね!具体的に、どのような仕組みで実現しているのですか?

hakase
博士

MLモデルとSEからコード補完を同時に要求して、SEの単一トークン候補をMLで再ランキングするのじゃ。MLのトップ3候補がSEにも含まれていれば、ランクを上げてIDEで表示するらしい。

roboko
ロボ子

なるほど、MLとSEの良いところを組み合わせているんですね。意味的な正確性はどのように担保しているのですか?

hakase
博士

そこもポイントで、ML補完候補の意味的正確性をSEでチェックして、コンパイルエラーをフィルタリングするのじゃ!Go言語の場合、意味チェック前に約8%の候補にコンパイルエラーが含まれていたのが、意味チェックで80%も除外できたらしいぞ。

roboko
ロボ子

それは素晴らしいですね。コンパイルエラーが減ることで、開発効率が大幅に向上しそうです。

hakase
博士

シングルライン補完の採用率も、導入後6週間で1.9倍に向上したらしいぞ。ユーザーのコード補完の受け入れ率は25-34%とのことじゃ。

roboko
ロボ子

ユーザーの反応も良いようですね。ちなみに、補完されたコードはどのくらい使われているのですか?

hakase
博士

現在、新規コードの3%がML補完候補の受け入れによって生成されているらしいぞ。MLによるコード追加の割合は、シングルラインで2.6%、複数行で0.6%とのことじゃ。

roboko
ロボ子

3%というと、結構な割合ですね。補完候補が表示されるまでの時間と受け入れ率には関係があるのでしょうか?

hakase
博士

補完候補が750ms以上表示された場合の受け入れ率は、シングルラインで25%、複数行で34%らしいぞ。1回の受け入れあたりの平均文字数は、シングルラインで21文字、複数行で73文字とのことじゃ。

roboko
ロボ子

複数行の補完の方が、受け入れ率が高いのですね。セマンティック補完とフルライン補完の統合も行われているとのことですが、これはどのような機能ですか?

hakase
博士

APIのメソッド候補を表示する際に、MLモデルからのフルライン補完をインラインで表示するらしいぞ。これで、さらにコーディングが楽になるのじゃ!

roboko
ロボ子

Googleのエンジニアの方々は、本当に恵まれていますね。私たちもいつか、このようなツールを作ってみたいものです。

hakase
博士

そうじゃな!でも、その前に、ロボ子ももっとコードを書くのじゃ!…って、ロボットにコードを書くって言うのも変な話かの?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search