連載 [第2回] :
  GitHub Universe 2022レポート

「GitHub Universe 2022」からAIペアプログラミングのCopilotの未来を語るセッションを紹介

2023年4月19日(水)
松下 康之 - Yasuyuki Matsushita
GitHub Universe 2022、Copilotに関するサーベイと未来についてのセッションを紹介する。

GitHub Universe 2022から、GitHubがOpenAIと共同で開発したAIによるペアプログラミング機能Copilotの背景を解説するセッションを紹介する。セッションのタイトルは「A Backstage pass with GitHub Copilot」だ。このセッションはCopilotを使ったデモから始まり、Copilotを使って開発を行っているGitHubのエンジニアへのサーベイの内容からその効果を解説、後半ではNew York Universityのアシスタントプロフェッサーをステージに呼び込み、Copilotに関する論文とその先にある未来を解説している。

Copilotの背景にある研究について解説するセッション

Copilotの背景にある研究について解説するセッション

●動画:A backstage pass with GitHub Copilot

最初に登壇したのはVP of Product ManagementのRyan Salva氏だ。

Copilotのデモを行うRyan Salva氏

Copilotのデモを行うRyan Salva氏

セッションはCopilotを理解するためにはスライドよりもデモの方が良いよね? として、Pythonで配列から最小の値を検索する関数を書くというデモから始まった。Copilotは、コメントにやりたいことを自然言語で書くとそれを理解してコードに変換するという動きをするため、単純にSort関数を使うコードを見せ、その後でSortを使わないとコメントに追加するとコードが即座に変化するところを見せた。

Copilotは翻訳機に近いと説明し、英語からポーランド語に変換するために主語や述語、動詞、文法を理解して変換すると説明した。ソースコードに応用するためにはデベロッパーの意図を入力としてそれに近い処理を行うコードを検索し、複数の候補として返すというのがCopilotの原理であるという。

ここから「これはデモのための例」と強調して「Unicorncandy」という単語をヘイトスピーチのパターンとして登録し、JavaのコードでUnicorncandyというファンクションを書こうとしてもサジェストされないというデモを行った。これは推論の前のProxyサーバーに対する処理ということで、Copilotに対してユーザー側から操作が可能であることを示している。

続いてGitHubのStaff ResearcherであるEirini Kalliamvakou氏が登壇し、Copilotに関するサーベイの結果を解説した。

Copilotの効果を解説するKalliamvakou氏

Copilotの効果を解説するKalliamvakou氏

これはGitHubの社内のエンジニアに対する調査で毎日の仕事の後に「今日の仕事はどうだった?」と質問し、「最高(Awesome)」から「最低(Terrible)」まで5段階で評価させるというシンプルなもので、結果として最高と答えたエンジニアの82%は仕事が中断されなかったことを説明した。すなわち、仕事が中断されることが最低という結果に繋がるということだ。

次にOctoverseというGitHubユーザーに対するサーベイの結果から「自動化」によってパフォーマンスが向上し結果に満足しているという数値を紹介した。ここでは多くのエンジニアが自動化の恩恵を受けていることを示している。

Copilotによって大きな効果があったことを解説

Copilotによって大きな効果があったことを解説

ここで2000名のエンジニアに対するサーベイから、Copilotによって約60%がコードを書く時のフラストレーションが減ったこと、検索のための時間が減ったこと、タスクの完了が速くなった、繰り返し記述しなければいけない処理のコーディングが速くなったことなどを効果として解説した。

冗長なコード記述が速く終わるようになったことを説明

冗長なコード記述が速く終わるようになったことを説明

そしてより詳細な比較のために95人のデベロッパーに参加してもらった調査の結果を紹介した。これは95名のデベロッパーをCopilotを使う45名と使わない50名に分けて、WebサーバーをJavaScriptでコーディングするというタスクを与えて結果がどう違うのか? を比較した調査だ。

Copilotを使うデベロッパーと使わないデベロッパーで違いがどれだけ出るのかを調査

Copilotを使うデベロッパーと使わないデベロッパーで違いがどれだけ出るのかを調査

結果としてCopilotを使った45名は78%がコーディングタスクを平均1時間11分で終了したのに対し、使わなかった50名の70%がタスクを終えたものの必要とした時間は2時間41分ということで約倍以上の時間を費やしてしまったという。

ここまでで実際にCopilotを使うことでタスク、主に冗長なエラー処理などの部分にかかる工数が削減され、中断なしに仕事が進められることを解説した。

その後にNew York UniversityのアシスタントプロフェッサーであるBrendan Dolan-Gavitt氏を呼び込み、Copilotが生成するコードにどの程度脆弱性が発生するのかを解説するフェーズとなった。

NYUのアシスタントプロフェッサーを登壇させて研究について解説

NYUのアシスタントプロフェッサーを登壇させて研究について解説

Dolan-Gavitt氏は2つの研究に関わっており、すでに論文として公開されている。最初の研究に関する論文は以下のリンクから参照して欲しい。

●NYUの論文(PDF):Asleep at the Keyboard, Assessing the Security of GitHub Copilot's Code Contribution.

最初の研究について語るDolan-Gavitt氏

最初の研究について語るDolan-Gavitt氏

これはCopilotによって生成されるコードにどれくらい脆弱性が含まれているのか? を検証するという研究で、Copilotは既存のコードから学習して類似のコードを生成するため、もしも学習されるコード自体に脆弱性が含まれる場合はそれも複製してしまうとすれば、実際どのくらいの確率で脆弱なコードが生成するのだろうか? を調べるというものだ。結果としては、89のパターンに対してCopilotは1689種類のコードを生成、その約40%に脆弱性が含まれていることを発見したという。

CopilotはOpenAIのCodexをベースにしており、これは今、話題となっているChatGPTのベースとなったGPT-3モデルとほぼ同様のモデルで、GitHubのためにチューニングしていることが論文の中で解説されている。この論文の中ではCopilotは「ベスト」のソースコードを生成するのではなく、もっとも近似のソースコードを返すため、コードの品質は必ずもプロのエンジニアからみて良いものになるとは限らないことは解説されている。

2つめの研究に関する論文は以下のリンクから。

●2つめの論文(PDF):Lost at C: A User Study on the Security Implications of Large Language Model Code Assistants

タイトルは「Security Implications of Large Language Model Code Assistants: A User Study」というものだ。これはショッピングリストを操作するコードをC言語で書くというタスクを58名の学生に与えて、Copilotをアシスタントとして使った場合と使わなかった場合に分けて、どのくらい脆弱なコードが生成されるのか? を調べるものだ。結果としてCopilotはコードの品質に良い効果を与え、脆弱性を生成してしまうことは少なかったという、CopilotのオーナーであるGitHubにとっては良い結果が出たことを紹介した。

2つめの研究について解説を行うDolan-Gavitt氏

2つめの研究について解説を行うDolan-Gavitt氏

最後にCopilotの未来、AIによるコード生成の次に何が来るのか? についてDolan-Gavitt氏が語ったことを示しておきたい。Dolan-Gavitt氏は、AIによってコードが生成されるだけではなく、脆弱性が発見された後にそれを修正する部分にCopilotが使えるようになることを期待していると語った。またマルウェアなどバイナリーフォーマットで発見されたコードに対して逆コンパイルを行い、そのコードがどのような動作をするのか実際に動かす前に解析する機能が欲しいと語り、単に生産性を上げるだけではなく修正や解析の場面でもCopilotが利用される可能性があることを参加者に示したと言える。

ChatGPTの公開で一般的にもAIによる文書生成、コード生成が認知されるようになったのはCopilotにとっては追い風だろう。今回紹介されたNYUなどのアカデミックな組織とも連携して着実に品質と機能を拡充していくCopilotは、ビジネス向けのサービスとしても提供され、今後のソフトウェア開発に大きなインパクトを与えて行くだろう。引き続き注目していきたい。

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

開発ツールイベント
第4回

写真で見るGitHub Universe 2022、限られた空間で最大限の効果を狙ったイベント作り

2023/5/10
GitHub Universe 2022、限られたスペースで効果を上げるイベント作りのようすを紹介する。
開発ツールイベント
第3回

「GitHub Universe 2022」セキュリティの機能強化はOSS向けとエンタープライズ向けの2本立て

2023/5/8
GitHub Universe 2022で語られた、オープンソースコミュニティとエンタープライズ向けの2本立てのセキュリティ施策を解説する。
ミドルウェアイベント
第2回

「GitHub Universe 2022」からAIペアプログラミングのCopilotの未来を語るセッションを紹介

2023/4/19
GitHub Universe 2022、Copilotに関するサーベイと未来についてのセッションを紹介する。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています