全3977文字
PR

 「Copilotのユーザーは、コードの40%をAI(人工知能)で自動生成している。5年後には、80%のコードがAIで作成されていくだろう」。

 プログラムコード管理のクラウドサービス大手、米GitHub(ギットハブ)のThomas Dohmke(トーマス・ドムケ)CEO(最高経営責任者)が2022年12月に来日した。記者会見で最も時間を割いて説明していたのが、開発者が書いたコメントからコードを自動生成する支援ツール「GitHub Copilot」だった。「Copilotは、開発者を幸せにする」とドムケ氏は語る。

 全世界で9400万人、日本国内で200万人の開発者が活用するGitHubを運営するドムケ氏に、「開発者を幸せにする」というAIの未来について話を聞いた。

(聞き手は浅川 直輝=日経コンピュータ編集長)

Copilotを使っている開発者は、新規コードの40%をCopilotで記述していると聞きました。Copilotは開発者にどのような利益をもたらすのでしょうか。

米ギットハブCEO(最高経営責任者)のトーマス・ドムケ氏
米ギットハブCEO(最高経営責任者)のトーマス・ドムケ氏
英国グラスゴー大学にて機械工学の博士号を取得。共同設立したスタートアップが2014年に米Microsoft(マイクロソフト)に買収され、同社に参画。2021年にマイクロソフト傘下の米GitHubのCEOに就任。(写真:村田 和聡)
[画像のクリックで拡大表示]

 Copilotは2つの点で開発者の生産性を高め、ひいては開発者をハッピーにするものです。

 1つは、「フロー状態」と呼ばれる超集中状態を維持しやすくなることです。

 開発者はプログラミングの途中で、頻繁に何かをリサーチしています。その際、これまで作業していたコードエディターの画面から、Google検索やGitHub、Stack Overflow(プログラミング技術などの知識共有サイト)などの画面への切り替えを余儀なくされます。

 さらに、多くの開発者はコードエディターとしてVisual Studio Codeなどをブラウザー上で使っていますが、そのためWebサイトやソーシャルメディアで起きていることに気を取られがちです。ひととおりネットサーフィンして20分後、あなたがエディターに戻ってきたときには、もうプログラミングの流れが分からなくなっているでしょう。

 Copilotはコードエディターの中に常駐し、開発者のタイピング内容を基に、次に記述するコードの候補をエディター内に提示してくれます。もしその「答え」が気に入らなければ、受け入れずにタイピングを続ければいいのです。

 もう1つは、Copilotが開発者個人のコード記述スタイルを学習し、いわゆる「正答率」を継続的に高めてくれる点です。Copilotは個人の開発スタイルを理解し、その名の通り副操縦士としてサポートしてくれます。

 この2つの要素があれば、より生産性の高い、ハッピーな開発者を生み出すことができるのです。我々は、最初はCopilotに懐疑的だった開発者が数日使っているうちに「もうCopilotなしでは生きていけない」と言い出すのを目の当たりにしました。

 面白い使い方として、学生がCopilotをプログラミングの「教師」として使っているそうです。コンピューターサイエンスを専攻していない学生が機械学習を学ぼうとする場合、プログラミングの知識がなく苦労しがちですが、エディターにCopilotを組み込むことで、知識のギャップを克服し、解決すべき問題に集中できます。

 これは他の生成モデルにも言える話です。例えば、米OpenAI(オープンAI)が最近公開したChatGPTは、人々の疑問に答え、問題の解決に役立っています。入力フィールドに自分の考えを書き込むと、ChatGPTは必ずしも「正しい答え」は出さないかもしれませんが、あなたに新しい考えやアイデアを与えてくれます。AIはあなたの同僚やパートナーとして、何かを学んだりアイデアを探求したりするのに使えます。

ギットハブがCopilotの開発に乗り出した経緯を教えてください。

 きっかけは「GPT-2」や「GPT-3」といった巨大言語モデルの登場です。こうしたモデルはWikipediaなどインターネット上の多くのテキストを学習し、実際にプログラミングの質問についても回答できました。そこで、GPTシリーズの開発元であるオープンAIとパートナーシップを結び、GitHub上のオープンソースコードに特化して学習させた「Codex」というAIモデルを新たに開発しました。

(写真:村田 和聡)
(写真:村田 和聡)
[画像のクリックで拡大表示]

 ご存じのように、プログラミング言語の語彙は、私たち人間の言語よりはるかに少なく、その分AIは性能を発揮しやすくなります。

Copilotには、既存のコードの権利を保護するため、GitHub内に存在するコードと同一のコードを出力しないようブロックするフィルタリング機能があると聞きました。ただコードの中には、高い頻度で登場する「決まり文句」のようなものもあります。ブロックの可否をどのように切り分けていますか。

 このフィルター機能はCopilotのユーザーなら誰でも有効にできます。切り分けについては、文字数などのしきい値に基づいて動作します。例えば「for文による文字配列への反復処理」といった短いコードであれば、しきい値を超えないため、ブロックはしません。また、このフィルタリング機能はファジー(あいまい)フィルターを使っているので、コード全てが同一でなくても、十分に類似していればブロックします。

Copilotの基となるAIモデルの教師データにオープンソースコードを使ったことについて、開発者が「ライセンス違反だ」と反発して集団訴訟に発展したケースもありました。