GitHub Copilotを使ってみた ①

# はじめに

昨今、私たちの身の回りではAI技術がますます活用されるようになっています。
例えば、スマート家電や音声アシスタント、自動運転車など、私たちの生活に密接に関わる分野でAIが活躍しています。
これらの技術は、私たちの生活をより便利で快適にしており、AIと私たちの生活はもはや切り離せないものになりつつあると言えるでしょう。

様々なAIサービスの中で私は「GitHub Copilot」について紹介したいと思います。



# GitHub Copilotとは
GitHub CopilotはAIを活用したペアプログラミングツールで、開発者にコードの提案を行い、効率的な開発を支援します。

このツールは、OpenAIの技術を基にしており、ユーザーが入力したコードやコメントに基づいて、次に書くべきコードを予測し、リアルタイムで提案を行います。これにより、開発者は繰り返し作業を減らし、より迅速にコードを書くことができます。

https://docs.github.com/ja/copilot/about-github-copilot


# GitHub Copilotのライセンス、料金

GitHub Copilotには、4つの料金プランがあります。それぞれのプランは、利用するユーザーのニーズに応じて異なります。

・GitHub Copilot Free：無料
・GitHub Copilot Pro：個人開発者向け
・GitHub Copilot Business ：中規模組織向け
・GitHub Copilot Enterprise：大企業向け

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3163879/86f4ffc2-266f-b3af-d840-d8252b9cddd6.png)

各プランの詳細については、以下のリンクから確認していただければと思います。

https://github.com/features/copilot/plans?cft=copilot_li.features_copilot

# サポートされているIDE
現在、GitHub Copilotは以下の6つのIDEで使用することができます。

・Visual Studio Code
・Visual Studio
・Xcode
・JetBrains IDEs
・Vim/Neovim
・Azure Data Studio

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3163879/5470f666-f79d-6072-7576-5f3dfe8b3480.png)


# データの扱いについて
GitHub Copilotを使うときに気になるのが、セキュリティやデータの取り扱いだと思います。ここではその点について簡単に説明します。

#### ・プロンプトはAIモデルのみ送信され、リアルタイムで提案が生成される。
GitHub Copilotでは、入力したプロンプトはAIモデルに送信されて、リアルタイムで提案を生成しますが、このプロンプトが外部に送られたり、第三者に使われたりすることはありません。

プロンプトはAIモデル内でコード補完や提案を作成するためだけに使われ、他の目的には使用されません。

#### ・ユーザのデータがモデルの強化に使用されない。
GitHub Copilotは、モデルを改善するためにユーザーのデータを使うことはありません。また、AIモデルの学習に使われるコードは、すべて公開リポジトリに限られています。

もし社内のプロジェクトでGitHubを使用している場合、リポジトリは非公開に設定されることが多いと思われますが、社内のプロジェクトのデータが外部で使用されたり、AIモデルの学習に使われることはありません。

#### ・脆弱なパターンを検出する。
GitHub Copilotは、ユーザーに提案するコードがセキュリティ上の脆弱性を含んでいないかをチェックします。具体的には、コード内の一般的なセキュリティリスクや脆弱なパターンを検出し、コーディングパターンをブロックします。

これにより、開発者はセキュリティリスクを早期に発見し、対策を講じることができます。

# 実際にGitHub Copilotを使ってみた
Visual Studio CodeでGitHub Copilotを使用する環境を整えるために、以下2つの拡張機能をインストールします。

・GitHub Copilot
・GitHub Copilot Chat

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3163879/dd9d97d4-32a9-9f75-f554-50055fa7f06b.png)

続いて、Visual Studio Codeの画面上部に表示されているかわいいCopilotアイコンを押下する事により、Copilotを起動する事ができます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3163879/87972c9a-a5fc-4d13-b3bb-d149db901a5b.png)

#### ・サジェスト
今回は、例としてHTMLファイルを準備しました。

h2タグに「好きな食べ物」と入力してEnterキーを押すと、GitHub Copilotが次に書くべきコードを予測し、リアルタイムでコードを提案してくれます。

その提案を受け入れると、Copilotが自動的にコードを入力してくれ、開発者は手動で記入する手間を省く事ができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3163879/2c94dc2d-ac6e-7f5d-c958-d57c975e5907.png)

また、GitHub Copilotは、コードの提案を複数提示してくれるため、開発者はその中から最適なコードを選ぶことができます。

例えば、特定の関数や処理を実装する際に、いくつかの異なるアプローチを提案してくれることがあります。

この場合、「Ctrl + Enter」を押すことで、複数の提案を一覧で確認することができ、気に入った提案を選んで採用することができます。

これにより、より柔軟にコードのスタイルや実装方法を選ぶことができ、効率的に開発を進めることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3163879/aa5e1b40-0114-378b-f641-318aacbfef83.png)


#### ・GitHub Copilot Chat
Visual Studio Codeの右下には、GitHub Copilot Chatの入力スペースがあります。
ここに「フッターを作成してください」と入力して送信すると、Copilotが現在開いているファイルを読み込み、そのコンテキストに基づいた最適なコードを生成してくれます。

例えば、ユーザーが指定した要件に合わせて、HTMLやCSS、JavaScriptなど、複数の言語に対応したコードを提案してくれるため、簡単に実装を進めることができます。

さらに、この機能では、生成されたコードに対してフィードバックを与えたり、修正をお願いすることもできるため、より細かい調整が可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3163879/dfb80261-7fcf-5893-68f2-6b07f3d78d55.png)

#### ・Copilotで編集する
先ほどと同様に、GitHub Copilotに「フッターを作成してください」と入力し、送信すると、Copilotがコード上で最適なコードを提案してくれます。

Copilotは現在開いているファイルのコンテキストを理解した上で、必要なコードや最適な処理を予測し、リアルタイムでコード補完を行います。
このため、ユーザーは何を次に書くべきかを迷うことなく、スムーズに開発を進めることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3163879/8d277ea6-7663-415b-7529-be947d407a92.png)


# 感想

#### ・セキュリティ面が気になっていたが、想像以上にデータの扱いはセキュアであった。
GitHub Copilotを使用するにあたって、セキュリティ面が気になっていましたが、実際に調べてみると、データの取り扱いは想像以上にセキュアであることが分かりました。

GitHub Copilotは、ユーザーのコードやプロンプトを外部に送信したり、無断で学習に利用することはなく、すべてのデータはプライバシーに配慮して扱われています。

さらに、ユーザーの個別のプロジェクトデータや非公開リポジトリの内容も、学習データとして使用されることはないため、安心して利用できるのではないかと思いました。

#### ・若手エンジニアの技術向上への懸念
GitHub Copilotを使用することにより、若手エンジニアの技術向上に対する懸念もあるかもしれませんが、これは意識の問題だと考えています。

OpenAIが登場する前、エンジニアは実装方法を調べ、使えそうなコードを選び、それを理解しながら実装を進めていたと思います。

GitHub Copilotのようなツールが登場したことで、「調べる」という手間は削減されましたが、実際にコードを書く際には、生成されたコードをただ反映させるのではなく、理解して書くという意識のもとで実装を進めていけば、従来のやり方と変わらないと思っています。

# 最後に
GitHub Copilotには、ここでは紹介しきれなかった機能がまだまだありますので、後日、次の記事でそれについて書こうと思います。

最後までお読みいただき、ありがとうございました。
この記事が少しでもお役に立てたなら、嬉しく思います。