GitHub Copilotを健全に使い倒すための心得

## 時代はAIじゃ！

私は普段コーディングをするときにGitHub Copilotを多用しています。中にはAIツールをコーディングに導入することに抵抗がある人も多いかもしれませんが、うまく付き合えば彼女よりも強力な存在になること間違いありません

今回はコード補完だけじゃないGitHub Copilotの便利機能を紹介します。

## 心得

GitHub Copilotを使う時の個人的な心得を書いておきます。

一、部分部分に留めること
一、生成されたコードを理解すること

ここで一つ徳川家康の名言を。**「及ばざるは過ぎたるより勝れり」** 

:::note info
**濫用するくらいなら使わない方がまし**のマインドでいきましょう。
:::

## コード補完

導入で言ったことを忘れたかのような章題ですが、一番はやはりコード補完です。

Twitterのバズり例でよくある「〇〇のコードを生成して」ってChatGPTに投げて100行ぐらいばばーっと帰ってくるのをコピペして使うのは、**見た目のインパクトはすごいですがあまりやるべきではありません。** ブラックボックス化してしまうので、後々の保守運用を考えたらデメリットしかないことに気づくでしょう。

個人的にGitHub Copilotに任せると便利なのは特に

- for文
- switch文
- コメント挿入

です。例を追いながら見ていきましょう。

### for文

```cpp:
int data[X][Y];
```

で定義された配列があったとして、これらの要素全ての和を求めたい時にいちいちfor文を書くのはだるいですが、GitHub Copilotを使うとこのスピード感で書けます。（タイプミスしてて草）

![%E7%94%BB%E9%9D%A2%E5%8F%8E%E9%8C%B2%202023-12-19%2013.25.34.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628782/6b8a96cb-d18f-5c31-ec37-6d8f7e56461d.gif)

それはそうって感じのコードですが、自分で書くと時間がかかるのでうまく分担できた例です。GitHub Copilotは**誰が書いてもほぼ同じコードを生成させる**のに向いています。

### switch文

switch caseをそれぞれ書くのがめんどくさいときにも便利です。テンプレとして活用していきましょう！！

![%E7%94%BB%E9%9D%A2%E5%8F%8E%E9%8C%B2%202023-12-19%2013.31.48.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628782/fdd2c04c-8bae-93eb-d43d-50085297d945.gif)

### コメント

コメントを入れたいときにも便利です。//を打った後に少し書き始めれば、残りを保管してくれます。複数人でプロジェクトを運用するときにコメントを書くと思いますが、日本語の文章ってほとんど助詞や助動詞なのでその辺を全部任せられるのはかなりの時短になります。

![%E7%94%BB%E9%9D%A2%E5%8F%8E%E9%8C%B2%202023-12-19%2013.34.35.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628782/419e6f5c-efb7-aae9-9d74-0db6d4678646.gif)

:::note info
GitHub Copilotにはソートやただのループなどの **「誰が書いても大体同じ」** コードを割り振るように使うとブラックボックス化せずに使えると思います
:::

誰でもできることはCopilotにやらせて、独創的なところに自分のリソースを使えるようにしましょう！！コメントとかを入れながらうまく誘導してあげると結構ノった回答を提示してくれるので、うまくいけば全コードの3,4割くらいは補完できる印象です。

## バグ修正

```cpp
int addAandB(int a, int b) {
    return a - b;
}
```

こちらのコードをご覧ください。これは流石にあからさまですが、関数がaddなのに減算されてるのはおかしいですね。

あほみたいな例ですが、人間は意外とこのようなしょうもないミスをやらかします。=と==とか、配列外を参照してしまっていたり等、**気づけば簡単なのに気づかずに沼る**ことって結構ありますよね。こういうときにもGitHub Copilotが役に立ってくれます！！

![%E7%94%BB%E9%9D%A2%E5%8F%8E%E9%8C%B2%202023-12-19%2013.45.01.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628782/8897414b-5f73-d175-3794-e9fa1f936ce9.gif)

凡ミスと戦うときにかなり強力な味方になってくれると思います。

## Chat

最近出たばかりのGitHub Copilot Chatも紹介します。

![スクリーンショット 2023-12-19 13.51.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628782/1c964e59-6397-fd88-e847-d30a6956bfbc.png)

このようにVSCode上でCopilotに質問できるようになるので、簡単な質問だったらブラウザを開いて検索しなくて済みます。最近技術系にもアフィリエイト汚染が結構キテいて辛いので、パパッと情報にアクセスできるのは本当に便利です。

他にも自分はよく **「これ理解できる？」** という質問を投げています。GitHub Copilotが自分のコードの意図と違う解釈をしてきたら、他の人が読んだときに理解できない可能性が高いので、一つの指標として活用しています。

![スクリーンショット 2023-12-19 13.57.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628782/a49bf8cb-f812-f581-fd1b-ac5b8b0846d7.png)

プログラミングをするときは基本1人で画面とキーボードを操作しますが、そのときに客観的な視点でコードを見れるようになるのはとても大きなメリットだと思います。

## まとめ

- GitHub Copilotは雑用をやらせるとめちゃくちゃ便利
- 面倒なことはAIに任せて、自分は創造的な作業に取り組もう

今回使った拡張機能はこちらです。一緒に幸せになりましょう！！！

Happy VSCoding!!!

https://marketplace.visualstudio.com/items?itemName=GitHub.copilot

https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat