技術責任者の@kenchanです。GMOペパボ(以降ペパボ)では、2023年6月7日にGitHub Copilotの全社導入を決定し、現在は全エンジニアとデザイナーの希望者が利用しています。本記事では、ペパボにおけるGitHub Copilotの導入の効果と、導入に向けて検討した課題やその解決策や現在の利用状況を公開します。
GitHub Copilotの導入によって主要サービスのデプロイ頻度が向上
ペパボでは、GitHub Enterprise上での活動を独自に集計し、開発生産性のメトリクスとしてFour Keysを計測しています1。2023年においては、この中で「デプロイ頻度(1日あたりの平均デプロイ回数)」を重要指標として生産性の向上にとりくんできました。GitHub Copilot導入の目的の1つは生産性の向上でしたのでメトリクスが変化しているかを調査しました。
開発が活発に行われているサービスのデプロイ頻度を導入前後で比較したところ、2つのサービスで1日あたりのデプロイ回数の向上がみられました。一方で、他のサービスにおいては改善は見られませんでした。
表: 1日あたりのデプロイ回数の変化(1/1~06/10と6/11~7/29の比較)
導入前 | 導入後 | 変化 | |
---|---|---|---|
サービスA | 0.8 | 2.4 | +1.6 |
サービスB | 2.8 | 3.3 | +0.5 |
サービスのデプロイ頻度は、そのときに開発している機能の大きさやチームメンバーの人数などの影響を少なからず受けます。そのため、この変化がGitHub Copilot導入の効果と言いきることは難しいですが、生産性が向上しているチームからのノウハウの共有などを通じて、継続した生産性の向上に取り組んでいきたいと考えています。
GitHub Copilot導入に向けた課題とその対応
ここからは、ペパボでGitHub Copilotを全社導入するにあたり検討した観点と、その結果を紹介します。
ペパボにおける生成AI活用の現状
GMOペパボでは、ChatGPTの登場以降、生成AIを活用した機能の開発や開発プロセスへの活用による生産性向上に取り組んできました。特に、pyama86/slack-gptを利用したSlack Botはエンジニアに限らず全社員が利用しており、さまざまな業務の効率化に貢献しています。
また、生成AIの活用を推進するために「自然言語生成モデル活用ガイドライン」が法務グループとセキュリティ対策室によって策定され、全社員に周知されています。
Copilot導入に向けての課題
Copilotの導入に向けては、上記ガイドラインに準拠しているかの確認と、コード生成における特有の課題があるかが論点となりました。それらをクリアにしていくために、法務グループの@k_satoshi_1012、技術部基盤チームの@k1LoW、ペパボ研究所の@monochromegane、そして私の4人が中心となり検討を進めました。
検討の中で、導入するためには3つのリスクについてそれぞれのリスクの有無を明かにし、リスクがあるものに対しては対策を行えばよいといことがわかりました。
情報資産が外部に送信されるリスク
Copilotは利用者が入力したコードやコメントを、提案生成のためにGitHub社のサーバに送信します。そのため、生成されたデータがどのように使われるか、いつまで保管されるか次第では、社内のガイドラインを違反する可能性がありました。
しかし、GitHub Copilot for Business Privacy Statementによると、提案を生成するためのデータは暗号化されて送信され、提案が終われば即時破棄、コードのスニペットは保存もされないという旨の記載がありました。そのため、弊社の保有する情報資産を送信すること自体へのリスクは十分に低いと判断しました。
送信したデータが学習に利用されるリスク
生成AIでは、生成のために送信したデータが学習に利用されるリスクがあります。コード生成AIにおいては、送信したデータが学習に利用され、生成AIの提案内容に含まれてしまうことは情報漏洩につながります。
しかしながら、これも同様にPrivacy Statementにて学習に利用しないと明記されていたため、リスクはないと判断しました。
生成されたコードの著作権・ライセンス違反のリスク
一般に、生成AIにおいては著作権侵害のリスクが指摘されていますが、コード生成AIに関しては、それに加えてオープンソースソフトウェアライセンスの課題があります。
普段の開発においては、OSSとして公開されているライブラリやフレームワーク単位でライセンスを確認し、そのライセンスに従って利用しています。しかし、Copilotによって生成されたコードはそのライセンスを確認することができません。そのため、生成されたコードにOSSライセンスが適用されると、ソースコードの公開要求や損害賠償といったリスクがあります。
そういったリスクを軽減するため、Copilotには「Suggestions matching public code」という設定があります。これを「Blocked」にすることで、公開されたコードと一致するコードの提案をブロックし、著作権・ライセンス違反のリスクを軽減できます。さらに、GitHub Copilot for Businessでは、この設定をEnterprise単位で強制することができるため、この設定を事前に行うことにしました。
一方で、この設定をした上でも意図せずOSSライセンスが適用される可能性はあります。その場合は、GitHub Copilot Customer agreementsの「4.Defense of Third Party Claims.」にGitHub社との主契約に従うとあります。契約の状況は各社の契約開始時期によって違いがある可能性がありますので、GitHub Enterprise契約の条項を確認することでリスクの大小を判断することができます。
2023年7月19日時点での利用状況
上記のようなリスクの評価・軽減を行い、2023年6月7日に全社導入を行いました。そして、GitHub社より6/7から7/19までのCopilotの利用状況を教えていただきましたので公開します。
Acceptance Rates & Line of Code Accepted
はじめに、Copilotが提案したコードを利用者がどの程度採用したかと、その総行数です。既に同じメトリクスを公開しているサイバーエージェント様2と同様の注意があります。
- 「採用(Acceptanace)」とは提案されたコードをそのまま採用した場合のことを差します。一部採用した場合は「採用」とはカウントされません。
- VSCodeの拡張機能のみの集計です。
- 各個人のGitHubアカウントにライセンスを付与しているため業務以外での利用も含まれています。
採用率は30.1%、トータルの行数は35,000行となりました。採用後に修正されるケースも多々あるかと思われますが、1ヵ月弱で35,000行のコードを書く時間と手間を削減できたと考えると、期待する効果が得られているのではないかと考えます。
言語ごとのAcceptance Rates
言語ごとのAcceptance Ratesは非常に興味深い結果となりました。
GMOペパボの多くのサービスは、PHP、Ruby、Go、TypeScript等で開発されています。Ruby、Go、TypeScriptが上位にいるのは納得感がありますが、次点がPythonというのは意外でした。Pythonは、データ分析基盤や機械学習関係の機能開発に利用しているため、そういった開発が一定以上行われていることの証左とも言えます。
また、PHPについては、PhpStormを利用しているエンジニアが多いため、実際の利用状況よりも少なくなってしまっている可能性が高いと考えらえます。
最後に、RubyのAcceptance Ratesが低いというのも興味深いです。Rubyは言語の表現力が高いためにCopilotの提案がプロダクトの規約や個人の好みに沿わないことが多いのかもしれません。
Copilotを利用している環境
Copilotを利用している開発環境は以下の通りです。
- VSCode: 84
- NeoVim: 10
- JetBrains IDE: 9
- Vim: 5
- Xcode: 3
- Emacs: 1
VSCodeが一強となっています。JetBrainsのIDEについては、希望者にはPhpStormやRubyMineのライセンスを付与しているために一定の利用者がいると考えられます。Emacsが1名というのは意外でした。
おわりに
新しいツールの導入においては、コストパフォーマンスという観点を避けて通ることはできません。GitHub Copilot for Businessにおいては、一人あたり月額$19というコスト分の生産性向上が見込めるかということになります。あくまでも計測途中ではありますが、現時点でのデプロイ頻度の向上と、GitHub Copilot自体の進化、今後のノウハウの共有考慮すると、十分な効果があると感じています。
一方で、コストパフォーマンスという観点だけでなく、開発のパラダイムの変化にいち早く対応するというという点も重要だと考えています。ChatGPTの登場以降、あらゆる分野において生成AIを活用した新しいサービスが登場し、業務プロセスの改善が行われています。
GMOペパボでは、GitHub CopilotをはじめとしたAI技術を積極的に活用し、生成AIがあたりまえになった時代における「ふつうの開発」を推進していきます。新しい時代の「ふつうの開発環境」で、私たちと一緒に表現活動を行うすべての人に新しい価値を提供しませんか?