GitHub Copilot

GitHub Copilotは、GitHubが提供しているクラウド型人工知能ツールであり、OpenAIのGPTを使用し、プログラミングにまつわる各種作業を支援する。

2021年版の GitHub Copilot は、ソースコードの自動補完によって、Visual Studio Code、Visual Studio、Neovim、JetBrainsの各統合開発環境でのプログラミングを支援する。2021年6月29日にGitHubが発表し、有償サブスクリプションで提供されており、多数のプログラミング言語をサポートしている。

1. 沿革
-----

2021年6月29日、GitHubはVisual Studio Code開発環境でのGitHub Copilotのテクニカルプレビューを発表した。2021年10月27日、JetBrainsのIntelliJ IDEAなどのプラグインとしてマーケットプレイスにリリースし、GitHub Copilot Neovimプラグインをパブリックリポジトリとしてリリースした。2022年3月29日、GitHubはMicrosoft Visual Studio 2022向けにCopilotが利用可能になったことを発表した。2022年6月21日、GitHubはCopilotがテクニカルプレビューを終了し、有償サブスクリプション型サービスとして利用可能になったことを発表した。

2023年3月22日、商品群を GitHub Copilot X として拡張することを発表した。GitHub Copilot chat, GitHub Copilot for docs, GitHub Copilot for pull requests, GitHub Copilot for CLI, GitHub Copilot Voice を追加する。

2. GitHub Copilot 
--------------------------

2.1. 特徴
-------

自然言語で書かれたプログラミング問題が与えられると、OpenAI Codexは解決するコードを生成することができる。また、英語で記述した入力コードを受け取ったり、プログラミング言語間でコードを変換することもできる。ウェブサイトによると、GitHub Copilotの機能には、コード上のコメントを実行可能なコードに変換したり、コードの塊、コードの繰り返し部分、それにメソッドや関数の全体を自動補完するなど、プログラマー向けの支援機能が備わっている。GitHubによると、Copilotの自動補完機能はおよそ半分の確率で正解であると報告している。たとえば、Pythonの関数ヘッダーコードでは、最初の試行で43%、10回の試行では57%の確率で、残りの関数本体コードを正しく自動補完した。

GitHubは、Copilotの機能によってプログラマーがドキュメントを読むのに費やす時間を短縮できると共に、不慣れなコーディングフレームワークや言語をうまく使えるようになると主張している。

2.2. 実装
-------

GitHub Copilotは、OpenAIが開発した人工知能モデルのOpenAI Codexを利用している。OpenAI Codexは、Generative Pre-trained Transformer 3  をプログラミング用に調整したもので、ディープラーニングを使用して人間のようなテキストを生成する言語モデルである。OpenAI Codexモデルは、さらに12種類のプログラミング言語について、ギガバイト単位のソースコードを使用して訓練されている。CopilotのOpenAI Codexは、厳選された英語文書、GitHubの公開リポジトリ、その他の公開されているソースコードを使用して訓練されている。これには、5,400万の公開GitHubリポジトリから取得した159ギガバイトのPythonコードをフィルター処理したデータセットが含まれている。

OpenAIのGPTは、GitHubの親会社であるマイクロソフトに対して独占的に使用許諾されている。2023年3月に、OpenAI Codexは非推奨となった。

3. 2022年発表
----------

2022年に、以下のプロトタイプなどが発表された。

GitHub Copilot Labs - チャット形式で利用できる物。翌年発表の GitHub Copilot chat の原型。
GitHub Copilot for *Your* Codebase - GitHub Copilot は現在開かれているファイルしかコンテキストとして利用しないため、開かれていないファイルをまたぐ処理が正常に処理できないが、プロジェクト全体を利用するようにする研究。
GitHub Copilot Radar - GPT を併用したコードナビゲーションの研究。

4. GitHub Copilot X 
----------------------------

4.1. GitHub Copilot chat
------------------------

2023年発表の GitHub Copilot chat は2021年版の GitHub Copilot を引き継ぐ物で、GPT-4 の系列となった。現在開いているファイルおよび選択したテキストをコンテキストとして利用し、ChatGPT のようにチャット形式で対話できるようになった。これを利用して、コードの説明をさせたり、単体テストのコードを生成させたり出来るようになった。GitHub Copilot chat は GPT-4 の系統を使用しているが、応答は微妙に ChatGPT の GPT-4 とは異なり、異なるモデルが使われている。また、プログラミング以外の事を聞こうとすると回答を拒否する。

4.2. GitHub Copilot for docs
----------------------------

GitHub Copilot for docs は API の利用方法をチャット形式で問い合わせるためのツール。情報源をライブラリの最新のバージョンの公式ドキュメントとすることで信頼性を上げている。また、自分がどの程度、そのAPIが詳しいか申告し、それに合わせて調整することが出来る。

4.3. GitHub Copilot for Pull Requests
-------------------------------------

プルリクエストに対しての説明の文章を GPT を用いて生成できる。単体テストの生成も提供予定。

4.4. GitHub Copilot for CLI
---------------------------

ターミナルでコマンドラインインタフェースを使用する際に、GPT が支援する。

4.5. GitHub Copilot Voice
-------------------------

GitHub Copilot Voice では、音声入力にてコードを書いたり、統合開発環境を操作したり出来る。

4.6. GitHub Copilot code referencing
------------------------------------

GitHub の公開コードに類似したコードがないか見つけ出す。

5. 価格
-----

2021年版のGitHub Copilotは、以下の2種類の料金体系となっている。

GitHub Copilot for Individuals - 月額$10 もしくは 年額$100
GitHub Copilot for Business - 1人あたり月額$19。組織単位のポリシー設定などが出来る。2023年発表の GitHub Copilot X は、どのような料金体系になるかは未発表。

6. 反応
-----

2021年のGitHub Copilotのリリース以来、そのセキュリティや教育的影響についての懸念や、生成されるコードをめぐるライセンス論争が起こった。

6.1. ライセンスに関する論争
----------------

Copilotが出力するコードのほとんどは変形的利用に該当するが、GitHubは、ごく一部が文字どおりコピーされていることを認めており、出力されたコードはフェアユースに該当するほど十分な変形ではなく、原コード所有者の著作権を侵害する可能性があるという懸念が生じている。GitHubは、『公開されているデータで機械学習モデルを訓練することは、機械学習コミュニティ全体ではフェアユースと見なされる』と主張しているが、Copilotは法的には未検証の状態に置かれている。また、同社は2022年6月時点で、完全または部分的に変更されずに出力されるソースコードはわずかであると述べている。そのため、このソフトウェアの学習が進めば、この数値は低下すると予想される。また、2022年6月に、Software Freedom Conservancyは、Copilotが学習データに使っているコードライセンスを無視していると非難し、同組織のプロジェクトでのGitHubの使用をすべて終了すると発表した。2022年11月、Copilotの合法性に異議を唱える集団代表訴訟が起こされた。

6.1.1. FSFのホワイトペーパー
-------------------

2021年7月28日、フリーソフトウェア財団は、Copilotをめぐる哲学的、法的問題についてのホワイトペーパーの資金提供を呼びかけた。FSFのライセンスおよびコンプライアンス・マネージャーであるDonald Robertsonは、『Copilotはより深く探究される必要のある多くの疑問を提起している』と述べている。2022年2月24日、FSFは、このテーマに関する22の論文を受け取り、匿名の審査過程を経て、重要な5つの論文を選んだと発表した。

6.2. プライバシーへの懸念
---------------

このサービスはクラウドベースであり、GitHub Copilotサーバーと常に通信する必要があるため、ソフトウェアを作成するプロセスをオンラインにして第三者の手に渡し、すべてのキーストロークを監視できるようにするという根本的な変化を意味する。

6.3. セキュリティへの懸念
---------------

2022年のIEEE Symposium on Security and Privacyで発表された論文では、Copilotが生成したコードの安全性について、89種類の異なるシナリオと1,689個のプログラムにわたって、マイター・コーポレーションによる上位25のコード共通脆弱性タイプ一覧への評価がなされた。これは、脆弱性の多様性、プロンプトの多様性、およびドメインの多様性の軸に沿って行われた。調査の結果、複数の言語におけるこれらの軸で、上位提案の39.33%、全体提案の40.73%がコードの脆弱性につながっていることが分かった。さらに、コードに対する小さな意味的でない変更が、コードの安全性に影響を与える可能性があることも分かった。

6.4. 教育への懸念
-----------

2022年2月に計算機協会から発表された論文では、Github Copilotで使用されているCodexという技術が、初心者プログラマーの教育に与える影響について評価されている。この研究では、オークランド大学のプログラミング入門クラスの評価設問を利用し、Codexの回答と学生の成績を比較している。その結果、研究者らは、平均してCodexは多くの学生よりも良い成績であったが、解答に使用できる機能が制限されている設問では、成績が低下することを見いだした。このような種類の設問では、『10個の解答のうち2個だけが正しかったが、両方とも制約に反していた。』とのことである。この論文は、Codexは学習者にさまざまな解決策を提供するのに役立つ可能性があるものの、過信や盗用につながる可能性もあると結論付けている。

7. 脚注
-----

8. 参考項目
-------

9. 外部リンク
--------