はじめに
コードの補完や提案によって、コーディングをより迅速にしてくれるGitHub Copilot
は1年前からあり、実際にご利用された方も多いと思います。ですが、今から約3か月前に発表されたGitHub Copilot chat
は、まだ使ったことがないという方も多いのではないでしょうか。そこで、本記事ではCopilot chat
が含まれるGitHub Copilot X
の説明や、Copilot chat
の始め方と使い方をなるべく体系的にまとめました。これからCopilot chat
を始める方の参考になれば幸いです。
環境
- Windows11
- バージョン:10.0.22621
- Python
- バージョン:3.11.3
- Visual Studio Code
- バージョン:1.79.0
VSCodeの開発版であるVisual Studio Code InsidersでないとCopilot chat
が利用できないという情報がありましたが、通常のVSCodeでも使用できることを確認したため、本記事ではInsiders版は使用していません。
準備事項
前提として、GitHubアカウントを持ち、Copilotにも登録済みであるとします。まだ登録できていない方は、以下の記事を参考にしてCopilotの登録を済ませてください。
GitHub Copilot Xとは
2023/3/22に投稿された以下のGitHubの公式ブログには、GitHub Copilot X
について以下のような記述が書かれていました。
Our R&D team at GitHub Next has been working to move past the editor and evolve GitHub Copilot into a readily accessible AI assistant throughout the entire development lifecycle. This is GitHub Copilot X—our vision for the future of AI-powered software development. We are not only adopting OpenAI’s new GPT-4 model, but are introducing chat and voice for Copilot, and bringing Copilot to pull requests, the command line, and docs to answer questions on your projects.
(日本語訳)
GitHub Nextの研究開発チームは、エディターを超えて、GitHub Copilotを開発ライフサイクル全体を通してすぐに利用できるAIアシスタントに進化させるために取り組んできました。これがGitHub Copilot Xであり、AIを活用したソフトウェア開発の未来に対する我々のビジョンです。OpenAIの新しいGPT-4モデルを採用するだけでなく、Copilotにチャットと音声を導入し、プルリクエスト、コマンドライン、ドキュメントにCopilotを導入して、あなたのプロジェクトに関する質問に答えていきます。
つまりGitHub Copilot X
とは、Copilot Voice
、Copilot for pull requests
、Copilot for CLI
、Copilot docs
などの製品を含んだ、GPT-4によるGitHubのAIアシスタント製品群のことであると言えます。
GitHub Copilot XとGitHub Nextの関係性
GitHub Copilot X
と近い製品群として、GitHub Next
というものがあります。GitHub Next
は、GitHub Copilot
を含んだ、GitHubによる次世代の開発体験を実現するためのプロジェクト群の総称であり、Copilotの他にもFlat Data
やVisualizing a Codebase
となどの数多くのツールが含まれています。
https://githubnext.com/
GitHub Copilot chatとは
GitHub Copilot chat
とは、GitHub Copilot X
の一部であり、AI技術を活用したコード補完ツールです。Copilot chat
の機能、使い方、制限事項、上手な使用法について、GitHub Docsで載せられていたことを次にまとめます。
Copilot chatの機能
- 入力処理
- 言語モデル解析
- レスポンス生成
- 出力フォーマット
Copilot chatの使い方
- ユニットテストケースの作成
- コードの説明
- コード修正の提案
- コーディングの質問に対する回答
Copilot chatの制限事項
- 範囲の限定性
- バイアスの可能性
- セキュリティリスク
- 公開されているコードとの一致
- 不正確なコード
- 非コード化トピックに対する不正確な回答
Copilot chatの上手な使用法
- トピックに沿ったプロンプトを使用
- 安全なコーディングとコードレビューを慣行
- フィードバックを提供
- 最新情報を入手
GitHub Copilot chatの申し込み
まずはCopilot chat
の申し込みを始めていきます。2023年6月現在、Copilot chat
を使用するためには申請が必要となっています。申請はこちらのwaitlistに登録することでできます。
GitHub Copilot
のサブスクリプションが有効化されていると、「Join the waitlist」のボタンがある画面が表示されます。Copilot chat
をどこで使う予定かを尋ねられたため、ここではVisual Studio Code
をチェックしました。
「Join the waitlist」を押すと、ベータ版のCopilot chat
が使えるようになったよという画面が表示されました。
VSCodeでの拡張機能のインストール
Copilot chat
の登録が終わったら、次は開発環境に拡張機能のインストールをしていきましょう。GitHub Copilot
はAndroid Studio
やJetBarins
のような様々なIDEと互換性がありますが、本記事ではVisual Studio Code
の拡張機能を使ってGitHub Copilot
を使っていきます。
公式ドキュメントのクイックスタートを参考にしたい方は、以下のリンクをご覧ください。
必要な拡張機能のインストール
今回は、以下のExtensionsをインストールします。
-
GitHub Copilot
- AI駆動のコード補完ツール
- OpenAIのGPT-3.5 Turboを利用
-
(GitHub Copilot Nightly)
-
GitHub Copilot
の最新バージョン
-
-
GitHub Copilot Chat
- AIがコードに関する質問を回答
- OpenAIのGPT-4を利用
GitHub Copilot
のインストール
まずは、Visual Studio Code
のExtensionsで"GitHub Copilot"と入力してGitHub Copilot
をインストールしましょう。
GitHub Copilot
は安定版なので、最新版を使いたい人は、GitHub Copilot Nightly
を代わりにインストールしましょう。
インストール後、「Sign in to GitHub」ダイアログが表示されるので、GitHubにサインインしましょう。
GitHub Copilot chat
のインストール
GitHub Copilot chat
の拡張機能もインストールしましょう。
Copiot chatの使い方
VSCodeに拡張機能をインストールしたら、ここからは実際にCopilot chat
を使っていきましょう。Copilot chat
の使用方法は以下の2種類があります。
- コード内での使用
- チャット内での使用
コード内での使用方法
1つ目に、コード内で使用する方法が挙げられます。Copilotに質問したい該当箇所のソースコードを選択して右クリックを押した後、Copilot
>Start Code Chat
を選択します。
選択するとコード内で質問ダイアログが表示されるので、Copilotに質問を問いかけることができます。
チャット内での使用方法
2つ目に、チャット内で使用する方法が挙げられます。GitHub Copilot chat
の拡張機能をインストールした後は、VSCodeのアクティビティバーに追加されているチャットのアイコン(次のスクリーンショットの赤い四角)、をクリックします。
クリックすると、サイドバーにGitHub Copilot
のチャット画面が表示されます。サイドバーの下部にダイアログが表示されるので、コード内の場合と同様にCopilotに質問を問いかけることができます。
Copilot chatのコマンド一覧と実行例
Copilot chat
には、いくつかのコマンドが用意されています。ここからはコマンドの説明と実行例を紹介していきます。
/vscode
VS Codeに関する質問ができます。
実行例
/tests
選択されたコードのユニットテストを生成してくれます。
x = "Hello, world!"
print(x)
実行例
-
test_x_is_string
: 変数x
が文字列であることをテスト -
test_x_is_hello_world
: 変数x
が "Hello, world!"という文字列と等しいかどうかをテスト -
test_print_output
: 関数print_x
が文字列"Hello, world!"を標準出力に出力することをテスト
/fix
選択されたコードの問題点の修正を提案してくれます。
x = "Hello, world!"
print(y)
上のサンプルコードは、print(x)とすべきところをprint(y)としているため、間違いを含んだコードになります。
実行例①
「yが定義されていません。修正するためにyとxで置き換えてください」とコードの問題点と解決策を正確に指摘してくれました。また、正しいコードも出力してくれました。
実行例②
/fix
の後に引数として渡しても、同様の回答を得ることができました。
/explain
選択されたコードがどのように動作するかを説明してくれます。
x = "Hello, world!"
print(x)
実行例①
実行例②
/explain
コマンドの後に引数としてコードを渡した場合でもコードの解説をしてくれました。可読性を高めるために、コメントを追加したコードも出力してくれました。
/ext
VS Code拡張開発について説明してくれます。
実行例
GitHub Copilot Nightly
の概要とインストール方法を説明してくれました。
/help
GitHub Copilotに関する一般的なヘルプを表示してくれます。
実行例
Copilot chat
の概要や、使用可能なコマンドなどを出力してくれました。
Copilot chatの日本語による実行例
ここまでは、Copilot chat
は英語で回答してくれましたが、英語が苦手な方にとっては読むのが大変です。質問の言語と同じ言語で回答してくれる特性を利用して、日本語での質問をしてみることにしましょう。
コマンドの代用
コマンドを使用せず、日本語で質問しても同様の回答が得られるかを実験しました。以下の実験より、Copilot chat
で用意されているコマンドを敢えて使用する必要はないと感じました。
/explain
の代わり
/fix
の代わり
GitHub Copilot chatを使った所感
- コマンドを使う必要はなさそう
- 日本語の精度は高い
- 質問の自由度は高く、回答も正確
おわりに
本記事では、GitHub Copilot X
に含まれるGitHub Copilot chat
の始め方を使い方をまとめました。実際にCopilot chat
を使ってみた感想として、VSCodeの一画面でリサーチから、コーディング、テストまで完結するCopilot chat
は慣れると生産性を大幅に高めてくれる可能性があると感じました。可能な限り公式ドキュメントの内容からの情報をまとめていますが、間違い等があれば教えていただけると幸いです。