GitHub Copilot AIによるコード生成プログラミングサポートツール
このツールはペアプログラミングと同様に自然言語による記述からプログラムコードやテストコードの生成を行う事が可能となっています。
Copilotの利用環境
まだ正式リリースではなく、技術的な検証を行っている段階の「テクニカル・プレビュー」版であり、どちらかというとリリース前のベータに近い段階です
現時点ではGitHubで申し込みを行ったユーザーに対してのみ限定的に利用が可能となっています。
なので、現時点では全員が利用出来る訳ではなく、申し込みを行ってGitHubがテクニカルプレビューのユーザーとしてOKが出たユーザーのみ利用することが可能です。
またこの機能自体はVScode上の拡張機能として提供されています。
対応プログラミング言語
Copilotは多数のプログラミング言語に対応していますが、以下の言語では特にうまく動作するとの記載があります。
- Python
- JavaScript
- TypeScript
- Ruby
- Go
JavaScriptの例では関数名を記述するとコードを生成出来ています。
関数名としてcalculateDaysBetweenDatesそして引数として2つの日付を渡しています。
日本語にすると「日付の間の日数を計算する」という関数名となるため、関数の名前からどのような処理が必要かAIにより推測され、プログラムコードが生成されています。
テストコードにも対応
テストコードを提案をすることももちろん可能となっています。
適切なコメントを記述することにより精度の高い(プログラマーが期待している)コードが提案されるようです。
正確なコードを一発で生成してくれるという訳ではなく、Copilotの提案を受け入れるかどうかはプログラマー次第になります。
またプログラマーなら経験した事がある、どうしても書かなくてはいけなくなった面倒な配列なども簡単に生成できそうです。
どのようにコードが生成されるのか
プログラマーが記述したはコメントや関数の名前などにはGPT-3の後継であるOpenAI Codexが活用されているようです。
- 正式名称はGenerative Pre-Training-3
- OpenAIが開発している言語モデル
- 人間が書いたような文章を自動生成できる
OpenAIはイーロン・マスクさんが設立した会社で、2019年にマイクロソフトから$1Bの投資を受けています。
GitHubはMS傘下の企業となるため、買収後の大きなシナジー効果が発揮されはじめているように思います。
- GPT-3の子孫となるシステム
- GPT-3の英語に対し、Codexはプログラムコードを生成する
複数の機能を利用し、ようやくこの機能が実現出来ているようです。単純にスゴイですね。
AIの学習データにはGitHubで一般公開されているコードを元に学習が行われているとありますが、利用されているリポジトリなどの表示を見つけることはできませんでした。
個人的な見解ですが、GitHub Copilotに限らずAIの学習データにはGPLライセンスのものが含まれないよう厳密にチェックを行う必要があります。
- 正式名称はThe GNU General Public License
- プログラムの実行・改変・再配布することができる
- 改変した場合はそのコードも公開する必要がある
- 二次的著作物に関してもGPLでライセンスされなければならない
GPLは非常に強いコピーレフトを強制するため、もし学習データに含まれている場合、企業での利用には大きな障害となります。
自動生成されるコードに対する懸念
GitHub側でもすでにいくつかの懸念点があるようです。
安全ではないコーディングパターンやバグが含まれるコードは一般公開されており、Copilotもそれらを元コードを生成する可能性あります。
しかし、GitHubは学習データセットから安全でないコードを学習対象から外します。
テクニカルプレビューでは、不快な言葉をブロックしたり、センシティブな文脈での提案の合成を避けるためのフィルターが搭載されています。この技術はリリース前のものであるため、GitHub Copilot は、偏った、差別的な、罵倒的な、または攻撃的な出力を含む、望ましくない出力を生成することがあります。
不快な出力を目にした場合は、copilot-safety@github.com に直接ご報告いただければ、私たちの安全対策を改善することができます。GitHub はこの問題を非常に深刻に受け止めており、GitHub Copilot で対処することを約束します。
より知的なシステムを導入することで、開発者の仕事に大きな変化をもたらす可能性があります。この技術によって、既存のエンジニアの生産性が向上し、手作業が減り、面白い仕事に集中できるようになると期待しています。また、GitHub Copilotは、より多くの人がソフトウェア開発に興味を持ち、次世代の開発者の仲間入りができるよう、参入障壁を下げる可能性を秘めていると考えています。
つまりこの仕組みによってエントリーレベルの仕事が大幅に減少する可能性があると述べているように思います。
GitHub Copilot を利用して作成したコードは、あなたに帰属します。友好的なロボットは時折感謝の言葉を述べたがりますが、GitHub Copilot の功績を称える義務は一切ありません。コンパイラと同じように、GitHub Copilot を使った出力はあなたのものです。
まとめ
特にサンプルコードを検索して見つけてくるというプログラマーにとってよくありがちな時間が掛かる作業を大幅に軽減してくれる部分が良いですね。
※この記事では原文である英語から日本語への意訳を行っているため、厳密には意味が異なる場合があります。