更新日:
GitHub Copilot Chatの使い方を徹底解説!
GitHub Copilot Chatは、GitHub Copilotにコーディング関連の質問をすることができる機能です。
GitHub Copilot Chatとは?
GitHub Copilot Chatは、GitHubが提供するAIベースのコード補完および支援ツールの一部です。GitHub Copilot自体は、OpenAIのCodexモデルを利用して、プログラミング中のコード補完や提案を行うツールです。Copilot Chatは、これにチャットインターフェースを追加し、ユーザーが自然言語で質問を投げかけ、具体的なコードや解決策を受け取ることができる機能です。
導入方法
GitHub Copilot Chatを使うにはGitHub Copilotを導入している必要があります。こちらの記事を参考に導入してください。
それでは、VSコードにGithub Copilot Chatの拡張機能をインストールします。
VSコードの上にあるナビゲーションメニューの「表示」をクリックすると、メニューの下の方に「拡張機能」と出てくるので、クリックしましょう。
「拡張機能」をクリックすると、以下の画面のようにサイドバーが表示されます。サイドバーの検索窓に「GitHub Copilot Chat」と入力して「インストール」を押しましょう。
インストールが完了すれば、右下に「Sign in to Github」と書かれたボタンが表示されます。こちらのボタンをクリックし、GitHubにサインインしていない方はサインインしましょう。
GitHub Copilot Chatがインストールできれば、左のアクティビティバーに以下の画像のようにチャットアイコンが表示されます。
左のアクティビティバーが表示されていない方は以下の画像のように、「表示 > 外観 > アクティビティバーの位置 > 側面」をクリックし、アクティビティバーを表示するようにしましょう。
チャットアイコンをクリックして、以下の画像のようにチャットボットが表示されれば完了です。
基本的な使い方
それでは、GitHub Copilot Chatの使い方を確認していきましょう。以下のソースコードは有名なFizzBuzzアプリケーションです。以下のコードを使ってGitHub Copilot Chatの使い方を確認していきます。
1
2
3
4
5
6
7
8
9
10
11
12
13
numbers = [*1..100]
numbers.each do |number|
if (number % 3 == 0 && number % 5 == 0)
puts 'fizzbuzz'
elsif number % 3 == 0
puts 'fizz'
elsif number % 5 == 0
puts 'buzz'
else
puts number
end
end
チャット
左側のチャットボットを使用して、開いているファイルに関する質問をしたり、チャットでやり取りを行うことができます。以下の動画のように聞きたいことを投げかけると、少し時間が経ってからGitHub Copilotが答えてくれます。
またコードの提案をしてもらうことができます。
コードの提案をしてもらい、そのコードをファイルに反映させるには通常であればコピペをする必要がありますが、提案されたコードブロックをホバーすると表示されるスパークルをクリックすると、提案されたコードをファイルに反映させることができます。
スパークルをクリックすると提案されたコードがハイライトされた状態になるので、「提案を受け入れる」をクリックするとハイライトされたコードが反映されます。
続けてコードを提案してもらい、同じようにスパークルをクリックすると追加されたコードのみがハイライトされ、自動でファイルに追加することができるので非常に便利な機能です。
スパークルの右にあるアイコンはAIカーソルを挿入するための機能です。
クリックするとファイルにカーソルが当たっている箇所から、提案されたコードを全てペーストしてくれます。
クリックするとこのようにカーソルがある箇所からコードを追加することができます。
一番右のアイコンは提案されたコードをコピーするためのアイコンになります。
インラインチャット
特定のコードに対してそのコード上で質問することが可能です。
以下の動画のように、対象コードをドラッグして選択し、「インラインチャットを開始する」を選択すると、そのコード上でチャットを展開できます。
スラッシュコマンドの使い方
よくある質問内容は「スラッシュコマンド」にまとめられています。スラッシュコマンドを使用して質問すると、GitHub Copilotから適切な回答を受け取りやすくなります。
この章ではよく使うスラッシュコマンドを解説していきます。
/help
GitHub Copilotに関するヘルプを表示するコマンドになります。スラッシュコマンドについての説明などをみたい場合に使用しましょう。
@workspace
@workspace
は、スラッシュコマンドの前に入力するコマンドで、チャットで質問する際に現在のプロジェクト全体を対象としてcopilotに指示を与える機能です。通常の会話では、開いているファイルやその周辺のコンテキストが優先されますが、@workspace
を使用すると、開いているファイルだけでなく、同じリポジトリに含まれる他のファイルやコード全体を考慮して提案や回答を行います。
この機能を使うことで、より文脈に沿ったコード提案を受け取ったり、プロジェクト内の特定の部分に関連する情報を得ることができます。
基本的に、現在開いているワークスペース(つまり、VS Codeなどのエディタで開かれているプロジェクトのルートディレクトリ)が対象となります。
例えば以下のように質問をすると、プロジェクト内の全てのファイルを検証して、提案に必要なファイルを自動で参照し、回答を作成してくれます。
参照されたファイルをクリックすると、ファイルを開くことができます。
また、@workspace
をつけなくても送信ボタン横の矢印をクリックすると表示される、「@workspaceに送信」を選択して送信すると自動で@workspace
がついた状態で質問をしてくれます。
もしくは画像にあるようにcommand
キーを押しながらエンターキーを押してプロンプトを送信しても同じことができます。
ChatGPTのようなAIではこのようにアプリケーション全体を検証して回答してもらうことはできないため、GitHub Copilot Chatを使う上での一番のメリットかもしれません。
/explain
/explain
コマンドは、特定のコードスニペットやファイルの内容について説明してもらうために使用します。コードの内容がわからない時や、どのような動作をするコードなのかを調べたいときに役立つコマンドです。特に、他人が書いたコードや既存のコードベースを読む際に非常に便利です。
たとえば、次のように質問します。
1
/explain このコードは何をしていますか?
その後に、対象のコードを貼り付けます。
1
2
3
4
/explain このJavaScriptコードは何をしていますか?
function sum(a, b) {
return a + b;
}
すると以下のようにコードの解説をしてくれます。
以下のように説明してもらいたいコードをハイライトして/explain
コマンドだけでも使うことができます。
このようにハイライトし、/explain
コマンドを実行するだけで解説をしてくれるので、非常に便利なコマンドです。/explain
コマンドの前に@workspace
をつけてからコマンドを打つと、プロジェクト全体を検証した上で解説をしてもらえます。
/tests
/tests
コマンドは、特定のコードに対してテストコードを自動生成するために使用されます。この機能は、単体テストや統合テストなどを簡単に作成できるため、開発者が手動でテストを記述する手間を省き、コードの品質を維持するのに非常に役立ちます。
以下のsum
メソッドに対するRSpec
形式のテストを生成する例です。
1
2
3
4
/tests このsumメソッドに対するRSpecのテストを書いてください。
def sum(a, b)
a + b
end
すると以下のように自動でテストコードを作成してくれます。
以下のように、テストコードを作成したいコードをハイライトし、/tests
コマンドだけでも使用することができます。
作成が面倒なテストコードもこのコマンドのみでCopilotが作成してくれるので、開発効率をかなり向上させることができます。
/fix
/fix
コマンドは、コード内のエラーやバグを自動的に検出し、それに基づいて修正を提案してくれます。
/fix
コマンドを使用する際には、通常はプロンプトを追加する必要はありません。/fix
コマンド自体が、コード内のエラーや改善点を検出して修正案を提案するために十分な指示になります。
1
/fix
ただし、特定の修正を求めたい場合や、修正の方向性を指示したい場合には、/fix
コマンドの後にプロンプトを追加することも可能です。たとえば、次のように使うことができます。
1
2
3
4
# Rubyのコード例
def divide(a, b)
a / b
end
1
/fix ゼロ除算エラーを処理してください
この場合、/fix
コマンドはゼロ除算エラーに特化した修正案を提示してくれます。
しかし、特に指示を出さなくても、/fix
コマンドは基本的なエラーや改善点を自動的に検出して処理します。シンプルに使いたい場合には、プロンプトを省略しても問題ありません。
また、以下のようにエラーが発生している箇所をハイライトして、fix
コマンドのみで使用することもできます。
/new
/new
コマンドは、新しいコードの生成や既存コードのリファクタリングをしてくれる機能です。このコマンドを使用すると、指定した要件に基づいて、全く新しいコードスニペットを提案したり、既存のコードを改善したりすることができます。
以下のような計算クラスを例に考えてみましょう。
1
2
class Calculator
end
/new
コマンドを使い、Calculator
クラスに2つの数値を足した結果を返すメソッドを作ってみます。
1
/new Calculatorクラスに2つの数値を加算するメソッドを追加してください
このように指定した指示通りに自動でコードを生成してくれます。
また作成したコードに対してリファクタリングを行うこともできます。
1
/new addメソッドに引数が整数であることをチェックする機能を追加してください
このように作成した機能に対してリファクタリングすることができます。
GitHub Copilotは一度の提案で100点満点のコードを出すことは少ないです。最初は70点ぐらいのコードが提案されることが多いので、提案されたコードを何度も見直し、深掘りしながらCopilotと一緒に100点満点のコードを目指して改善していくことが大切です。
/doc
/doc
コマンドは、ドキュメントを生成するための機能です。このコマンドを使用すると、コードに関するコメントやドキュメントを自動的に生成することができます。特に、メソッドやクラス、関数の説明や、使用方法を詳細に記述したいときに便利です。
メソッドに対してドキュメントを作成する例を見てみましょう。
1
2
3
4
5
class Calculator
def add(a, b)
a + b
end
end
/doc
コマンドを使い、add
メソッドにドキュメントを作成してもらいます。
1
/doc addメソッドに関するドキュメントを追加してください
この例の場合、以下のようにドキュメントを自動で作成してくれます。
このようにadd
メソッドに関するドキュメントを作成してくれました。
ドキュメント内の@param
は引数に関するドキュメントで型や引数の説明をしています。
@return
はメソッドの返り値のドキュメントで、型や返ってくる内容の説明です。
/clear
/clear
コマンドはCopilot Chatとのやり取りを初期化するためのものです。チャットの数が多くなり、煩わしく感じたときに実行しましょう。
この記事のまとめ
- GitHub Copilot Chatはコーディング関連の質問をすることができる機能です。
- スラッシュコマンドを使うことで適切な回答を受け取りやすくなります。
- コードの生成やバグ修正も自動で行ってくれるため、開発時間の短縮ができます。