APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【GitHub Copilot】それはなければならないものでした

GitHub Copilot はじめました

GitHub Copilot for Business導入しました。 メンバーがいろいろブログでその機能を紹介しているのでぜひご覧いただきたいと思います。

GitHub Copilot カテゴリーの記事一覧 - APC 技術ブログ

さて、チームの他のメンバーは「これすごいねー」という評価だったのですが、私はどちらかといえば懐疑的な部分がありました。懐疑的な意見として「そうは言っても結局内容が正しいかどうかわからないのであれば、自分で考えるのと違わないのでは?」とか「どこまで適切なリコメンドがあるかわからないよね」といったものです。

そんな私がGitHub Copilotを導入して、どんな感想を抱いたのか、懐疑派の方々向けにご紹介したいと思います。

ちなみに導入先IDEは VisualStudio Code(VSCode)です。

感想集

「そうあって当然の世界がやっと到来」

導入してすぐにわかるのは様々なリコメンドを表示してくることです。コメントだったりコードの続きだったり、時に例外処理などもリコメンドしてくれる。

ただ、最初私は「VisualStudio Codeってこういうものだったよね?」と思っていました。というのも世の中リコメンデーションを出してくれるのが当然のようになってきているからです。例えばGmailでメールを書いている(特に英文を書いている)と、続きをリコメンドしてくれますし、間違いなども指摘してくれる。そういうリコメンデーションが当たり前になってきているので、VSCodeでも前からそうだったよな、と勘違いしてしまいました。

しかしあらためてGitHub Copilotを無効にしてみると当然そうしたリコメンデーションは表示されない。当然の世界だと思ったけれど、実は今までなかったのでした。GitHub Copilotを導入してはじめて「そうあって当然の世界」が到来したのです。あって当たり前のものをやっと手に入れたということをあらためて気付かされました。

開発に集中するとより効果が高まる

さて、あって当然の環境であるGitHub Copilotはエディタで開いているファイルをコンテキストとして利用してリコメンデーションを作成している、とよく聞きます。わざわざ開いていないといけないのか、それはちょっと面倒じゃないの?と当初は思っていました。しかし、その懸念は杞憂だったようです。 なぜなら・・・「だいたい関連するコードは事前に確認、参考するために表示している」からです。したがって、利用していると、それなりのリコメンデーションはしてくれるようになります。最初は「おいおい、それは違うんじゃね??」というものをリコメンドしてきますがそれも最初だけ。開発に集中すれば関連するコードも開いていくことになるので、「お、ここまで推測してくれるんだ」という状況になります。

以下、それほど関連ファイルを必要としないケースですが、ひとつ例として挙げると、healthcheckEnv という変数を追加するところで、 = まで入力すると前後のコードから 以降のコードを推測してリコメンドしてくれています。

ここまでリコメンドしてくれればあとはそれを確定するだけ。コード入力の手間が省けます。

さらに例をもうひとつ。

他のところから類似のコードをコピーし、修正したため一部コメントを書き換えています。 144行目に external の項目の説明を追加したいと思って書き始めたところ、その内容をInと書いた段階で推測して残りのコメントを足してくれています。まさにこの通りに書きたかったので、「お見事」と感嘆してしいまいました。

Kubenetes Yamlも補完してくれます。

今回 liveness/readiness probeを追加しようとコードを追加していました。そして最後にKubernetes YamlにlivenessProbeの追加をしようとすると・・・

これも補完してくれます(readinessProbeも同様です)。調べてみましたが少なくとも操作しているリポジトリ内にはinitialDelaySecondsなどの指定を含むコードやドキュメントもない状態でした。つまりここは一般的な情報からlivenessProbeの指定項目をリコメンドしている状態になります。指定する内容を理解しているのであれば、いちいち調べなくてもいいし、記述の手間も省けてとても便利です。

おわりに

今のところ、よく作業を手伝ってくれるし、やるべきことを先回りして済ませてくれるまさに「Copilot」なところはいい感じです。開発に集中すればするほど、その効果も自然と高まります。

「コメントで実装したいことを書けばコードにしてくれる」という部分がまた「すごいねー」と言われている部分ですが私はまだ懐疑的な状況ではあります。それをやるとコメントとコードで同じことが書いてある状態になり、少し前の「コードを見ればわかることはコメントに書かない」としてきた文化と反するのではと考えています。そういうところもあって、コメントを書くよりもコードから書き始めたいと考える部分が大きいです。 それでももしかすると「なかなかいけるじゃん」とか「今までと違って、こういうやり方に変わっていくよねー」と感じることになるのかもしれません。

まだ、処理まるまるをコードで記述しなければ、というシーンが登場していないのでこの点は評価できていない部分ですが、今後「これまでのコードの書き方」と「新しいコードの書き方」の差分を意識しながら作業をし、何か気づいたことがあったらこのブログで紹介していきたいと思いいます。