Github Copilotを一週間試してみた
2022/06/30
前々から興味があったgithub copilotが先週6/21に一般リリースされたので、一週間ほど試してみました。
結論、引き続き使おうかなと思えたので、個人的に良かった点をまとめてみます。
github copilotとは?
github copilotはプログラマーが書きたいコードを機械学習したAIが推測して自動的に補完してくれるサービスです。
結構複雑な補完も行ってくれるので、補完というよりもAIのcode suggestみたいなイメージが近いかもしれません。
github copilot以外ではtabnineなどが有名です。
個人的に良かった点
まだ全ての機能を使いこなしているわけではありませんが、github copilotを使用した恩恵はあったのでいくつか紹介します。
基本のsuggest
まずは基本のsuggest機能です。 typescriptなどの型付き言語でもIDEによってはある程度補完してくれるのですが、github copilotではその先も補完(suggest)してくれます。
例えば画像のようなイメージです。
灰色部分がgithub copilotがsuggestしてくれた部分になります。 もちろん先を予想してのsuggestなので間違っている場合もありますが、精度は中々だと思います。
間違っている場合は採用しなければいいだけですし、細かいsuggestのおかげでトータルのコーディング時間は削減できている気がします。
ライブラリ機能のsuggest
個人的に一番助かっているのが、ライブラリのメソッドを適切に補完してくれる点です。
例えば「React HooksライブラリSWR
のmutate
メソッドってどう使うんだったけ?」と思ったときは↓のようにsuggestしてくれますし、
「ORMライブラリのprisma
でソートして取得するときってどうするんだっけ?」って思ったときは↓のようにsuggestしてくれます。
ライブラリの仕様を忘れたときに調べにいく時間が減ったので、これは結構コーディングの時間削減につながっていると思います。
関数のsuggest
copilotは関数名を書いた時点で関数の中身をsuggestしてくれることがあります。
↓の画像はDBとフォルダから画像データを消したい場合の例ですが、deletePhoto(id: string)
とメソッド名を書いた時点で、関数の中身を全部suggestしてきました。
これが結構正確で、自分がデータの編集にprisma
とfs
を使用していることも考慮してsuggestしています。
ちゃんとDBにデータがない場合も考えられてあり、ロジック自体も基本的に問題なさそうでした。
ただし、suggestはあくまでsuggestなのでちゃんと各自で吟味しましょう(上の例でもprisma
はfindOne
ではなくfindUnique
を使うのが正しい)。
⚠️ 環境変数を編集するときは注意
github copilotは補完の際に毎回apiと通信しているので、環境変数などが入ったファイルを弄るときは注意する必要があります。
幸い.env
やyaml
ファイルなどはデフォルトでcopilotがoffになっていますが、ファイル形式によっては機密情報が入ってるファイルでもonになっている場合があるので、重要なファイルを編集する前には基本的にoffにすることをオススメします。
vscodeの場合、github copilotは右下のアイコンからグローバルにoffにすることができます。 アイコン部分が黄色になっていれば、github copilotはoffの状態です。
おわり
一応3ヶ月は無料で使えるっぽいので、興味がある人は試してみるとよいかと (copilotは公式に対応していない言語でも一応使えるらしい)