スタイル・エッジ技術ブログ

士業集客支援/コンサルティングのスタイル・エッジのエンジニアによるブログです。

GitHub Copilot Businessをチームに導入してみた

はじめに

こんにちは。システム事業部イネイブリングチームに所属しているOrochiです。
イネイブリングチーム*1は、開発チームの開発生産性向上の活動や技術支援などを行っています。
その取組みの一環として、GitHub Copilot Businessを導入しました。
現在は、開発チームメンバーであれば申請することで誰でも使える状態になっています。

Created by DALL-E

この記事では、GitHub Copilot Businessを導入した背景や注意点、導入後の効果などについて紹介します。

GitHub Copilotとは?

この記事を読んでくださっている方は既にご存知かと思いますが、GitHub Copilotは、OpenAIのCodexモデルを利用したコード補完ツールで、プログラミング中に次に書くべきコードを提案してくれます。 docs.github.com docs.github.com

Visual Studio Codeなどのエディタに拡張機能を導入することで利用可能です。
また、GitHub CLIを使用するとコマンドライン上でも動作します。

Copilot Chatという機能もあり、こちらを使用することで特定のファイルに記載されている処理の解説などをCopilotにお願いすることができます。
例えば、私はOSSのフレームワーク理解のために、内部処理の解説をさせています。

Laravelの内部処理を聞いている画像

導入の背景

弊社の開発チームがGitHub Copilotを導入するに至った背景には、以下の社内課題とニーズがありました。

エンジニアの不足

会社の成長と共に、開発チームのプロジェクト数が増える一方で、エンジニアの増員が追いつかない状態です。
それに対して、イネイブリングチームとしては効率化に関する各種施策を打ち出していましたが、開発チームの協力が不可欠でありながらも、日々の業務に追われて協力の余裕がない状況が続いていました。

記述量の多いコード

最近は、従来のプロダクトの反省を踏まえて、スパゲッティコードを避けるための適切なファイル分割と責務の分離を徹底しユニットテストを必ず書くようになりました。
しかし、それに伴ってコードの記述量が増加し、物量的に開発スピードが出なくなるといった問題が発生していました。

導入を決定した理由

これらの課題に対処するため、GitHub Copilotの導入を決定しました。その理由は以下の通りです。

生産性向上の効果が期待できた

他社の技術ブログなどで情報収集をし、
「繰り返しの作業を迅速にできるようになった」
「開発効率が上がった」
という記事が多かったため、コードの記述スピードや正確性を向上させ、反復的な作業やテストコードの自動生成に効果が期待でき、組織の開発生産性の向上に繋がると考えました。

既存のGitHubアカウントの活用

弊社では現在ソースコードの管理をオンプレミスのGitLabで行っていますが、イネイブリングチームの施策として、CI/CDの拡張性などを加味してGitHubへ移行する計画がありました。
そのため、一部では既にGitHubを利用しており、サブスクリプションも進めていたのでスムーズに導入できました。

チームメンバーの興味

現場からもCopilotを使用したいという話は上がっていて、その後押しもあり意思決定は比較的スムーズにできました。上司の理解があったのも大きかったです。

注意点とデメリット

社内のコードの漏洩やライセンス侵害などの可能性

GitHub Copilotを利用する際に、社内のコードがGitHub Copilotの学習に利用され、外部に漏れるリスクが懸念されました。また、OSSのコードを参考にコード補完を行うため、脆弱性を埋め込んだり、ライセンス侵害をしたりといったリスクも考えられます。

弊社は、公開コードに一致する提案を無効に設定しているため、OSSのコードをGitHub Copilotが提案しないようにしています。*2
このため、ライセンス侵害の可能性は低く、リスク許容としています。
脆弱性に関しては、複数人でコードレビューすることでセーフティネットを張っています。

若手メンバーの成長を妨げる可能性がある

AIサービス全般に言えることですが、今は「考える」ということをAIに任せられるため、経験年数の浅い若手メンバーが最初からGitHub Copilotなどを使用してコーディングをすると、AIなしではコードが書けない人材になってしまうことが懸念されました。

こちらは、コードレビューでコードの意図を問うようにしたり、ペアプロを通して教育していくことで、何も考えずにGitHub Copilotから提案されたコードを採用するのではなく、自分で書いたコードとして判断する癖をつけるように対応しています。

導入後の効果とメリット

コーディング効率の向上

GitHub Copilotの導入により、特にテストコードや反復的な作業において、コーディング効率が大幅に向上しました。具体的には、次のような効果がありました。

テストコードの自動生成

同じようなテストコードを何度も書く手間が省け、効率が向上しました。
また、ある程度コメントでどういったテストを書いてほしいかを示すことで、全く新しいテストコードも生成可能になりました。

プロダクトコードの自動生成

プロダクトコードもGitHub Copilotに提案してもらえるようになり、こちらも作業効率が向上しました。
適切なファイル分割と責務の分離を徹底していたため、Copilotから提示されたコードは比較的正確なものであることが多いです。

フレームワークやライブラリの理解の補助

弊社のアプリケーション開発では主にLaravelを使用し、中には設計思想に応じた拡張を加えているものもあります。GitHub Copilotによって、Laravelや拡張部分の理解が進み、実装のスピードが向上しました。

開発チームのフィードバック

GitHub Copilot導入後、他社の技術ブログやSPACEフレームワーク*3を参考に開発チームにアンケートを実施し、以下のようなフィードバックを得ました。

GitHub Copilotは何をする時に使用しますか?

一日の仕事の中で、コーディングに費やす時間はどれくらいですか?

GitHub Copilotを使用することでより生産的に仕事ができるようになりましたか?

GitHub Copilotを使用することでより早く繰り返しの作業を完了できるようになりましたか?

GitHub Copilotを使用することでより早くタスクを完了できるようになりましたか?

GitHub Copilotを使用すると繰り返し作業に費やす精神的な負担が軽減されましたか?

1日あたり、GitHub Copilotを使用することでおおよそどれくらいの時間を節約できましたか?

その他の結果

GitHub Copilotを使用するとコーディングのストレスが軽減されますか?

GitHub Copilotを使うことで仕事に充実感を感じられるようになりましたか?

GitHub Copilotを使うことでより満足度の高い仕事ができるようになりましたか?

GitHub Copilotを使用することで作業に集中できる状態に入りやすくなりましたか?

GitHub Copilotを使用することで検索にかかる時間が短縮されましたか?

GitHub Copilotについて使い方やここが便利!など共有したいことがあれば教えてください。

  • 同じようなことを何回も記述することが減った
  • 別の箇所に書いてある内容を読み取って書いてくれるので、リファクタなど一箇所変えれば他のところも読み取って書き換えてくれる
  • コード補完がとにかく便利
  • 人が書いたコードを読み解くときにGitHub Copilotに説明してもらえるのも便利
  • ショートカット設定しておくと、キーボードから手を離さなずにできてめちゃくちゃ便利

その他の意見

  • フレームワークのソースコードを読み取るのが楽になった
  • 三項演算子やスプレッド演算子などの名称を調べるときに便利。スプレッド演算子はgoogleで検索しても「...」などでは引っ掛からなかった
  • 共有というほどではないですが、コードを説明してくれることと書いているときに補完してくれることがありがたい
  • コードの候補がでるので、時短になる
  • Seederやテスト用コードの自動作成・自動修正などは正確に作成してくれる

GitHub Copilotについてここが使いづらい....など共有したいことがあれば教えてください。

  • 長いコードを書いてくれる時は少し時間がかかるので、もう少し早くなったらいいなと思う
  • コード補完を一度に複数行生成されちゃうと、一部だけacceptするようなことができません。全部acceptしてから直すみたいな手間があるのはちょっと使いづらいかも
  • 設問にあった「繰り返し作業」をさせる発想がなかったので、試してみたい
  • 便利な使い方集や、自分はこうやって使っている、という情報共有できる場があると良さそうだなと感じた
  • コード以外のことを調べることができない

導入後アンケートまとめ

全体的に肯定的な意見が多く、生産性の向上や繰り返し作業のスピードアップなどが実感としてある回答が多くありました。
導入前の解決したい問題にアプローチすることができたので、導入して効果が出ているということが開発者のアンケートでもみることができました。
一方で、長めのコード生成に関してはまだ課題感を感じているメンバーもいるため、改善を期待すると共に、GitHub Copilotを扱う上でのテクニックやナレッジについても、見つけ次第随時共有していこうと思います。

おわりに

GitHub Copilotの導入によって、開発チームのプロジェクトによってはベロシティが1.5倍になったという報告もあり、導入効果は目に見えて出ていると感じます。
導入フローは整備しましたが、まだ使用していないメンバーもいるので、よりGitHub Copilotを利用・活用できるように働きかけ、利用率の増加とさらなる開発生産性の向上を目指し、よりよいアウトカムをだせるように活動を続けていきます。

スタイル・エッジでは、一緒に働く仲間を絶賛大募集しています。
もし興味を持っていただけましたら、以下の採用サイトも一度覗いてみてください! recruit.styleedge-labo.co.jp

参考資料

*1:チームトポロジーという組織設計のフレームワークにおける、チームタイプの一つ。

*2:公開コードに一致する提案を有効または無効にする設定について

*3:Satisfaction and well being/Performance/Activity/Communication and collaboration/Efficiency and flow の頭文字をとったもの。開発者の生産性を測るフレームワークの一つ。