つい先日、Github Copilotが(制限付きとはいえ)無料で利用できるようになったため、
利用者も増えるだろうと話題に相乗りするやつです。
(一応中の人に話を聞く機会があった人間だし)
Copilotを使う前に
Copilotを使う上で「提示されたコードが適切か判断できる」ことは大前提です。
「よく分からないけど動くからヨシ!」とか絶対にやめましょう。
また、当たり前ですが学習目的だとほぼ無意味になります。勉強するときは頼らず地道にカタカタしましょう。
Copilotによるコード補完
普通にプログラムを書いていてもどんどん提案してきてくれますが、
個人的に真骨頂だと思うのはコメントに対してのコードの提案です。
例えば「Redisサーバーに接続」というコメントを書いて提示されてるのがこれ
「やりたいこと」をキチンと言語化するのは特に複数人で仕事をする場合は超重要。
「URL指定で」と加えると from_url()
を使った提案をしてきてくれます。
Copilot Chatへの聞き方のコツ
チャットには「#」から始まるコンテキスト変数が用意されています。
対象箇所を選択して「#selection」や「#terminalselection」などを文言に加えることで、選択範囲を中心とした問い合わせが可能となります。
仕組み上は「ここ」とかでも指定できるそうなのですが、やはりコンテキスト変数を利用した方が精度は上がります。
具体的にはこんな感じ
#selection で以下のような例外が出ます。考えられる原因を教えてください。
Traceback (most recent call last):
File "example.py", line 9, in <module>
func()
File "example.py", line 5, in func
raise SampleException("An error occurred")
__main__.SampleException: An error occurred
Caught an exception: An error occurred
一通り書いたあとでこんな感じにレビュー依頼するのもアリ
#file 本プログラムをレビュー、リファクタリングの余地などあれば提案してください。
また、日々改善してるらしく最近は出なくなりましたが「プログラムに関する質問のみを受け付けます」といった返答が返ってくることがあります。
こちらもコンテキスト変数を使用して範囲を指定することで、求める回答を得られることがあります。
Copilotを使うメリット
- ロジックの言語化能力UP
- 一見楽をしているようで「言語化して説明できている」ということでもあります
- 複数人でシステムを開発するのには重要な能力です
- リファクタリングが楽になる
- 趣味プログラムのレビュー依頼先にできる
- 特に趣味だと自己レビューになって観点が漏れがち
Copilotを使うデメリット
- 単純なコーディングがつらくなる
- 頭の中では完成してるのに、タイプ速度が追いつかずひたすらカタカタ
- リファクタリングやレビュー能力DOWN
- メリットの裏返し
- Copilotにレビュー依頼するだけでそれっぽく指摘してくれてしまうので、「Copilotのレビュー結果をレビューする」ような形に
ひとまず思いつくままに動くもの書いてCopilotにリファクタリングさせようぜ!
- 頼りすぎると麻痺してCopilotの使えない現場で苦労する
最後に
私は「エンジニアの仕事は仕事を奪う(=楽にする)ことである」という持論を持っているのですが、ついにエンジニア自身の仕事がAIに奪われる日が見えてきました。
今のうちに「AI」という武器を振り回せるようになっておき、「AI」と共存していく世界へ順応できるようにしておきましょう。
10米ドル/月ですし、実際使ってみて制限に達するようならサブスク契約も吝かではないかな…