booklista tech blog

booklista のエンジニアリングに関する情報を公開しています。

Github Copilot を使ってみた感想

アイキャッチ

はじめまして。株式会社ブックリスタ プロダクト開発部でエンジニアをしている姚と申します。

私は一年前から個人で Github Copilot を使っていて、最近会社でも GitHub Copilot for Business を試験導入されました。
今回は、Github Copilot の概要と、会社での導入状況、先行利用者が使ってみた感想や利用時の注意点などを紹介します。

Github Copilot とは

Github Copilot は、AI によるコード補完機能を提供するサービスです。
コメントからコードへの変換、コードブロック、重複コード、メソッドや関数全体の自動補完など、プログラマーを支援する機能が含まれています。

会社での導入状態

ブックリスタでは、AI を積極的に活用し、エンタメテックを目指しています。
先月から少人数で GitHub Copilot for Business を試験導入して、先行利用者から好評を得ていますので、今後は利用範囲を拡大していく予定です。

使ってみた感想

良いところ

  • 生産性が向上する
    • 利用したことがない言語やフレームワークでも実装が容易になる
    • ほぼ修正が不要なレベルの、簡単でよくある実装が出てくる
    • テスト観点を書けば、テストコードを生成してくれる
    • IDE より高度な補完が効く
      • 変数の命名すると型を提案してくれる
      • 関数の入出力パターンを他と合わせてくれる
      • コードを書いている最中の文脈に合わせて、コードを補完してくれる
      • プロジェクト全体のコードを分析して、コードの一貫性を保つようにサジェストしてくれる
  • 開発体験が良くなった
    • 基本サジェストを採用し、サジェスト内容を少し修正する程度で済む
    • もう一人の開発者のような存在で、ペアプログラミングのような開発体験ができる

使える事柄

メソッドの自動補完

メソッドや関数の名前を入力すると、そのメソッドや関数の中身を自動補完してくれます。

灰色の文字は、GitHub Copilot が自動補完した部分です。

コードブロックの自動補完

テーブル定義やテストケースをコメントとして貼り付けたら、コードブロックの中身を自動補完してくれます。

複数のサジェストを提案してくれます

デフォルトのサジェストが気に入らない場合は、 GitHub Copilot を開く (別のペインに追加の候補) の機能があり、複数のサジェストを提案してくれます。


悪いところ

  • 言語によって向いている向いていないがある
    • 型がある言語の提案は良いけど、型がない言語の提案はイマイチ
    • HTML/CSS だと指定したデザインの自動生成は難しい
  • 更新が早いライブラリだと古い実装を提案される
  • 提案されたコードが良いコードである保証はない
    • 特に汚いコードの中で使おうとすると提案も悪くなる
      Copilot は既存コードと一貫性のあるコードをサジェストしてくれるため、既存のコードが汚いと、良いコードをサジェストしてくれない
  • インライン候補は行の末尾にしか表示されないため、行の途中でサジェストさせることができない


バグや脆弱性があるコードが含まれる可能性がある

例えばうるう年の判定は例外として、西暦年号が 100 で割り切れて 400 で割り切れない年は平年としていますが、Github Copilot が生成したコードにこの判定が含まれていませんでした。


利用時の注意点

  • 良いコードをサジェストさせるには、コードの前に具体的な処理内容のコメントを書いたり、関数名や変数名に適切な名前を付ける必要がある
  • Copilot から提案されたコードは、必ずしも良いコードではないので、開発者がコードを読んで理解した上で、正しいかどうかを判断する
  • Copilot は重複コードを生成することがあるので、DRY 原則を意識する必要がある



まとめ

Github Copilot を使うことで、開発体験が良くなり、生産性が向上すると感じました。
今後も、Github Copilot を使い続けていきます。

今後の展望

Github Copilot は既存コードのリファクタリングやバグの修正などにまだ不足点がありますが、それらは Github Copilot Labs で改善されることを期待しています。