💎

GitHub Copilotについて調べてみた

2023/04/15に公開
3

GitHub Copilot とは

GitHubとOpenAIが開発したクラウドベースの生成系AIツールです。
数十億行ものパブリックコードでトレーニングされたAIモデルがコーディング提案をしてくれます。[1]

2021年6月にテクニカルプレビューが開始され[2]、1年間のテクニカルプレビューを経て2022年6月に個人開発者向けのGitHub Copilot for Individualsの提供が開始されました。[3][4]
また、2023年2月には企業向けのGitHub Copilot for Businessの提供も開始されました。[5][6]

さらに2023年3月にはGitHub Copilotをより多機能なAIアシスタントに進化させたGitHub Copilot Xが発表され、同時にテクニカルプレビューが開始されました。[7][8]

特徴

  • AIベースのコーディング提案を受けることができる[9]
  • Visual Studio Code、Visual Studio、Neovim、JetBrainsの拡張機能として使用できる[9:1]
  • パブリックリポジトリ上にある全ての言語でトレーニングされており、それぞれの言語の提案の精度はトレーニングデータの量と多様性によって異なる。パブリックリポジトリ上のソースに量と多様性があるJavaScriptはGitHub Copilotで最もよくサポートされる言語の一つ。逆にパブリックリポジトリ上に少ししかソースがない言語では、生成される候補が少なかったり信頼性が低い可能性がある[10][11]

3つ目の特徴について参考にした公式ドキュメント
(英語版)
GitHub Copilot is trained on all languages that appear in public repositories. For each language, the quality of suggestions you receive may depend on the volume and diversity of training data for that language. For example, JavaScript is well-represented in public repositories and is one of GitHub Copilot's best supported languages. Languages with less representation in public repositories may produce fewer or less robust suggestions.
About GitHub Copilot for Individuals - GitHub Docs
(日本語版)
GitHub Copilot は、パブリック リポジトリに表示されるすべて言語でトレーニングされます。 各言語で、受け取る提案の品質は、その言語のトレーニング データの量と多様性によって異なります。 たとえば、JavaScript は、パブリック リポジトリで適切に表現されており、GitHub Copilot でサポートされている最適な言語の 1 つです。 パブリック リポジトリでの表現が少ない言語では、生成される候補の信頼性が低下する可能性があります。
GitHub Copilot for Individuals について - GitHub Docs

for Individuals vs for Business

GitHub Copilotを利用するには、GitHub Copilot for Individuals または GitHub Copilot for Businessの登録が必要です。(Individualsは60日間の無料試用期間あり)

Copilot for Individuals Copilot for Business
価格 1か月あたり $10、または1年あたり $100 1ユーザー、1か月あたり $19
GitHub アカウントの種類 個人用アカウント Organization または Enterprise アカウント
テレメトリ ✔︎ ×
パブリックコードに一致する候補をブロックする ✔︎ ✔︎
エディターに直接接続する ✔︎ ✔︎
複数行の関数の候補を提案する ✔︎ ✔︎
Organization 全体にわたるポリシー管理 × ✔︎
自己署名証明書による VPN プロキシのサポート [1] × ✔︎

GitHub Copilot for IndividualsとGitHub Copilot for Businessの違いを理解する - GitHub Docs

プライバシー・ライセンス関連

上記の表にある、「テレメトリ」と「パブリックコードに一致する候補をブロックする」はプライバシーやライセンスに関連する内容です。

テレメトリ

編集中のソースコードや同じエディタで開かれているファイルの情報が、Copilotの改善のために収集・保持される可能性があるかどうかです。

for Business

編集中のコードはコーディング提案のためにGitHubに送信されますが、提案が返された後は破棄されます。編集中のコードや関連するファイルの情報が収集・保持されることはないので、開発中のコードがCopilotの学習に使われ、さらにそれが他の人に提案されるなどの心配はないと考えられます。

GitHub Copilot transmits snippets of your code from your IDE to GitHub to provide Suggestions to you. Code snippets data is only transmitted in real-time to return Suggestions, and is discarded once a Suggestion is returned. Copilot for Business does not retain any Code Snippets Data.
GitHub Copilot · Your AI pair programmer

for Individuals

for Individualsでは設定によってはコードやファイルの情報が収集・保持される可能性があります。GitHubのリポジトリに他の人に見られたくない情報がある場合は収集を許可しない設定にした方が良いでしょう。

Depending on your preferred telemetry settings, GitHub Copilot may also collect and retain the following, collectively referred to as “code snippets”: source code that you are editing, related files and other files open in the same IDE or editor, URLs of repositories and files path.
GitHub Copilot · Your AI pair programmer

収集を許可しないようにする設定方法

Settings > Copilotの"Allow GitHub to use my code snippets for product improvements *"のチェックを外すことで収集を許可しない設定にできます。

パブリックコードに一致する候補をブロックする

GitHub Copilotはパブリックソースコードをトレーニングデータとしています。
そのため、それらのコードはオープンソースライセンスの有無に関わらず提案される可能性があると考えられます。

提案されたコードを使うことによって意図せずライセンスに違反してしまうことへの対策として、公開コードと一致するコードを提案しないようにする設定が可能です。この設定はfor BusinessではOrganizationアカウントまたはEnterpriseアカウントから継承されるため、個人では設定できません。for Individualsの場合は以下の方法で設定できます。[12]

for Individualsで公開コードと一致するコードを提案しないようにする設定方法

Settings > Copilotの"Suggestions matching public code"でBlockを選択します。

脚注
  1. GitHub Copilot research recitation | The GitHub Blog | The GitHub Blog ↩︎

  2. Introducing GitHub Copilot: your AI pair programmer | The GitHub Blog ↩︎

  3. GitHub Copilot is generally available to all developers | The GitHub Blog ↩︎

  4. GitHub Copilotを正式リリース。すべての開発者が利用できるようになりました。 - GitHubブログ ↩︎

  5. GitHub Copilot for Business is now available | The GitHub Blog ↩︎

  6. Copilot for Business の一般提供(GA)を開始 - GitHubブログ ↩︎

  7. GitHub Copilot X: The AI-powered developer experience | The GitHub Blog ↩︎

  8. GitHub Copilot X:AIを搭載した開発者体験 - GitHubブログ ↩︎

  9. GitHub Copilotにより、開発者は以下のことができるようになります。 | GitHub Copilotを正式リリース。すべての開発者が利用できるようになりました。 - GitHub Blog ↩︎ ↩︎

  10. About GitHub Copilot for Individuals - GitHub Docs ↩︎

  11. GitHub Copilot for Individuals について - GitHub Docs ↩︎

  12. Enabling or disabling duplication detection | Configuring GitHub Copilot settings on GitHub.com - GitHub Docs ↩︎

Discussion

TomojozTomojoz

GitHub Copilotについて大枠を掴むことができました😊ありがとうございます!

ruri14ruri14

「GitHub CopilotはGitHubのパブリックリポジトリのソースコードを学習データに使っている」という内容が公式のドキュメントで明言されていなかった(私が調べた限りで見つからなかった)ため、この内容に関する部分を修正しました。
以下は、公式のブログ・ドキュメント上にあった、学習データに関連する記述です。

GitHub Copilot is trained on billions of lines of public code. The suggestions it makes to you are adapted to your code, but the processing behind it is ultimately informed by code written by others.
GitHub Copilot research recitation | The GitHub Blog

GitHub Copilot is trained on all languages that appear in public repositories. For each language, the quality of suggestions you receive may depend on the volume and diversity of training data for that language. For example, JavaScript is well-represented in public repositories and is one of GitHub Copilot's best supported languages. Languages with less representation in public repositories may produce fewer or less robust suggestions.
About GitHub Copilot for Individuals - GitHub Docs

GitHub Copilot は、パブリック リポジトリに表示されるすべて言語でトレーニングされます。 各言語で、受け取る提案の品質は、その言語のトレーニング データの量と多様性によって異なります。 たとえば、JavaScript は、パブリック リポジトリで適切に表現されており、GitHub Copilot でサポートされている最適な言語の 1 つです。 パブリック リポジトリでの表現が少ない言語では、生成される候補の信頼性が低下する可能性があります。
GitHub Copilot for Individuals について - GitHub Docs