サブライムコンサルティングの大塚です。
今回はGitHub Copilotの概要についてまとめてみました。
GitHub Copilotとは
GitHub Copilotは、AIを使用してプログラミングを支援してくれるツールです。自然言語で指示を出して、ソースコードを提案してくれます。
GitHub CopilotはChatGPT等で有名なOpenAIによって作成された生成的AIモデルCodex
を使用しています。
Codex
はGitHubをはじめ一般に公開されているソースコードや自然言語テキストを入力して事前に学習されたコーディングに特化したモデルです。
GitHub Copilotはクラウド上にあるCodex
に対してユーザーから受け取った自然言語による指示を送信し、指示に従ったソースコードを受信して、ユーザーに提案します。
ただし、Codex
はGPT-3
をベースとしており、少し古いモデルです。
Codex
の公式サイトでもDeprecated(非推奨)
の扱いとなっています。
2023年3月にGitHub社から発表されたGitHub Copilot X
では2023年7月時点でOpenAIによる最新の大規模言語モデル(LLM)であるGPT-4
がベースとなっており、精度の向上も期待しています。
サポートされる開発環境
2023年7月時点において、公式サイトを確認すると以下の開発環境がサポートされています。
各開発環境用のプラグインが用意されており、それをインストールして、GitHub Copilotの機能を使用します。
- JetBrains IDEs
- Vim/Neovim
- Visual Studio
- Visual Studio Code
コメントによる指示
GitHub Copilotでは各言語のソースコードのコメントに自然言語で指示を記述すると、指示に従ったソースコードを提案してくれます。
以下はJetBrains社のIntelliJにGitHub Copilotプラグインをインストールして、Javaでソースコードを提案してもらう簡単な例となります。
基本的には、コメントで指示を記述して、Enterキーを押してしばらくするとソースコードが提案されます。
提案されたソースコードを採用する場合はTab
キーを押して確定します。
想定したものと異なる場合は代替候補を表示することもできます。WindowsであればAlt
+[
もしくはAlt
+]
、MacであればOption
+[
もしくはOption
+]
を押すことで代替候補のソースコードの表示することができます。
別タブで開いているソースコード
GitHub Copilotの大きな特徴として、IDEで別タブで開いているソースコードもインプットとすることが出来ます。
別タブでソースコードをインプットにする簡単な例を試してみます。
別タブに何を開かない場合
以下の動画はシステム日付を取得して文字列として返却するメソッドをGitHub Copilotに提案してもらった例となります。
旧来のjava.util.Date
を使用したソースコードを提案してくれました。
別タブで参考となるソースコードを開いた場合
旧来のものではなく、Java8から導入されたタイムゾーン付きの日時を扱うjava.time.ZonedDateTime
を使用したい場合を想定します。
別タブでjava.time.ZonedDateTime
を使用したソースコードを開いた状態でGitHub Copilotに同様の指示を出すとZonedDateTimeを使用したソースコードを提案してくれます。
なお、上記のような単純な例であれば、コメントで以下の通り追加の指示を与えれば、想定通りのソースコードを提案してくれることも多々あります。
// システム日付を文字列として返却するメソッド
// java.time.ZonedDateTimeを使用
参考情報
GitHub Copilotの情報はまだまだ少なく、日本語の書籍は2023年7月時点で一冊も出版されていません。英語の書籍は出版されていますが、かなり数が少ないです。
以下はGitHub Copilotを使い始めるにあたり参考となるサイトです。
GitHub Copilot に関するドキュメント
公式サイトの日本語版です。
必要最低限の情報が記載されており、一通り目を通すことをお勧めします。
GitHub Copilot documentation
公式サイトの英語版です。
AIネイティブ開発ガイド
上記サイトの冒頭の記述の引用です。
このドキュメントでは、GitHub Copilot などをつかった
AI ネイティブ開発におけるベストプラクティスを特定の形式でまとめて、
簡単に理解、評価、そしてあなたの状況に適用できるようにしています。
具体的な使い方等は記載されていませんが、考え方的な部分でとても参考になる情報がまとめられています。
それほどボリュームもないので、こちらも一通り目を通されることをお勧めします。
では、本記事は以上となります。