GitHub Copilot の導入と便利な使い方: コード自動生成のステップバイステップガイド


## イントロダクション

こんにちは！エンジニアのM.Y.です！！

数カ月前からGitHub Copilotを使い始めましたが、もう既にGitHub Copilot無しでのコーディング作業が考えられなくなっています。。。

GitHub Copilotを実際に使用して開発を行っている筆者が、GitHub Copilotの便利な使い方を、
GitHub Copilotとは？から簡潔に分かりやすく紹介させて頂きます！


## 1. GitHub Copilot とは？

GitHub Copilot は、プログラミング作業を効率化するためのツールです。

主な機能は以下の通りです:
1. コードの自動補完: 入力した文字列に基づいて、続きの文字列を予測し、候補を提案します。前後のコードや開いているファイルからプログラムの意図を理解して適切な提案を行います。
2. コードの生成: 入力したコードやコメントから、次に必要とされるコードを新しく生成します。新機能の追加などで時間節約に役立ちます。
3. コードのレビュー: 入力したコードを分析し、問題解決案や改善案を提案します。GitHub Copilotの指摘を受けてコード品質を向上させることができます。

2023年12月にGitHub Copilot Chat が一般提供され、すべてのGitHub Copilotユーザーが、追加料金なしで利用できるようになりました。

GitHub Copilot Chat により、会話をする形式でコードの生成やコードのレビューを行うことが出来ます。

GitHub CopilotやGitHub Copilot Chatは統合開発環境（IDE）のプラグインとして提供されており、統合開発環境内でシームレスに利用することが出来ます。


## 2. GitHub Copilot の導入方法

GitHub Copilot は以下の手順で簡単に導入することが出来ます。


### 2.1. GitHubアカウントの作成

まず、GitHubアカウントを作成しましょう。既に持っている方は飛ばして下さい。

GitHubアカウントの作成方法は[こちら](https://docs.github.com/ja/get-started/start-your-journey/creating-an-account-on-github)

### 2.2. GitHub Copilotの利用登録

[こちら](https://github.com/features/copilot/plans)からプランを選んで利用登録を行ってください

「Copilot Individual」が個人向けで、2024/02/28現在は月額10ドルで利用可能です。（1カ月の無料トライアル

「Copilot Business」や「Copilot Enterprise」は、全体のポリシーを設定できる等、企業向けのプランになっています。

### 2.3. Visual Studio CodeにGitHub Copilot 拡張機能をインストール


Visual Studio Code にGitHub Copilot 拡張機能をインストールする方法は[こちら](https://docs.github.com/ja/copilot/quickstart#visual-studio-code-%E7%94%A8%E3%81%AE-github-copilot-%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B)

簡単に説明すると、拡張機能「GitHub Copilot」と「GitHub Copilot Chat」をインストールして、GitHub Copilotが利用可能なGitHubアカウントでログインすれば設定は完了です。

## 3. GitHub Copilot の便利な使い方

### 3.1. コードの自動補完

GitHub Copilotで最も基本的な機能です。

GitHub Copilotを導入すると画像のように候補が提案されるようになります。

![image-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683502/caf8bb0e-8d19-fda6-5492-71037897db6d.png)

Tabを押すと、提案された候補を取り込むことが出来ます。

![image-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683502/2f6bda6c-3c6b-42ae-bc6b-31c9b66c890d.png)


ポイント：コメント文を詳しく書いてあげると、欲しいコードを提案してくれる可能性が上がります。

### 3.2. 関数やメソッドの生成

3.1.の延長ですが、コメントからコードを作成せることが出来ます。

![image-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683502/3dd9436b-3316-5662-b6a2-08f275a30afe.png)


ポイント：コードは直前のコメントだけでなく、ファイル内のコードや開いている他ファイルも参考にして作成されます。そのため、「既に存在するコードと似たような書き方をする。」「完成しているクラスに機能を追加する。」等は得意です。また、「汎用的なロジックの生成」も得意です。

ポイント：開いている他ファイルも参考にされるので、作成したいコードに近い内容があるファイルを開いておく、関係ないファイルは閉じておく、とするとより欲しいコードを提案してくれる可能性が上がります。

### 3.3. コードの解説

コードの概要を把握するのにとても役立ちます。

説明させたいコードを選択して、右クリックから「これを説明する」をクリックします。

![image-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683502/e1c4c39b-2ff7-9f42-f50d-3a6fda368cf5.png)
![image-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683502/dbea6000-f744-52a3-d7c6-cb0746bbb15f.png)

### 3.4. コードを指定してchatで指示

筆者がよく使うプロンプトは以下です。
- リファクタリングして
- {言語のバージョン}で推奨されている書き方にして
- セキュリティ面をチェックして

対象コードを指定する方法として、対象コードを選択して、chatに`@workspace`と書く方法があります。

![image-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683502/5f4e0d76-01bd-9603-61ab-3755b26e8d87.png)

見栄えが良いので画像では`@workspace`を使っていますが、
筆者は対象コードをchatにコピペすることが多いです。（一番早いので）

## 4. GitHub の最新情報や今後の展望

2024/03/04にGitHub Copilot Enterpriseの一般提供が開始されました。
GitHub Copilot Enterpriseでは、GitHub Copilotを組織毎にカスタマイズすることができます。
組織用にカスタマイズして、運用ルールも決めてあげれば、開発効率はとんでもなく上がりそうですね。

https://github.blog/jp/2024-03-04-github-copilot-enterprise-is-now-generally-available/

GitHubはGitHub Copilot Workspaceを2024年に提供すると発表しており、
GitHub Copilot Workspaceでは、コーディングはほぼすべて自動的に実行させるそうです。

https://githubnext.com/projects/copilot-workspace/

今後、開発効率が上がると同時に、コーディング以外のスキルがより求められるようになるのは確実かと思います。最新の技術に触れていくと同時にコーディング以外のスキルにも意識を向けていきたいですね！

## まとめ

GitHub Copilotの便利な使い方を紹介させて頂きました！

もうGitHub Copilotなしの開発はしたくないくらい、便利なサービスです。

便利な反面、「理解していなくてもコーディング出来る」といった怖い面もあります。

あくまでCopilot（副操縦士）なので、上手に利用して、開発を効率的に進めていきたいですね！

今後、GitHub Copilot Workspace等が提供されれば、コーディングどころかシステムの構築・運用まで何となくで出来るようになるかと思います。

そうなった際、セキュリティに対する理解はより大切になってくるかと思います。
次回は、セキュリティについての記事を予定しています！お楽しみに！