スタディサプリでエンジニアリングマネージャー等をしている @pankona です。
スタディサプリ (小中高、English) では GitHub Copilot for Business を使っています。本稿では、GitHub Copilot for Business を導入した背景と、導入後の活用方法について紹介します。
GitHub Copilot for Business とは
GitHub Copilot 公式サイト: https://github.com/features/copilot
もはや説明不要かもしれませんが、GitHub Copilot はいわゆる AI プログラミングアシスタントです。ソースコードやドキュメントを書いているときに、前後の文脈を考慮してコードを補完してくれる機能です。
個人向けのプランと企業向けのプランが存在し、企業向けのプランは GitHub Copilot for Business と呼ばれています。個人向けプランと Business プランでは機能的にはほとんど差がありませんが、Business プランでは以下のような配慮がなされています。
- 自分が書いているコードやコードベースが GitHub Copilot の学習データに含まれないようにすることができる (コードの流出防止のため)
- 公開されているリポジトリのコードと一致するコードをサジェスションとして出すかどうかを設定する (ライセンス違反防止のため)
我々のコードが知らぬ間に学習に使われて他の誰かのコードになっちゃう可能性があるんじゃないの?という懸念が当初はありましたが、Business プランを使っている限りにおいてはどうやらそういう心配なさようです。安心ですね。
弊社での導入状況
スタディサプリ (小中高、English) のソフトウェアエンジニア、QAエンジニア、SRE (パートナー含む) であれば、希望をしてもらえれば誰でも導入できる状態になっています。現在すでに 100 人以上が利用しており、普段コードを書く方には概ね行き渡っているような状況であろうと思います。
GitHub Copilot for Business を導入してみての感想
弊社 Slack ワークスペースには、GitHub Copilot の知見を集める #copilot-ja というチャンネルがあります。Copilot 導入のヘルプや、知見の共有に役立てています。さて、このチャンネルに寄せられたよろこびの声をいくつかピックアップしつつ、私のコメントを添えてみます。
頻出するコードを書くのが楽になった
Go を書くときには if err != nil
というお決まりのエラーハンドリングが頻発しますが、このような頻出コードは補完の精度が高く、Copilot の導入によってコーディングが楽になったという意見がありました。また return fmt.Errorf
に続く内容 (どういうエラーであるかを表す文言) も文脈に沿ったものが提案される場合が多く、その点でも体験が向上したという意見が聞こえてきました。ボイラープレート的なコードが多めの言語とは、特に相性が良好であるという一面がありそうです。
GitHub Actions の yaml を書く作業が楽になった
複数のファイルに似たような修正を書く必要があるときに、GitHub Copilot は強力なサポートをしてくれるようです。定形で退屈な作業をちょっと楽にしてくれるのはありがたいですね!
あまり馴染みのないコードを書くときに有用なサンプルを示してくれる
普段書かないプログラミング言語を書く必要が出てきたときに、Copilot Chat に「このライブラリを使って○○したいときにどうすればいい?」と聞くと、そのライブラリを使ったコードをサジェストしてくれることがあります。提案されたコードはそのままで動かないときもあるので、最終的には自分でチェックする必要はあります。とはいえ大いに参考になりますよね。これも便利ですね!
テストコードを生成してくれる
特定の関数やメソッドに対して「これのテストコードを生成しておくれ」と Copilot Chat に聞くと、テストコードを生成してくれることがあります。こちらは普通のコードを書くときに比べて、そのままで動く (あるいは多少の手直しで済む) ものが提案される確率が高いような気がします。テストコード書くの億劫だなーと思うこともしばしばなので、これも大変便利ですね!
コミットメッセージを生成してくれる
VSCode の拡張や Vim でコミットメッセージを書く場合には、コミットメッセージも Copilot が生成してくれます。こちらも多少手直しするだけで意味のあるコミットメッセージになるような気がします。これも便利ですね!
留意すべき点
逆に気をつけなければならない点も色々分かってきました。嘆きの声もピックアップしつつ、私のコメントを添えてみます。
Copilot が微妙な typo を織り交ぜてくる
"kobetsu" と書いてほしいところを "boketsu" と提案されてしまって気づかなかった、という報告がありました。たいへん面白い typo ですが、こういった提案がされてしまう可能性には気をつけないといけませんね。
Copilot Chat が正しくないことを教えてくる
ChatGPT などを利用されたことのある方はご存知のことかと思いますが、あたかも正しい情報であるかのように誤情報が提案されることがあります。これは Copilot Chat でも同様で、提案されたコードが正しいかどうかは自分で確認する必要があります。嘘を嘘であると見抜くレビューの力が問われますね。
総評: 付き合い方が分かってくればとても便利
現状の Copilot の力は、あまり過度に期待しすぎると (なんでも空気を読んで生成してもらえると思っていると) 肩透かしを食うかもしれません。とはいえ、まず Copilot で下書きを作るイメージで大まかな部分を生成した上で、生成物を確認、適当な形に修正していくというプロセスを踏めばかなり有意義に使えるツールであると感じます。その精度や特性を理解して上手に付き合うことができれば、現状でも十分便利に使えます。今後も Copilot の精度向上や機能の追加が進んでいくと思いますので、期待していきたいですね。Let's enjoy coding!
おわりに
本稿では、弊社の GitHub Copilot for Business 導入状況と、導入してみての感想を紹介しました。 スタディサプリでの開発に興味がある方は、@pankona までお気軽にご連絡ください。カジュアルにお話できます。