GitHub Copilot (ギットハブ・コパイロット)は、GitHub が提供しているクラウド型人工知能 ツールであり、OpenAI のGPT を使用し、プログラミング にまつわる各種作業を支援する。
2021年版の GitHub Copilot は、ソースコード の自動補完 によって、Visual Studio Code 、Visual Studio 、Neovim 、JetBrains の各統合開発環境 (IDE)でのプログラミングを支援する[ 1] 。2021年6月29日にGitHubが発表し、有償サブスクリプション で提供されており、多数のプログラミング言語 をサポートしている[ 2] 。
沿革
2021年6月29日、GitHubはVisual Studio Code 開発環境でのGitHub Copilotのテクニカルプレビューを発表した[ 1] [ 3] 。2021年10月27日、JetBrains のIntelliJ IDEA などのプラグイン としてマーケットプレイスにリリースし[ 4] 、GitHub Copilot Neovim プラグインをパブリックリポジトリとしてリリースした[ 5] 。2022年3月29日、GitHubはMicrosoft Visual Studio 2022向けにCopilotが利用可能になったことを発表した[ 6] 。2022年6月21日、GitHubはCopilotがテクニカルプレビューを終了し、有償サブスクリプション型サービスとして利用可能になったことを発表した[ 7] 。
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 を追加する。[ 8]
特徴
自然言語 で書かれたプログラミング問題が与えられると、OpenAI Codex (GPT-3 )は解決するコードを生成することができる[ 9] 。また、英語 で記述した入力コードを受け取ったり、プログラミング言語間でコードを変換することもできる[ 9] 。ウェブサイトによると、GitHub Copilotの機能には、コード上のコメント を実行可能なコードに変換したり、コードの塊、コードの繰り返し部分、それにメソッド や関数 の全体を自動補完するなど、プログラマー向けの支援機能が備わっている[ 2] [ 10] 。GitHubによると、Copilotの自動補完機能はおよそ半分の確率で正解であると報告している。たとえば、Pythonの関数ヘッダーコードでは、最初の試行で43%、10回の試行では57%の確率で、残りの関数本体コードを正しく自動補完した[ 2] 。
GitHubは、Copilotの機能によってプログラマーがドキュメントを読むのに費やす時間を短縮できると共に、不慣れなコーディングフレームワーク や言語 をうまく使えるようになると主張している[ 2] 。
実装
GitHub Copilotは、OpenAI が開発した人工知能モデルのOpenAI Codex を利用している[ 11] 。OpenAI Codexは、Generative Pre-trained Transformer 3 (GPT-3) をプログラミング用に調整したもので、ディープラーニング (深層学習)を使用して人間のようなテキストを生成する言語モデルである[ 12] 。OpenAI Codexモデルは、さらに12種類のプログラミング言語について、ギガバイト単位のソースコードを使用して訓練されている。CopilotのOpenAI Codexは、厳選された英語文書、GitHubの公開リポジトリ、その他の公開されているソースコードを使用して訓練されている[ 2] 。これには、5,400万の公開GitHubリポジトリから取得した159ギガバイト のPythonコードをフィルター処理したデータセットが含まれている[ 13] 。
OpenAIのGPT は、GitHubの親会社 であるマイクロソフト に対して独占的に使用許諾されている[ 14] 。2023年3月に、OpenAI Codexは非推奨(deprecated)となった[ 15] 。
2022年発表
2022年に、以下のプロトタイプなどが発表された。
GitHub Copilot Labs - チャット形式で利用できる物。翌年発表の GitHub Copilot chat の原型。[ 16]
GitHub Copilot for *Your* Codebase - GitHub Copilot は現在開かれているファイルしかコンテキストとして利用しないため、開かれていないファイルをまたぐ処理が正常に処理できないが、プロジェクト全体を利用するようにする研究。[ 17]
GitHub Copilot Radar - GPT を併用したコードナビゲーションの研究。[ 18]
GitHub Copilot X (2023年版)
GitHub Copilot chat
2023年発表の GitHub Copilot chat は2021年版の GitHub Copilot を引き継ぐ物で、GPT-4 の系列となった。現在開いているファイルおよび選択したテキストをコンテキストとして利用し、ChatGPT のようにチャット形式で対話できるようになった。これを利用して、コードの説明をさせたり、単体テストのコードを生成させたり出来るようになった。GitHub Copilot chat は GPT-4 の系統を使用しているが、応答は微妙に ChatGPT の GPT-4 とは異なり、異なるモデル(調整)が使われている。また、プログラミング以外の事を聞こうとすると回答を拒否する。
GitHub Copilot for docs
GitHub Copilot for docs は API の利用方法をチャット形式で問い合わせるためのツール。情報源をライブラリの最新のバージョンの公式ドキュメントとすることで信頼性を上げている。また、自分がどの程度、そのAPIが詳しいか申告し、それに合わせて調整することが出来る。[ 19]
GitHub Copilot for Pull Requests
プルリクエストに対しての説明の文章を GPT を用いて生成できる。単体テストの生成も提供予定。[ 20]
GitHub Copilot for CLI
ターミナルでコマンドラインインタフェース (CLI)を使用する際に、GPT が支援する。[ 21]
GitHub Copilot Voice
GitHub Copilot Voice では、音声入力にてコードを書いたり、統合開発環境 を操作したり出来る。[ 22]
GitHub Copilot code referencing
GitHub の公開コードに類似したコードがないか見つけ出す。[ 23]
価格
以下の3種類の料金体系となっている。[ 24]
GitHub Copilot Individual - 月額$10 もしくは 年額$100。機能限定版。
GitHub Copilot Business - 1人あたり月額$19。機能限定版。Individualの機能に加えて、組織単位のポリシー設定などが出来る。
GitHub Copilot Enterprise - 1人あたり月額$39。全ての機能が利用可能。リポジトリの内容に応じてAIによる質問応答(検索拡張生成)、プルリクエストの差分解析や要約、Bingによる検索、自分のソースコードによるコード補完のファインチューンなどが追加になっている。
反応
2021年のGitHub Copilotのリリース以来、そのセキュリティや教育的影響についての懸念や、生成されるコードをめぐるライセンス論争が起こった[ 25] [ 9] [ 26] 。
ライセンスに関する論争
Copilotが出力するコードのほとんどは変形的利用(英語版 ) に該当するが、GitHubは、ごく一部が文字どおりコピーされていることを認めており、出力されたコードはフェアユース に該当するほど十分な変形ではなく、原コード所有者の著作権を侵害する可能性があるという懸念が生じている[ 25] 。GitHubは、『公開されているデータで機械学習モデルを訓練することは、機械学習コミュニティ全体ではフェアユースと見なされる』と主張しているが、Copilotは法的には未検証の状態に置かれている[ 25] 。また、同社は2022年6月時点で、完全または部分的に変更されずに出力されるソースコードはわずかであると述べている。そのため、このソフトウェアの学習が進めば、この数値は低下すると予想される[ 27] 。また、2022年6月に、Software Freedom Conservancy は、Copilotが学習データに使っているコードライセンス を無視していると非難し、同組織のプロジェクトでのGitHubの使用をすべて終了すると発表した[ 28] [ 29] 。2022年11月、Copilotの合法性に異議を唱える集団代表訴訟 が起こされた[ 30] [ 31] 。
FSFのホワイトペーパー
2021年7月28日、フリーソフトウェア財団 (FSF)は、Copilotをめぐる哲学的、法的問題についてのホワイトペーパー (白書)の資金提供を呼びかけた[ 32] 。FSFのライセンスおよびコンプライアンス・マネージャーであるDonald Robertsonは、『Copilotはより深く探究される必要のある多くの(中略)疑問を提起している』と述べている[ 32] 。2022年2月24日、FSFは、このテーマに関する22の論文を受け取り、匿名の審査過程を経て、重要な5つの論文を選んだと発表した[ 33] 。
プライバシーへの懸念
このサービスはクラウド ベースであり、GitHub Copilotサーバー と常に通信する必要があるため、ソフトウェアを作成するプロセスをオンライン にして第三者の手に渡し、すべてのキーストロークを監視できるようにするという根本的な変化を意味する[ 34] [ 35] [ 36] 。
セキュリティへの懸念
2022年のIEEE Symposium on Security and Privacyで発表された論文では、Copilotが生成したコードの安全性について、89種類の異なるシナリオと1,689個のプログラムにわたって、MITRE(英語版 ) による上位25のコード共通脆弱性タイプ一覧(英語版 ) (クロスサイト・スクリプティング、パス・トラバーサルなど)への評価がなされた[ 26] 。これは、脆弱性の多様性(さまざまなコード脆弱性につながりうるシナリオへの対応力)、プロンプト の多様性(同じコード脆弱性でも微妙な変化を伴うことへの対応力)、およびドメインの多様性(Verilog でのレジスタ転送レベル のハードウェア仕様の生成能力)の軸に沿って行われた[ 26] 。調査の結果、複数の言語におけるこれらの軸で、上位提案の39.33%、全体提案の40.73%がコードの脆弱性につながっていることが分かった。さらに、コードに対する小さな意味的でない変更(すなわちコメント)が、コードの安全性に影響を与える可能性があることも分かった[ 26] 。
教育への懸念
2022年2月に計算機協会(ACM) から発表された論文では、Github Copilotで使用されているCodexという技術が、初心者プログラマーの教育に与える影響について評価されている[ 9] 。この研究では、オークランド大学 のプログラミング入門クラスの評価設問を利用し、Codexの回答と学生の成績を比較している[ 9] 。その結果、研究者らは、平均してCodexは多くの学生よりも良い成績であったが、解答に使用できる機能が制限されている設問(条件分岐 、コレクション 、ループ など)では、成績が低下することを見いだした。このような種類の設問では、『(Codexの)10個の解答のうち2個だけが正しかったが、両方とも(中略)制約に反していた。』とのことである[ 9] 。この論文は、Codexは学習者にさまざまな解決策を提供するのに役立つ可能性があるものの、過信や盗用につながる可能性もあると結論付けている[ 9] 。
脚注
^ a b “GitHub and OpenAI launch a new AI tool that generates its own code ”. The Verge (2021年6月29日). 2021年7月6日閲覧。
^ a b c d e “GitHub Copilot · Your AI pair programmer ”. GitHub Copilot . 2022年4月7日閲覧。
^ “Introducing GitHub Copilot: your AI pair programmer ” (英語). The GitHub Blog (2021年6月29日). 2022年4月7日閲覧。
^ “GitHub Copilot - IntelliJ IDEs Plugin | Marketplace ”. JetBrains Marketplace . 2022年4月7日閲覧。
^ Copilot.vim , GitHub, (7 April 2022), https://github.com/github/copilot.vim 2022年4月7日閲覧。
^ “GitHub Copilot now available for Visual Studio 2022 ” (英語). The GitHub Blog (2022年3月29日). 2022年4月7日閲覧。
^ “GitHub Copilot is generally available to all developers ” (英語). The GitHub Blog (2022年6月21日). 2022年6月21日閲覧。
^ Introducing GitHub Copilot X
^ a b c d e f g Finnie-Ansley, James; Denny, Paul; Becker, Brett A.; Luxton-Reilly, Andrew; Prather, James (14 February 2022). “The Robots Are Coming: Exploring the Implications of OpenAI Codex on Introductory Programming” . Australasian Computing Education Conference . ACE '22 (New York, NY, USA: Association for Computing Machinery): 10–19. doi :10.1145/3511861.3511863 . ISBN 978-1-4503-9643-1 . https://doi.org/10.1145/3511861.3511863 .
^ Sobania, Dominik; Schweim, Dirk; Rothlauf, Franz (2022). “A Comprehensive Survey on Program Synthesis with Evolutionary Algorithms” . IEEE Transactions on Evolutionary Computation : 1. doi :10.1109/TEVC.2022.3162324 .
ISSN 1941-0026 . https://ieeexplore.ieee.org/abstract/document/9743417?casa_token=2vffB_1z0UsAAAAA:7YGw6NRDYQE9UBDPUdv7Ij7EwySLOMENhzzRmIYo5erRHv0qtESQn-lCkMAh35cWn-DVrcP69Q .
^ Krill, Paul (2021年8月12日). “OpenAI offers API for GitHub Copilot AI model ” (英語). InfoWorld . 2022年4月7日閲覧。
^ “OpenAI Releases GPT-3, The Largest Model So Far ” (英語). Analytics India Magazine (2020年6月3日). 2022年4月7日閲覧。
^ “OpenAI Announces 12 Billion Parameter Code-Generation AI Codex ” (英語). InfoQ . 2022年4月7日閲覧。
^ “OpenAI is giving Microsoft exclusive access to its GPT-3 language model ” (英語). MIT Technology Review . 2022年4月7日閲覧。
^ Code completion (DEPRECATED) | OpenAI Help Center
^ “GitHub Next | GitHub Copilot Labs ”. GitHub Next . 2023年5月28日閲覧。
^ “GitHub Next | GitHub Copilot for *Your* Codebase ”. GitHub Next . 2023年5月28日閲覧。
^ “GitHub Next | GitHub Copilot Radar ”. GitHub Next . 2023年5月28日閲覧。
^ “GitHub Next | Copilot for Docs ”. GitHub Next . 2023年5月28日閲覧。
^ “GitHub Next | Copilot for Pull Requests ”. GitHub Next . 2023年5月28日閲覧。
^ “GitHub Next | Copilot for CLI ”. GitHub Next . 2023年5月28日閲覧。
^ “GitHub Next | Copilot Voice ”. GitHub Next . 2023年5月28日閲覧。
^ Salva, Ryan J.. “Introducing code referencing for GitHub Copilot ”. The GitHub Blog . 2023年8月11日閲覧。
^ Features - GitHub Copilot · Your AI pair programmer
^ a b c “GitHub's automatic coding tool rests on untested legal ground” . The Verge . (2021年7月7日). https://www.theverge.com/2021/7/7/22561180/github-copilot-legal-copyright-fair-use-public-code 2021年7月11日閲覧。
^ a b c d
Pearce, Hammond; Ahmad, Baleegh; Tan, Benjamin; Dolan-Gavitt, Brendan; Karri, Ramesh (16 December 2021). “Asleep at the Keyboard? Assessing the Security of GitHub Copilot's Code Contributions”. arXiv :2108.09293 [cs.CR ].
^ “GitHub Copilot: The programming assistant at a glance ” (英語). IONOS Digitalguide . 2022年7月20日閲覧。
^ “Give Up GitHub: The Time Has Come! ” (英語). Software Freedom Conservancy . 2022年9月8日閲覧。
^ “If Software is My Copilot, Who Programmed My Software? ” (英語). Software Freedom Conservancy . 2022年9月8日閲覧。
^ Vincent, James (2022年11月8日). “The lawsuit that could rewrite the rules of AI copyright ” (英語). The Verge . 2022年12月7日閲覧。
^ “GitHub Copilot litigation ”. githubcopilotlitigation.com . Joseph Saveri Law Firm (2022年11月3日). 2023年2月12日閲覧。
^ a b “FSF-funded call for white papers on philosophical and legal questions around Copilot ”. Free Software Foundation (2021年7月28日). 2021年8月11日閲覧。
^ “Publication of the FSF-funded white papers on questions around Copilot ”. Free Software Foundation (2022年2月24日). 2023年2月18日閲覧。
^ “GitHub Copilot - Your AI pair programmer ”. GitHub . 2022年10月18日閲覧。
^ “Who does that server really serve? ”. gnu.org . 2022年10月18日閲覧。
^ “CoPilot: Privacy & DataMining ”. GitHub . 2022年10月18日閲覧。
参考項目
インテリジェントコード補完(英語版 ) - プログラミング環境における文脈を考慮したコード補完機能
外部リンク