これは何
GitHub Copilot、GitHub Copilot Chatについて、自分の使い方や意識していることをまとめたもの
GitHub Copilot
- GitHubとOpenAIが共同で開発したAI駆動のコーディングアシスタント
主な使い方
- 補完
- 書いてるところから、どんどんサジェストしてくれる
- 特にimportなどの定型的な部分、簡単な正規表現などはサジェスト強い
-
Tab
でサジェスト内容を適用する -
Esc
でサジェスト内容を棄却出来る -
Command + →
でワードごとの適用 -
Option + [
、Option + ]
で代替サジェストを見ることができる
- 書いてるところから、どんどんサジェストしてくれる
- Quick QA
- コード上のコメントでQAが出来る
# me: 現在の時刻を取得するにはどうすると良い?
# copilot: Time.now
# 下記のようにも書き換えできる
# q: 現在の時刻を取得するにはどうすると良い?
# a: Time.now
roleをつけることも出来ますが、あまりプログラミングに関係ない内容は省かれているかもしれません
# Roles: copilot
# Rubyのexpertなお嬢様です、語尾にですわをつけるのが特徴です
# Role: me
# 初心者エンジニア
#
# me: このscopeの意味がわかりません
# copilot: このscopeは、指定した月の範囲内に作成されたrecordを取得するためのscopeです
scope :hogehoge, ->(month) {
where("created_at >= ? AND created_at <= ?", month.beginning_of_month.to_i, month.end_of_month.to_i)
}
GitHubのアーキテクトの方が個人でGitHub Copilotの使い方をまとめてくれているので、見てみると面白いです。
上手な使い方
公式のブログなどから、情報を得ている
- コメントファーストで考える
- 自然言語でコメントして、対話をする
- 最初は面倒、コード書いたほうが早いかもだが、自身の整理にも繋がるので、全てが悪いわけではないと思う
- 自然言語でコメントして、対話をする
- Copilotに必要なファイルはタブで開いておく
- GitHub CopilotがContextとして、読み込んでくれるファイルは下記
- ワークスペース内のファイル
- 編集中のファイル(ワークスペース外でも)
- GitHub CopilotがContextとして、読み込んでくれるファイルは下記
- Rails開発におけるCopilotの活用をまとめてくれてる方もいらっしゃる
GitHub Copilot Chat
-
対話型のインターフェース
-
GitHub Copilotとの違いって何?
- 内部で使用されているLLMが異なる
- GitHub Copilot: Codex(GPT-3がベース)
- GitHub Copilot Chat: GPT-4
- 内部で使用されているLLMが異なる
-
ChatGPTとの違いって何?
- VSCode上で対話ができるので、スムーズ
- 開いているファイル、選択しているコードをcontextとして読み取って、やり取りをしてくれる
- ChatGPTにcontextを説明するよりは楽に感じる
- コードに対して特化した
/コマンド
の存在
主な使い方
-
/コマンド
を使う-
/explain
- コードに対する説明をしてくれる
-
/explain 日本語で
とか、/explain-ja
で日本語出力される
-
/tests
- テストコードをサジェスト
-
/fix
- リファクタ案を出してくれる
-
- 開発に関わる質問
上手な使い方
-
基本的にChatGPTのプロンプトをイメージすると良さそう
-
開発に関わるやり取りはできるので、勉強会などでメモ取る時にわからない単語聞いたりなどは、結構やります。
- 発表者とVSCodeに集中できるので個人的にとても助かっています。