【ハイブリッド開催】GitHub Copilotで拓く開発生産性 https://timeedev.connpass.com/event/292962/ 事例セッション「GitHub Copilotで開発生産性はどのように変わるのか」
1GitHub Copilotで開発⽣産性はどのように変わるのか黒瀧 悠太 (Yuta Kurotaki)【ハイブリッド開催】GitHub Copilotで拓く開発⽣産性2023.08.30
View Slide
2自己紹介SUZURI事業部 シニアエンジニアリングリードGMOインターネットグループ デベロッパーエキスパート黒瀧 悠太 Yuta KurotakiSNSアカウント: @kurotaky● ドラム● Ruby コミュニティ● ウェアラブルデバイスの研究
3CM「まじめにベンチャー。まじめにギーク。」~研究をしながら語る人編~GMOインターネットグループhttps://www.youtube.com/watch?v=OU28_bYb27U
GMOペパボについて4
5今年で20周年https://pepabo.com/20th/
6GMOペパボ株式会社
7事業セグメントと主⼒サービス
GMOペパボとGitHub8
GMOペパボとGitHub9• 2012年〜 github.com を利⽤• 2014年〜 GitHub Enterprise(GHES)を利⽤• 2016年〜 GHESとgithub.com/pepabo の併⽤GitHubの利⽤の歴史https://recruit.pepabo.com/partner/slide/pages/2017/06/01/github-enterprise-de-shi-shi-womotutoomosirokudekiru/
GitHub Copilot導⼊に⾄った背景10
AIしあおうぜ!GMOインターネットグループとしてのAI活⽤の推進11https://chatgpt.gmo.jp/https://www.gmo.jp/news/article/8441/
GMOペパボとAI⽣成AIを活⽤した機能開発や開発プロセスへの活⽤を進めてきた。• pyama86/slack-gpt を利⽤したSlack Botの活⽤• スリスリAIラボ テキストから画像⽣成• アイテムの説明⽂を⾃動で作成• 類似画像推薦機能• ⾃然⾔語⽣成モデル活⽤ガイドライン策定GMOペパボとして12https://tech.pepabo.com/2023/06/13/suzuri-similar-image-recommendation/
使ってみて変化したこと13
GitHub Copilot 導⼊に⾄った背景14詳しくはテックブログで!https://tech.pepabo.com/2023/08/30/github-copilot-effects/
Acceptance Rates & Line of Code AcceptedAcceptance Rates & Line of Code Accepted15
Acceptance Rates & Line of Code Accepted• 採⽤率 30.1%• トータルの⾏数は35,000⾏約1ヵ⽉で35,000⾏のコードを書く時間を削減!Acceptance Rates & Line of Code Accepted16
Acceptance Rates• ペパボの開発ではPHP、Ruby、Go、TypeScriptがメイン⾔語• Pythonは主に機械学習関連の開発やデータ基盤の開発に利⽤• PHPについては、PhpStormを利⽤しているエンジニアが多いので実際の利⽤状況より少なくなっている• RubyのAcceptance Ratesが低い⾔語ごとのAcceptance Rates17
RubyのAcceptance Ratesについて“ Rubyは⾔語の表現⼒が⾼いためにCopilotの提案がプロダクトの規約や個⼈の好みに沿わないことが多いのかもしれません。”GitHub Copilotの導⼊によってペパボの開発⽣産性はどう変化したか よりhttps://tech.pepabo.com/2023/08/30/github-copilot-effects/RubyのAcceptance Ratesが低い18
Copilotを利⽤している開発環境Copilotを利⽤している開発環境19約8割がVSCode !
デプロイ数の変化201⽇あたりのデプロイ回数の変化
Four Keys21Four Keyshttps://speakerdeck.com/udzura/pepabo-four-keysFour Keys を全サービスで定点観測しています
定性⾯でのデータ22
定性⾯でのデータ23• Rubyで書くときにAutocompletionの部分をCopilotでやってくれて便利• VSCode で10⾏くらい出してくれて、便利〜• よく分からないコードを説明してくれる• Copilot Chat でエラーの内容を説明してくれる、⽇本語にも変換してくれる• 結果的に変数などの命名をしっかりしようとなった。⼈間にも優しくなる• OSSライブラリのコードを解説してもらうのに便利• テストコードを書いてもらえて便利インタビューして聞いてみました (1)
定性⾯でのデータ• 途中まで⼊⼒して、少し補完を待つようになりました (というくらい便利)• 値の列挙とか型スイッチ( switch v := i.(type) )とかはかなり強い• という観点でASTが触りやすくなった• 平易に冗⻑に書く(過度な抽象化を避ける)テストコードなどは特に、実装にかかる時間が短縮された• ⼈間が分かりやすいコードは採⽤したくなる妥当なコードが⽣成されて、⼈間にわかりづらいコードでは、その逆になるような感触がある• LLMがうまく⾃動⽣成してくれそうなコードを書こう、というマインドセットに変わったインタビューして聞いてみました (2)24
定性⾯でのデータ• コメントを書いて、待って、タブを押して、コメントを消すという開発が増えた• 適切に関数名書いたら⼤体思った通りに補完してくれる• 右クリックでRuboCopとかの修正してくれるのありがたい• テストの説明だけ書いたら内容全部考えてくれる• Copilot Chatによって、⽣産性爆上がりしました• 触る機会がなく知⾒が少なかった⾔語での実装で素早くプルリクを出せた• 沢⼭のtypeを持つobjectに対してtype毎にswitch-caseを⼤量に書く必要がある時にすでに実装済みの他のコードを参考に(?)バンバン補完出してくれてめちゃ体験良かったですインタビューして聞いてみました (3)25
定性⾯でのデータ続きは懇親会またはチャット欄で!インタビューして聞いてみました (4)26
まとめ27
まとめ28• 2つのサービスにおいてデプロイ数が向上しました• 今後は変更のリードタイムも⽐較してみる予定です• Acceptance Rates は約30%、約35,000⾏のコードを書く⼿間を削減• インタビューにおける定性⾯のデータからも⽣産性が上がったという意⾒が多数現状ではGitHub Copilotを導⼊して、⽣産性は上がったと考えています。今後も計測と評価を続けていきます!まとめ