IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

グーグルのクラウドを支えるテクノロジー

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第172回 大規模言語モデルによるコードレビュー支援の適用事例(パート3) (中井悦司) 2024年4月

はじめに

 前回に続いて、2024年に公開された論文「Resolving Code Review Comments with Machine Learning」に基づいて、大規模言語モデルをコードレビュー支援に適用したGoogle社内の事例を紹介します。この論文では、Google社内では、コードレビューのプロセスに大規模言語モデルによる支援を組み込んでいることが報告されています。今回は、モデルをレビューツールに組み込んで実環境で利用する際の工夫と、実環境での評価結果を紹介します。

UI改善のプロセス

 既存のツールに新しい機能を組み込む場合、適切なUIを提供することで新機能の利用度が向上するのはよくあることです。コード修正の提案機能でも同じことが起こりました。図1は、最初のバージョンのUIですが、ここでは、コード修正の提案があることを示すメッセージが、レビュアーのコメントとは別のコメントボックスに表示されています。多くの開発者は、これを自分の作業とは関係しないメッセージと考えて無視する結果になりました。修正案を表示するボタン「Show fix」が実際にクリックされる割合は、20%に留まったということです。そこで、第170回の 記事にある図2のように、レビュアーのコメントボックスの直下に「Show-ML edit」ボタンを表示するように変更したところ、クリック率は30%まで改善しました。

fig01

図1 レビューコメントと修正案のコメントが分離されたUI(論文より抜粋)

 次に行った変更は、レビュアーが修正案を事前にチェックする機能の追加です。コードレビューの目的には、経験の浅い開発者にレビュアーが社内標準に従ったコードの書き方を教えるという側面がありますが、レビュアーから見て不適切なコードが提案されることがあります。ベータユーザーからは、この点に対する不満の声があったため、レビュアーが事前に提案されるコードを確認できるようにしました。具体的には、図2のように、レビュアーがコメントを入力すると、対応する修正案を即座に表示します。図から分かるように、コメントを途中まで入力した段階で、その先の内容を予測した上で対応する修正案を提示していることがわかります。レビュアーは、表示された修正案を開発者に提示するかどうかをその下のチェックボックスで指定します。

fig02

図2 レビュアーがコメントを入力中に修正案を表示する様子(論文より抜粋)

 また、この機能の副次的な効果として、予測案を採用する信頼度のしきい値を50%から40%に下げることができました。しきい値を下げる事で、不適切な修正案が出力される可能性が高くなりますが、レビュアーが事前にチェックして除外するので問題ないというわけです。前回の記事の図2にある「Reviewer preview」は、この変更を表します。また、レビュアーが確認済みの修正案は、レビュアーの観点からも採用が推奨できるものなので、開発者の画面では、最初からコメントの直下に修正案のプレビューが表示されるようにUIを変更しました。修正案が長くてプレビューに収まらない場合は、開発者が「Show-ML edit」ボタンを押すことで全体が表示されます。
 なお、図2では、レビュアーがコメントを入力中に修正案が表示されると説明しましたが、この際の反応速度も重要なことがわかりました。レビュアーによっては、簡単なコメントであれば、数秒もかからずに入力を終えることもあります。そのため、修正案が表示されるタイミングが遅いと、レビュアーがその内容をチェックせずに次の作業に進んでしまうことがありました。そこで、予測処理のパフォーマンスチューニングを実施して、予測時間を1500ミリ秒から500ミリ秒まで短縮したところ、レビュアーが修正案をチェックする割合が12%増加して、さらに、開発者が修正案を採用する割合も18%増加したということです。

実環境での評価結果

 最後に実環境での評価結果を紹介します。前回の記事で説明したように、ベータ版、最初の正式バージョン(V1)、さらにチューニングを行った次期バージョン(V2)があり、論文内では、V1とV2に対する結果が図3のようにまとめられています。

fig03

図3 実環境におけるモデルの評価結果(論文より抜粋)

 「(%) of total」列の値の中で、「Applied by auther」は、レビュアーが入力したすべてのコメントに対して、開発者が大規模言語モデルによる修正案を採用したものの割合を表します。V1とV2を比較すると4.9%から7.5%に向上していることがわかります。このレビュープロセスは、Google社内で開発される実サービスのすべてのコードに適用されるものですので、大規模言語モデルが生成した多くのコードが、実サービスのコードして利用されていると言えるでしょう。

次回予告

 今回は、2024年に公開された論文「Resolving Code Review Comments with Machine Learning」に基づいて、大規模言語モデルをコードレビュー支援に適用したGoogle社内の事例について、実環境で利用する際の工夫と評価結果を紹介しました。
 次回は、Googleのネットワークでも採用されている、ネットワークインフラの耐障害性を高める機能を紹介します。

Disclaimer:この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes