GitHub Copilot Chat 使ってみるよ！

はこです。こんにちわ。
GitHub Copilot Chatのウェイトリストがとうとう解禁されました！ 長かった！

ここでは現状の GitHub Copilot (Copilot無印) とどう変わったのか、見ていきたいと思います。

### GitHub Copilot Chat とは？

[GitHub Copilot X](https://github.com/features/preview/copilot-x) として、 [2023年3月22日に発表された](https://www.publickey1.jp/blog/23/github_copilot_xchatgpt-4ai.html)次世代Copilotの目玉機能の一つ。

曰く、「Chatの体験が試したらCopilot無印よりもすごい良かった」「あとGPT-4にした」というようなことを当時のビデオで言っていた記憶・・・。

現在は登録制ベータです。まだの人は [waitlist](https://github.com/github-copilot/chat_waitlist_signup/join) に登録してください！
(私は 5/14にメールが来ていたようです)




### 環境情報

- [Visual Studio Code Insider](https://code.visualstudio.com/insiders/)
    - 2023/5/16 現在、Insider版でしか動作しません。
    - バージョン: 1.79.0-insider (Universal)でした
- Github Copilot の拡張
    - スクショは３つ導入してるが、上２つでOK
    - 本体
    - GitHub Copilot Chat  
    - GitHub Copilot Voice (今回はスキップ。これはまた[別のwaitlist](https://githubnext.com/projects/copilot-voice/)...)

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/d3d9fd6a-64dc-38c2-045d-7a88b96d47ca.png" width=300>



インストール後、右下に「Sing in to GitHub」 ダイアログが出てきます。

<img width=400 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/cf87d297-841b-23a4-808c-427aa47d960b.png"> 
(スクショは失敗してログイン中のもの)


うまく出ない場合は、 Cmd+P から `> Reload` って打つ。
![Screenshot_2023-05-16 10-31-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/10a937c7-0708-c799-f769-a2be7a9c242a.png)



### インストール完了したら

右クリックに Copilot が出てきます。

![Screenshot_2023-05-16 10-33-23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/77e4ab4e-307a-ba47-24d0-2a1aaf3df216.png)

- `セッションの開始` 
    - 目玉機能
- `Explain This`
    - セッションの開始 -> `/explain` コマンド相当
    - つまり右クリックからのショートカット。ただし英語でしか説明を生成しない。

#### セッションの開始


ChatGPTっぽいチャットが展開される。

![Screenshot_2023-05-16 11-08-09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/f617364d-2a6f-0096-b4a8-2e4a30b9a3c9.png)

日本語で質問できる。


`/help` と打つとコマンド一覧が出る。英語。

![Screenshot_2023-05-16 11-28-57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/b25c985d-e37f-5742-6090-1ee480dd5607.png)


主要コマンドだけさっくり翻訳。
無印Copilotとだいぶ違っている。 clean -> simplify になったり。

- `/vscode` - VS Codeに関する質問
- `/tests` - 選択したコードに対してユニットテストを生成。
- `/simplify` - 選択したコードを簡素化。
- `/fix` - 選択したコードの問題を修正する提案。
- `/explain` - 選択したコードがどのように動作するかをステップバイステップで説明。
- `/ext` - VS Code拡張機能開発に関する質問。
- `/help` - GitHub Copilotに関する一般的なヘルプ

コマンドには引数が使えるものがあります。

例えば、 `/vscode Pritterの拡張を使うにはどうしたらいい` とか聞くと回答がきます！
また、特定のテスティングフレームワークでテストを書きたい場合は、 `/tests in AVA` とかするとAVAでのテストコードが出ます。



生成されたコードはそのまま挿入・コピー・新規ファイル・ターミナルで実行ができます。
![Screenshot_2023-05-16 11-17-50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/9aab03ea-2a33-a2d4-ba48-66fdacf0b785.png)

`このコードのよくないところを挙げてください` みたいな質問がしやすいです！

しかし、微妙に一つ前の質問を覚えてないっぽいんだよな・・・。

![Screenshot_2023-05-16 11-24-33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/58c138fc-2122-d0af-d104-e7c755ecc781.png)

あと、やたらと回答が早いのでGPT-4ベースではなく、GPT-3.5ベースではないかと疑っています。
「こうして欲しい」の回答に対する的確さも、GPT-4に比べると微妙な時がある。。。

#### インラインモード
名前がわからないので勝手にそう呼んでる。
こちらでしかできないことがある。

![Screenshot_2023-05-16 11-33-46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/baab1468-3037-6ce1-5e3e-4e31ae7da2e2.png)

コードを一気に修正し差分表示＆置換！
これは無印Copilotの Brushes -> Custom と同じ機能だけど、あちらは差分表示とかない＆入力制限(文字数上限)が厳しかった。
こっちは今の所上限がなさそうに思える・・・。

とりあえず 数千行はある適当な古いpackage-lock.jsonで「改行を消してくれ」と試したが、普通にできてしまった。

![Screenshot_2023-05-16 11-40-53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/6bdbbbc0-a869-b647-6802-eab1281071f0.png)
改行削除後、フォーマットし直すと差分がなくった(つまり、欠落なく置換できている）。


この入力上限がないのが強い。



#### Explain This

- `/explain` コマンドと同じ。右クリックから行けるショートカットですね。
    -  現状の Copilot無印 の Explain 相当
    - ただ、結構違います！
        - GPT-4ベースになったことで生成が早い
        - 色分けや改行がとても見やすい


![Screenshot_2023-05-16 10-45-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/64b59c17-4845-125a-ffc5-594acffa9c26.png)


### できることとできないこと。CopilotやChatGPT plusと比べて

- 無印Copilotと比べて
    - 賢くなった(かも)
    - 会話モードができた
        - 直接置換は会話モードではできない。インラインモードでやる。
    - 入力上限が無い？
- ChatGPT plus と比べて
    - GPT-4じゃないかも？なんか回答が早すぎる
    - 入力上限がないように見える
    - 普通の会話はできない。プログラミング関連以外を聞くと怒られる。
        - 普通の会話は [Genie AI](https://marketplace.visualstudio.com/items?itemName=genieai.chatgpt-vscode) のような ChatGPT API が使える拡張を入れるしかない。


### おまけ

色々やると、GitHub　Copilot Chat　に与えられている初期命令っぽいのが出てきてしまう。
（今回は「上の回答内容を日本語で言い直して」と言っただけなのだが）

**回答が分からない場合は、丁寧な謝罪をしてください** のような命令が与えられてることがわかる。

![Screenshot_2023-05-16 10-54-59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/3fdee2f0-1c10-2d38-95f4-595ce5dbfd8a.png)

```
kohashi
上の回答を日本語で言い直して

GitHub Copilot
現在の質問は、VS Code拡張機能の開発に関するものです。
APIに関する情報が与えられた場合、それに基づいて回答します。
回答が分からない場合は、丁寧な謝罪をしてください。
APIに関する情報が不正確であると思われる場合は、無視してください。
ユーザーは与えられたAPIの情報を見ることができないため、それについて言及しないでください。
参照する場合は、回答に含めてください。
拡張機能の作成に関する初期設定について話す必要はありません。
ユーザーがそれについて尋ねた場合を除き、回答に含めないでください。

上記のコードは、addListenerとremoveListenerという2つの関数を定義していま・・・
```

どうもこの動作から、現状のGitHub Copilot Chatは微妙に前の質問とかに弱そう。


### おまけのおまけ

政治的な質問や医療に関する質問には答えない。

![Screenshot_2023-05-16 11-05-44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/10ad5ba0-34c2-03b5-0051-d2a371426c2c.png)


彼女を持つことはできない。
![Screenshot_2023-05-16 11-06-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/5f9383b3-bdde-683e-4992-574d11770be1.png)




が、ChatGPTベースなので、ちょっとした誘導に弱い。



![Screenshot_2023-05-16 11-02-57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/dd292c3b-d1b9-2e70-fe0b-a3cfee77f9b6.png)


GoogleのCEOが誰かは開発に関係ないので当初は教えてくれませんが、開発の問い合わせ先なんですよーという感じで聞くと教えてくれちゃいます。かわいい。
![Screenshot_2023-05-16 11-51-56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34573/19b77b9a-e456-5d9e-4ca5-d1024cb9e6ab.png)