※本記事はアソビュー!Advent Calendar 2024の3日目の記事です。
はじめに
アソビューでバックエンドエンジニアをしている佐藤です。
みなさんはGitHub Copilot使っていますか? 弊社アソビューでは使用するかどうかは各メンバーに任されており自分は疑心暗鬼で印象がアップデートされないままだったため、まだ使ったことがありませんでした。 私以外も使っていないメンバーがチーム内に複数名いたのですが、作業効率があがったなどの声を多く聞くようになり、取り残されないよう2025年に向け今年中に試してみました。
今回はGitHubの公式ドキュメントを参考にIntelliJでGitHub Copilotを実際にさわってみたいと思います。 なのでIntelliJでCopilotを使おうとする人が対象になります。
基本
IntelliJにGitHub Copilotプラグインのインストールなどセットアップは事前に完了しているものとします。 IntelliJで使える機能自体はシンプルで大枠「コードサジェスチョン」と「チャット」のふたつです。
IntelliJの画面とともに各機能をみていきます。
コードサジェスチョン
戻り値とメソッド名やコメントなどからコードを提案してくれます。 開いているファイルなども提案の参考に使われるようです。 このときに候補はいくつかある場合もあるので、候補を選択できるようにショートカットキーはマストです(次の候補command + ]、前の候補command + [、 tabで提案を採用)。
コメントの提案
コメントから実装の提案
実装途中の提案
複数のコード補完リストをパネルを開いて確認することも可能です。 デフォルトではショートカットが設定されていませんが設定しておいてもよいかなと思いました。
チャット
チャットを開くショートカットはマストで覚えておきましょう!(control + shift + C)
後述しますがよいアウトプットを得るにはコンテキストが重要です。 New Conversation(パネル右上の「+」)やAdd Rerefence(パネル左下の「+」、tabで提案を採用)でGitHub Copilotに正しいコンテキストを伝える必要があります。
簡単なドメインであればたとえば以下のように指示することでほんの数分で人では絶対に書けないコード量を書いてくれました。
- 営業時間帯のクラスをつくって
- 定休日のクラスをつくって
- 臨時休業日のクラスをつくって
- これらをまとめたクラスを作って
- 指定の時間が営業しているかチェックするメソッドをつくって
- {メソッド名}のテストをspockで書いて
複雑なロジックがないというのもありますが個人的には期待以上のアウトプットが得られました。
インラインチャット
先ほど紹介したチャットのパネル以外にもインラインチャットというものがあります。
メソッドの実装を改善してもらうような場合はメソッドを選択してインラインチャットで命令するのがよさそうです。 複雑なメソッドをみかけたらいったんインラインチャットで改善をお願いしてみると、適切な粒度にメソッドを抽出してくれるなど可読性の高い書き方を提案してくれたりして面白いです。
コンテキストが重要!参照ファイルの影響を体感してみる
ドキュメントを読んでいるとコンテキストというワードが頻繁に出てきます。 要は具体的な情報を提供したほうがよいアウトプットが得られるということだと理解しました。
簡単ではありますがコンテキストに参考(Reference)にするファイルがある場合とない場合でのアウトプットの違いを観察してみます。 「New Conversation」を開始して今回は「営業時間帯を表すクラス」をつくってもらいます。
参考にするファイル(Reference)を設定していない場合単純に開始時間と終了時間をもつクラスが生成されただけです(画像参照)。
一方で、似たような時間を表すクラスをコンテキスト(Reference)に含めて同じ命令を実行してみます。 IDEでファイルを開いているだけでもよいのですが今回はReferencesに明示的にセットしてみます。 ファイルをチャットのパネルにドラッグ&ドロップすると追加することができますし、チャットパネルの左下「+」ボタンで追加することも可能です。
今度はDateTimeFormatterも追加され、時間帯を文字列で返すメソッドなども追加されたことが確認できます(画像参照)。
簡単ではありますが開いているファイルによって提案が変わることが体感できました。
まとめ
調査した内容は上っ面だけになってしまいましたが、実際使ってみて感想としては期待以上でした。
まず、出力されるコードの可読性が高いと思いました。自分の英語のボキャブラリが乏しいというのもあるのですが変数名などはとても参考になります。
また、自分の知らない書き方に出会えるワクワク感がありました。 どうしてもひとつのプロジェクトで開発しているとプロジェクト内のコードを参考にしがちですが提案された記述で新しい学びもありシンプルでわかりやすい記述であることがままありました。GitHub Copilotの提案したコードの方がコード量が少なく読みやすいというレポートもあったりします。
他のツールに移動せずにIDEの中で完結できるのもよいと思いました。
IntelliJでの対応はVSCodeより遅れているようなのでまだまだできることは少なそうなのでまだまだ乗り遅れずにすみそうです。 Github Copilotの最新の情報はこちらで確認できます。
まだ使っていない方でこの記事を見てしまった人は今年のうちにぜひ試してみましょう!
さいごに
アソビューでは、一緒に働くメンバーを大募集しています!カジュアル面談も実施しておりますので、少しでもご興味をお持ちいただけましたら、ぜひお気軽にご応募ください!