「GitHub Universe 2022」からAIペアプログラミングのCopilotの未来を語るセッションを紹介
GitHub Universe 2022から、GitHubがOpenAIと共同で開発したAIによるペアプログラミング機能Copilotの背景を解説するセッションを紹介する。セッションのタイトルは「A Backstage pass with GitHub Copilot」だ。このセッションはCopilotを使ったデモから始まり、Copilotを使って開発を行っているGitHubのエンジニアへのサーベイの内容からその効果を解説、後半ではNew York Universityのアシスタントプロフェッサーをステージに呼び込み、Copilotに関する論文とその先にある未来を解説している。
●動画:A backstage pass with GitHub Copilot
最初に登壇したのはVP of Product ManagementのRyan Salva氏だ。
セッションはCopilotを理解するためにはスライドよりもデモの方が良いよね? として、Pythonで配列から最小の値を検索する関数を書くというデモから始まった。Copilotは、コメントにやりたいことを自然言語で書くとそれを理解してコードに変換するという動きをするため、単純にSort関数を使うコードを見せ、その後でSortを使わないとコメントに追加するとコードが即座に変化するところを見せた。
Copilotは翻訳機に近いと説明し、英語からポーランド語に変換するために主語や述語、動詞、文法を理解して変換すると説明した。ソースコードに応用するためにはデベロッパーの意図を入力としてそれに近い処理を行うコードを検索し、複数の候補として返すというのがCopilotの原理であるという。
ここから「これはデモのための例」と強調して「Unicorncandy」という単語をヘイトスピーチのパターンとして登録し、JavaのコードでUnicorncandyというファンクションを書こうとしてもサジェストされないというデモを行った。これは推論の前のProxyサーバーに対する処理ということで、Copilotに対してユーザー側から操作が可能であることを示している。
続いてGitHubのStaff ResearcherであるEirini Kalliamvakou氏が登壇し、Copilotに関するサーベイの結果を解説した。
これはGitHubの社内のエンジニアに対する調査で毎日の仕事の後に「今日の仕事はどうだった?」と質問し、「最高(Awesome)」から「最低(Terrible)」まで5段階で評価させるというシンプルなもので、結果として最高と答えたエンジニアの82%は仕事が中断されなかったことを説明した。すなわち、仕事が中断されることが最低という結果に繋がるということだ。
次にOctoverseというGitHubユーザーに対するサーベイの結果から「自動化」によってパフォーマンスが向上し結果に満足しているという数値を紹介した。ここでは多くのエンジニアが自動化の恩恵を受けていることを示している。
ここで2000名のエンジニアに対するサーベイから、Copilotによって約60%がコードを書く時のフラストレーションが減ったこと、検索のための時間が減ったこと、タスクの完了が速くなった、繰り返し記述しなければいけない処理のコーディングが速くなったことなどを効果として解説した。
そしてより詳細な比較のために95人のデベロッパーに参加してもらった調査の結果を紹介した。これは95名のデベロッパーをCopilotを使う45名と使わない50名に分けて、WebサーバーをJavaScriptでコーディングするというタスクを与えて結果がどう違うのか? を比較した調査だ。
結果としてCopilotを使った45名は78%がコーディングタスクを平均1時間11分で終了したのに対し、使わなかった50名の70%がタスクを終えたものの必要とした時間は2時間41分ということで約倍以上の時間を費やしてしまったという。
ここまでで実際にCopilotを使うことでタスク、主に冗長なエラー処理などの部分にかかる工数が削減され、中断なしに仕事が進められることを解説した。
その後にNew York UniversityのアシスタントプロフェッサーであるBrendan Dolan-Gavitt氏を呼び込み、Copilotが生成するコードにどの程度脆弱性が発生するのかを解説するフェーズとなった。
Dolan-Gavitt氏は2つの研究に関わっており、すでに論文として公開されている。最初の研究に関する論文は以下のリンクから参照して欲しい。
●NYUの論文(PDF):Asleep at the Keyboard, Assessing the Security of GitHub Copilot's Code Contribution.
これは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にとっては良い結果が出たことを紹介した。
最後にCopilotの未来、AIによるコード生成の次に何が来るのか? についてDolan-Gavitt氏が語ったことを示しておきたい。Dolan-Gavitt氏は、AIによってコードが生成されるだけではなく、脆弱性が発見された後にそれを修正する部分にCopilotが使えるようになることを期待していると語った。またマルウェアなどバイナリーフォーマットで発見されたコードに対して逆コンパイルを行い、そのコードがどのような動作をするのか実際に動かす前に解析する機能が欲しいと語り、単に生産性を上げるだけではなく修正や解析の場面でもCopilotが利用される可能性があることを参加者に示したと言える。
ChatGPTの公開で一般的にもAIによる文書生成、コード生成が認知されるようになったのはCopilotにとっては追い風だろう。今回紹介されたNYUなどのアカデミックな組織とも連携して着実に品質と機能を拡充していくCopilotは、ビジネス向けのサービスとしても提供され、今後のソフトウェア開発に大きなインパクトを与えて行くだろう。引き続き注目していきたい。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- AI_dev Europe 2024から、GitHubによるCopilotをコードのセキュリティ向上のためのツールとして解説したセッションを紹介
- GitHub Universe 2023、MSのCEOもサプライズで登壇した初日のキーノートを紹介
- GitHub Universe 2023からShopifyが活用するCopilotのセッションを紹介
- GitHub Universe 2022、キーノートで見せた多角的にデベロッパーを支援する機能とは?
- AI駆動型開発ツールに関する勉強会を取材。「まず使ってみることが大事」
- GitHub Universe 2023、GitHubのCOO、Kyle Daigle氏にインタビュー
- GitHub Universe 2023で、GitHubのCSO、Mike Hanley氏にインタビュー
- CI/CD Conference 2021 MicrosoftとGitHubの連携をMSKKのアーキテクトが解説
- GitHub Universe開催。ワークフローを実現するActionsなど多くの新機能を発表
- 写真で見るGitHub Universe 2023、狭いスペースを最大限に使った展示ブースなどを紹介