GitHub Copilot(ギットハブ・コパイロット)は、GitHubが提供しているクラウド型人工知能ツールであり、OpenAIGPTを使用し、プログラミングにまつわる各種作業を支援する。

GitHub Copilot
開発元 GitHub
初版 2021年6月29日 (3年前) (2021-06-29)
対応OS Microsoft Windows, Linux, macOS, ウェブブラウザ
ライセンス プロプライエタリ
公式サイト github.com/features/copilot/
テンプレートを表示

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

沿革

編集

2021年6月29日、GitHubはVisual Studio Code開発環境でのGitHub Copilotのテクニカルプレビューを発表した[1][3]。2021年10月27日、JetBrainsIntelliJ 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]

GitHub Copilot (2021年版)

編集

特徴

編集

自然言語で書かれたプログラミング問題が与えられると、OpenAI CodexGPT-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]

脚注

編集
  1. ^ a b GitHub and OpenAI launch a new AI tool that generates its own code”. The Verge (29 June 2021). 6 July 2021閲覧。
  2. ^ a b c d e GitHub Copilot · Your AI pair programmer”. GitHub Copilot. 7 April 2022閲覧。
  3. ^ Introducing GitHub Copilot: your AI pair programmer” (英語). The GitHub Blog (29 June 2021). 7 April 2022閲覧。
  4. ^ GitHub Copilot - IntelliJ IDEs Plugin | Marketplace”. JetBrains Marketplace. 7 April 2022閲覧。
  5. ^ Copilot.vim, GitHub, (7 April 2022), https://github.com/github/copilot.vim 7 April 2022閲覧。 
  6. ^ GitHub Copilot now available for Visual Studio 2022” (英語). The GitHub Blog (29 March 2022). 7 April 2022閲覧。
  7. ^ GitHub Copilot is generally available to all developers” (英語). The GitHub Blog (21 June 2022). 21 June 2022閲覧。
  8. ^ Introducing GitHub Copilot X
  9. ^ 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. 
  10. ^ 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. 
  11. ^ Krill, Paul (12 August 2021). “OpenAI offers API for GitHub Copilot AI model” (英語). InfoWorld. 7 April 2022閲覧。
  12. ^ OpenAI Releases GPT-3, The Largest Model So Far” (英語). Analytics India Magazine (3 June 2020). 7 April 2022閲覧。
  13. ^ OpenAI Announces 12 Billion Parameter Code-Generation AI Codex” (英語). InfoQ. 7 April 2022閲覧。
  14. ^ OpenAI is giving Microsoft exclusive access to its GPT-3 language model” (英語). MIT Technology Review. 7 April 2022閲覧。
  15. ^ Code completion (DEPRECATED) | OpenAI Help Center
  16. ^ GitHub Next | GitHub Copilot Labs”. GitHub Next. 28 May 2023閲覧。
  17. ^ GitHub Next | GitHub Copilot for *Your* Codebase”. GitHub Next. 28 May 2023閲覧。
  18. ^ GitHub Next | GitHub Copilot Radar”. GitHub Next. 28 May 2023閲覧。
  19. ^ GitHub Next | Copilot for Docs”. GitHub Next. 28 May 2023閲覧。
  20. ^ GitHub Next | Copilot for Pull Requests”. GitHub Next. 28 May 2023閲覧。
  21. ^ GitHub Next | Copilot for CLI”. GitHub Next. 28 May 2023閲覧。
  22. ^ GitHub Next | Copilot Voice”. GitHub Next. 28 May 2023閲覧。
  23. ^ Salva, Ryan J.. “Introducing code referencing for GitHub Copilot”. The GitHub Blog. 11 August 2023閲覧。
  24. ^ Features - GitHub Copilot · Your AI pair programmer
  25. ^ 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]。
  26. ^ GitHub Copilot: The programming assistant at a glance” (英語). IONOS Digitalguide. 2022年7月20日閲覧。
  27. ^ Give Up GitHub: The Time Has Come!” (英語). Software Freedom Conservancy. 2022年9月8日閲覧。
  28. ^ If Software is My Copilot, Who Programmed My Software?” (英語). Software Freedom Conservancy. 2022年9月8日閲覧。
  29. ^ Vincent, James (2022年11月8日). “The lawsuit that could rewrite the rules of AI copyright” (英語). The Verge. 2022年12月7日閲覧。
  30. ^ GitHub Copilot litigation”. githubcopilotlitigation.com. Joseph Saveri Law Firm (November 3, 2022). 12 February 2023閲覧。
  31. ^ a b FSF-funded call for white papers on philosophical and legal questions around Copilot”. Free Software Foundation (28 July 2021). 11 August 2021閲覧。
  32. ^ Publication of the FSF-funded white papers on questions around Copilot”. Free Software Foundation (24 February 2022). 2023年2月18日閲覧。
  33. ^ GitHub Copilot - Your AI pair programmer”. GitHub. 18 October 2022閲覧。
  34. ^ Who does that server really serve?”. gnu.org. 18 Oct 2022閲覧。
  35. ^ CoPilot: Privacy & DataMining”. GitHub. 18 October 2022閲覧。

参考項目

編集

外部リンク

編集