GitHubは火曜日、Copilotと呼ばれるコード補完ツールを発表した。これは有望ではあるが、AIペアプログラミングの目標を達成するにはまだ道のりが長い。
パフォーマンスがどの程度なのか気になるなら、限定的な「テクニカルプレビュー」として提供されているこのサービスに関する FAQ で、GitHub は次のように認めている。
そして:
開発者のニック・シアラー氏は、Copilot のホームページに掲載された出力例の一つに、経費処理アルゴリズムの自動補完機能があることに気付きました。このアルゴリズムでは、金額を表すために浮動小数点変数の使用が提案されています。一般的に、浮動小数点変数は、$9.99000001 のような値をシステムに入力したい場合を除き、通貨には適していません。
いや、悪いロボットだ…このAI生成コードは我々には興味がない
Copilot は他にもあなたの一日を台無しにする方法を見つけるかもしれません。GitHub に説明してもらいましょう。
Copilotに最も熱心な人物は、このツールが期待通りに機能するのは10回に1回だけだと語っていました。「正しく推測すると、まるで私の心を読んでいるかのような感覚になります」と彼らは言いました。
GitHubはこれをAIペアプログラミングと呼んでいます。しかし、現状では、Copilotはペアプログラミングというより、AIアームチェアプログラミング、あるいはバックシートプログラミングに近いと言えます。これは対等なチームではありません。最終的な責任は依然として人間であるあなたにあります。そのため、Copilotはロボットプログラマーというよりも、自動補完に近いと言えるでしょう。
GitHubの広報担当者によると、CopilotチームはPythonで関数を記述し、ツールのベンチマークテストを行ったとのことです。広報担当者によると、モデルは最初の試行で43%の確率で正しいコードを生成し、10回の試行では57%の確率で正しいコードを生成しました。改善は進んでいると確信しています。広報担当者は、開発者は通常のテストとセキュリティツールと組み合わせてCopilotを使用し、最善の判断を下すべきだと付け加えました。
Copilot の使い方は簡単です。プレビューに承認されると、Visual Studio Code の拡張機能として、または GitHub Codespaces から利用できるようになります。入力するだけで、Copilot が次のコード行を提案したり、記述しようとしている特定の関数の空白を埋めたりしてくれます。
コメントを書いて、ソフトウェアにコードブロックを生成させることもできます。GitHubの広報担当者によると、Copilotはプログラミング言語と人間の言語の両方を理解するため、開発者は英語でタスクを記述でき、ツールはそれに対応するコードを提供しようとします。
その中核を成すのはOpenAI Codexです。GitHubの広報担当者によると、これはOpenAIが開発した機械学習システムであり、Codexをプログラムで使用するためのAPIが今夏に提供開始される予定で、詳細情報も提供されるとのことです。また、CodexはOpenAIのテキスト生成アルゴリズムGPT-3よりもはるかに高性能であるとも説明されました。
ニューラル ネットワークにコードの書き方を教えることは何度も試みられてきました。Amazon のような大手テクノロジー企業だけでなく、TabNine や Kite など、Copilot に似た製品を扱うスタートアップ企業もいくつかあります。
GitHub Copilot はそれほど驚くべきことではない。なぜなら、このコード管理プラットフォームは、OpenAI と密接な関係を持ち、数十億ドルの投資を行っている Microsoft が所有しているからだ。
ゴミを入れればゴミが出る
Copilotは、膨大な量の自然言語テキストと公開コードリポジトリで学習されました。GitHubによると、ツールの出力はユーザーが所有するもので、これはソースコードからコンパイラの出力を所有するのと似ています。ただし、提案の0.1%には学習セットに含まれていたコードが含まれている可能性があり、その使用は許可されるかどうかは不明です。繰り返しになりますが、Copilotの出力は入念に確認する必要があります。
ある例では、GitHub Copilot は、入力 JSON の例を含むコメントに基づいて、JSON データを解析して名前を共同作業者にマッピングするデータ構造に変換する複数行の TypeScript を生成しました。
灰色で書かれているのはコメントです。青でハイライトされているコードはGitHub Copilotによって生成されました。画像クレジット:GitHub
Copilotはあらゆる種類のプログラミング言語に対応できると言われていますが、特にPython、JavaScript、TypeScript、Ruby、Goで最も優れたパフォーマンスを発揮します。GPT-3が書き言葉から文法を習得したのと同様に、Copilotは人々がプログラミング言語を使用する際の一般的なパターンを学習することで、コードの出力を学習しました。とはいえ、Copilotに欠点はありません。コードベースが数千行以上に及ぶ場合、動作が混乱する可能性があります。
定型コードの生成などの簡単で反復的なタスクを自動化したり、よく知らないライブラリやフレームワークの関数を提案してドキュメントを調べる手間を省いたりするのに使用できると考えられます。
このツールは、GitHub の提案が承認または却下されたかどうかをテレメトリ経由で GitHub に通知します。この情報はソフトウェアの改善に活用されるとのことです。Copilot は、ソースコードに加えられた変更に適応し、ユーザーのコーディングスタイルに合わせて学習するとも言われています。
「モデルを改善するために、ユーザーがどの提案を承認または拒否したかの情報を含むテレメトリデータを利用しています」とマイクロソフト傘下の同社は述べた。「他のユーザー向けのコードを生成する際に、ユーザーのプライベートコードを参照することはありません。」
- 大規模なテキスト生成ニューラルネットワークが人々の電話番号を吐き出し始めたらどうなるでしょうか?OpenAIならフィルターを作成します
- IBMはソフトウェアがどのように作られるかをソフトウェアに教えるデータセットをまとめた。1400万のコードサンプルがあり、その半分は実際に動作する。
- AWSがBugBustコンテストを開始:12ドルのTシャツで1億ドルの問題解決に協力しよう
- AWSは自動化されたCodeGuruツールにPythonサポートを追加し、価格を大幅に引き下げたが、10万行を超えないようにした。
GitHubの広報担当者によると、Copilotは推論を実行するために高性能GPUを使用しているとのことです。また、GitHub社内の多くのエンジニアを含む数百人のエンジニアが既にGitHub Copilotを毎日使用しており、アルファテスターにも試用の機会が与えられたとのことです。
Copilotをお試しになりたい方は、こちらから待機リストにご登録ください。広報担当者によると、現在は無料でご利用いただけますが、発売時には商用化される予定です。®