Github Copilotでコーディングが楽しくなりそうな予感
Agaroot IT Partners(AITP)の大野です。
昨年から話題になっていて気になっていたGithub Copilotを試してみました。
「どのくらい便利なものなのか」「別途料金を払う価値があるのか」といった観点で、このサービスを見ていきたいと思います。
Github Copilotとは?
Github Copilotとは、GithubがOpenAIと協業して公開した、コーディング中にAIがコードを補完してくれる機能を持ったツールです。
開発者がコードを書き始めるか、コードで何をしたいかコメントに記述することで、Copilotがコードをサジェストしてくれます。
Githubに上がっている公開リポジトリの内容を学習しているので、ユーザーのコーディング状況を加味した上で適した内容を提案してくれるそうです。
Github上のレポジトリとなると、学習データとしては質的にも量的にもかなり頼りになりそうな気がします。
利用するには個人アカウントで月額$10、Organizationアカウントで月$19かかりますが、長めの無料お試し期間があるので気になったら試してみると良いと思います。
※エディタで使用する前にインストールが必要です。手順はGithub公式の記事をご覧ください。
使ってみた
VSCodeにインストールして簡単にテストしてみました。

「文字を数える関数」というコメントを書いてみると、コメント通りの関数が生成されました!
公式のデモを見てたのになぜか感動してしまいました。
日本語の使用について少し心配していたのですが、このくらいの難易度は理解できるようです。
(裏で英語に翻訳してからクエリ投げ直してるのかな……?)
テストコードも書いてもらう
関数を解析してそのテストコードを生成するのも得意だとわかりました。

簡単なコメントを書いただけで、次々とテストコードをサジェストしてくれました。
結局Copilotがサジェストしたものが全部採用され、テスト実行。ここまで数分しかかかってません。
これは楽かも…!
他にも色々できる
例えば、
// URLにマッチングする正規表現と入力すると
const urlRegex = /^https?:\/\/[\w/:%#\$&\?\(\)~\.=\+\-]+$/;とサジェストされたり
// 都道府県の名前一覧を配列に入れるといった手入力で絶対やりたくないことも
const prefectures = [
"北海道",
"青森県",
"岩手県",
"宮城県",
"秋田県",
"山形県",
"福島県",
"茨城県",
"栃木県",
"群馬県",
"埼玉県",
"千葉県",
"東京都",
"神奈川県",
"新潟県",
"富山県",
// ...長いので省略のように出してくれたりします。
もちろんこのサジェストの正誤は自分で確かめる必要がありますが、AIがここまでガッツリ書いてくれると、自分で書かないといけない分量は相当減りそうですね。
いくつか注意点
- Copilotにサジェストをもらう際には当然コードの内容をGithubに送信しています。送られるデータに関しては十分に注意する必要がありそうです。
- サジェスト内容はたまに「おや?」と思うような間違いが混ざっていることがあります。コメントやコンテキストが不十分だとそうなりやすいようです。
- Copilotが提供するコードが著作権侵害に当たる可能性も議論されています。一定の結論が出るまでは、サジェストされるコードをそのまま使い続けるのではなく、それを参考にしながら実装していくというスタンスの方が良さそうです。
使う前に必ず確認した方がいい設定
GithubのSettingsでCopilotの設定ができます。セキュリティが絡むところなので必ず確認しておくことを強くおすすめします。

Suggestions matching public code を Block に設定することで公開レポジトリで使われているコードを提案されることを防ぎます。(著作権侵害の防止)
また Allow GitHub to use my code snippets for product improvements のチェックを外すことで、自分が送信するデータを学習データから外すことができます。(情報漏洩の防止)
特に業務で書くコードに使ってみようという方は、まずここの設定を見ておきましょう。
結論
楽しい
少し使っただけでコーディングが楽しくなるサービスでした。
悩みながらGoogle検索しているよりも、Githubからサジェストしてもらった方が早く見つかる可能性が高いと感じました。
何より後ろからAIに支えてもらっている感触が心強い。本当に一人でペアプロしている感じ。
時間が短縮できる
新しい言語や経験のないフレームワークを使う際、Copilotに助けて貰えば、マニュアルを読み込む時間やお作法を覚える時間を大幅にカットできるのも良いところです。
その分新しい言語・新しいフレームワークにチャレンジする敷居も低くなって、言語やプラットフォームに縛られにくくなるのではないでしょうか。
そして、フレームワークの使い方の習得にかかる時間が短縮できれば、エンジニアはもっと本質的な「どんなサービスにするのか」「何を作るのか」に頭と時間を使うことができますね。
課金する価値はある
僕のような新しい言語やフレームワークをどんどん使いたいと思う人間にとってはアリだと思います!
とはいえ、AWSでも類似サービス Amazon CodeWhisperer をプレビュー中なので、こちらも試してみて比較したいと思います!
それでは!