はじめに
GitHub Copilotはなんとなくわかるしなんとなく使えているけど、Copilotを使うメリットや、ユースケースの例、使用上の注意点など、ちゃんと他の人に説明しようと思ったときにできないことに気が付いたため、GitHub Copilotに関する情報を備忘録としてこの記事に簡単にまとめます。
GitHub Copilotとは
GitHub Copilotを一言で言うと、「AIペアプログラマー」です。より速く、より少ない作業でコードを記述するのに役立つ、世界初の大規模なAI開発者用ツールであり、開発者がより短時間でコードを作成し、より満足のいく作業に集中できるようにすることで、組織の生産性、セキュリティ、充実感を高めることに重点を置いています。GitHub Copilotはコメントとコードからコンテキストを引き出して、個々の行および関数全体を即座に提案するため、開発者は使用するコードを書き始めるか、そのコードに何をさせたいかを自然言語のコメントで記述することで、候補を取り入れることができます。
OpenAI Codex
GitHub Copilotには、OpenAIによって作成されたAIシステムであるOpenAI Codexが搭載されています。OpenAI Codexはコード生成において、GPT-3よりも一部優れています。
GitHubとMicrosoftの最近の調査結果
調査結果により、開発者がGitHub Copilotを使うことで以下のことが判明しました。
- 新しいコードの「46%」がAIによって記述されるようになった
- 開発者の全体的な生産性が「55%」速くなった
- 開発者の「74%」が満足のいく作業に集中できるようになったと感じている
- 「90%」近くの開発者がタスクをより短い時間で終わらせることができた
- 開発者の「73%」が、長い時間集中力を保つのに役立つと回答
- 「87%」が反復的なタスクに取り組んでいる際に気力を保つのに役立ったと回答
Visual Studio Codeを使ったGitHub Copilotの利用
Visual Studio CodeでGitHub Copilotを利用するために、いくつかのショートカットが用意されています。
候補の表示
- 候補を受け入れるには、
Tabキーを押す - すべての候補を拒否するには、
Escキーを押す
(ちなみに、Copilotは約150文字のコード候補を出します。)
代替候補の表示
| OS | 次の候補を表示 | 前の候補を表示 |
|---|---|---|
| macOS | Option (⌥) または Alt+] | Option (⌥) または Alt+[ |
| Windows | Alt+] | Alt+[ |
| Linux | Alt+] | Alt+[ |
複数の候補を表示
Ctrl+Enterキーを押します。
(候補を受け入れるには、候補の上にあるAccept Solutionを押す。)
コメントからコード候補を生成
コメントを入力するだけで、関数の実装の候補が表示されます。
GitHub Copilotが得意な言語
Python、JavaScript、TypeScript、Ruby、Go、C#、C++、です。
GitHub Copilotのトレーニングデータ
パブリックリポジトリに表示されるすべて言語でトレーニングされています。
コードのセキュリティと品質を確保
無数のオープンソースコードから構築されたモデルから提案されるため、安全でないコーディングパターン、バグ、古いAPIが含まれている可能性があります。提案を受け入れるのは開発者自身の責任ですが、GitHub Actions、Dependabot、CodeQL、code scanningなど、コード品質を監視および改善できる多数の機能が用意されています。
GitHub Copilot for BusinessとGitHub Copilot for Individualsの比較
GitHub Copilot for Individualsではできないが、GitHub Copilot for Businessではできることは以下です。
- コードスニペットと利用統計情報のデータ保持期間がゼロ
-
Organization全体にわたるポリシー管理 - 自己署名証明書によるVPNプロキシのサポート
ちなみに、for Individualの価格は1か月あたり10ドル(1年で100ドル)で、for Businessは1ユーザー1か月あたり19ドルです。
ログファイルの表示と収集
-
Visual Studio Codeの[表示]メニューを開きます。 - [出力]をクリックします。
- [出力ビュー]ペインの右側で、ドロップダウンメニューから[
GitHub Copilot]を選びます。
ネットワーク接続診断ログの表示
- コマンドパレットから「
Diagnostics」と入力し、一覧から[GitHub Copilot:診断の収集]を選びます。 - [到達可能性]のセクションを確認して、
GitHub Copilotが実際に必要なサービスにアクセスできるかどうかを判断します。
GitHub Copilot X
GitHub Copilot Xとは、OpenAIの最新のGPT-4モデルを採用する、AIを利用したソフトウェア開発の将来のビジョンです。
GitHub Copilot Xから期待できる今後の機能
- エディターでの
ChatGPTのような体験 -
pull request用のCopilot - ドキュメントについてのAIによって生成された回答
- コマンドラインインターフェイス(
CLI)用のCopilot
GitHub Copilot Chatとは
GitHub Copilotと対話できるチャットインターフェイスであり、サポートされているIDE内で直接コード関連の質問をすると回答を受け取ることができます。チャットインターフェイスを使用すると、ドキュメントに移動したり、オンラインフォーラムを検索したりする必要なく、コーディング情報とサポートにアクセスできます。現在はVisual Studio CodeとVisual Studioでサポートされています。
GitHub Copilot Chatでできること
単体テストケースの作成、コードの説明、コード修正の提案、コードに関する質問やヘルプ、などができます。
GitHub Copilot Chatの制限
- パブリックリポジトリの表現が少ない言語は、
Copilot Chatでの支援がより困難になります。 -
Copilot Chatでは、書き込まれるコードのコンテキストに基づいてのみコードを提案できるため、より大きな設計やアーキテクチャの問題を特定できない場合があります。
パブリックコードとの一致
Copilot Chatは、確率論的な方法で新しいコードを生成できます。Copilot Chatは、GitHubリポジトリのパブリックコードとの一致をブロックするフィルターを利用する上、トレーニングセット内のコードと一致するコードが生成される可能性も低いですが、Copilot Chat候補には、トレーニングセット内のコードに一致するいくつかのコードスニペットが含まれている場合があります。
参考文献
「GitHub Copilot の概要」
「GitHub Copilot for Individualsについて」
「GitHub Copilot for Business の概要」
「GitHub Copilot の概要」
おわりに
簡単ですが、GitHub Copilotに関するちょっとした情報をまとめました。個人的にはCopilotによる候補の次を表示できることに驚きましたし、実用的だと感じたので積極的に使っていきたいです。なんとなく使っていたGitHub Copilotを他の人に簡単に説明できるくらいにはなったのではと思います。