Slide 1

Slide 1 text

1 GitHub Copilotで開発⽣産性はど のように変わるのか 黒瀧 悠太 (Yuta Kurotaki) 【ハイブリッド開催】GitHub Copilotで拓く開発⽣産性 2023.08.30

Slide 2

Slide 2 text

2 自己紹介 SUZURI事業部 シニアエンジニアリングリード GMOインターネットグループ デベロッパーエキスパート 黒瀧 悠太 Yuta Kurotaki SNSアカウント: @kurotaky ● ドラム ● Ruby コミュニティ ● ウェアラブルデバイスの研究

Slide 3

Slide 3 text

3 CM 「まじめにベンチャー。まじめにギーク。」~研究をしながら語る人編~GMOインターネットグループ https://www.youtube.com/watch?v=OU28_bYb27U

Slide 4

Slide 4 text

GMOペパボについて 4

Slide 5

Slide 5 text

5 今年で20周年 https://pepabo.com/20th/

Slide 6

Slide 6 text

6 GMOペパボ株式会社

Slide 7

Slide 7 text

7 事業セグメントと主⼒サービス

Slide 8

Slide 8 text

GMOペパボとGitHub 8

Slide 9

Slide 9 text

GMOペパボとGitHub 9 • 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/

Slide 10

Slide 10 text

GitHub Copilot導⼊に⾄った背景 10

Slide 11

Slide 11 text

AIしあおうぜ! GMOインターネットグループとしてのAI活⽤の推進 11 https://chatgpt.gmo.jp/ https://www.gmo.jp/news/article/8441/

Slide 12

Slide 12 text

GMOペパボとAI ⽣成AIを活⽤した機能開発や開発プロセスへの活⽤を進めてきた。 • pyama86/slack-gpt を利⽤したSlack Botの活⽤ • スリスリAIラボ テキストから画像⽣成 • アイテムの説明⽂を⾃動で作成 • 類似画像推薦機能 • ⾃然⾔語⽣成モデル活⽤ガイドライン策定 GMOペパボとして 12 https://tech.pepabo.com/2023/06/13/suzuri-similar-image-recommendation/

Slide 13

Slide 13 text

使ってみて変化したこと 13

Slide 14

Slide 14 text

GitHub Copilot 導⼊に⾄った背景 14 詳しくはテックブログで! https://tech.pepabo.com/2023/08/30/github-copilot-effects/

Slide 15

Slide 15 text

Acceptance Rates & Line of Code Accepted Acceptance Rates & Line of Code Accepted 15

Slide 16

Slide 16 text

Acceptance Rates & Line of Code Accepted • 採⽤率 30.1% • トータルの⾏数は35,000⾏ 約1ヵ⽉で35,000⾏のコードを書く時間を削減! Acceptance Rates & Line of Code Accepted 16

Slide 17

Slide 17 text

Acceptance Rates • ペパボの開発ではPHP、Ruby、Go、 TypeScriptがメイン⾔語 • Pythonは主に機械学習関連の開発や データ基盤の開発に利⽤ • PHPについては、PhpStormを利⽤して いるエンジニアが多いので実際の利⽤ 状況より少なくなっている • RubyのAcceptance Ratesが低い ⾔語ごとのAcceptance Rates 17

Slide 18

Slide 18 text

RubyのAcceptance Ratesについて “ Rubyは⾔語の表現⼒が⾼いためにCopilotの提案がプロダクトの規約や個⼈の好みに沿 わないことが多いのかもしれません。” GitHub Copilotの導⼊によってペパボの開発⽣産性はどう変化したか より https://tech.pepabo.com/2023/08/30/github-copilot-effects/ RubyのAcceptance Ratesが低い 18

Slide 19

Slide 19 text

Copilotを利⽤している開発環境 Copilotを利⽤している開発環境 19 約8割がVSCode !

Slide 20

Slide 20 text

デプロイ数の変化 20 1⽇あたりのデプロイ回数の変化

Slide 21

Slide 21 text

Four Keys 21 Four Keys https://speakerdeck.com/udzura/pepabo-four-keys Four Keys を全サービスで定点観測しています

Slide 22

Slide 22 text

定性⾯でのデータ 22

Slide 23

Slide 23 text

定性⾯でのデータ 23 • Rubyで書くときにAutocompletionの部分をCopilotでやってくれて便利 • VSCode で10⾏くらい出してくれて、便利〜 • よく分からないコードを説明してくれる • Copilot Chat でエラーの内容を説明してくれる、⽇本語にも変換してくれる • 結果的に変数などの命名をしっかりしようとなった。⼈間にも優しくなる • OSSライブラリのコードを解説してもらうのに便利 • テストコードを書いてもらえて便利 インタビューして聞いてみました (1)

Slide 24

Slide 24 text

定性⾯でのデータ • 途中まで⼊⼒して、少し補完を待つようになりました (というくらい便利) • 値の列挙とか型スイッチ( switch v := i.(type) )とかはかなり強い • という観点でASTが触りやすくなった • 平易に冗⻑に書く(過度な抽象化を避ける)テストコードなどは特に、実装にかかる 時間が短縮された • ⼈間が分かりやすいコードは採⽤したくなる妥当なコードが⽣成されて、⼈間にわ かりづらいコードでは、その逆になるような感触がある • LLMがうまく⾃動⽣成してくれそうなコードを書こう、というマインドセットに変わった インタビューして聞いてみました (2) 24

Slide 25

Slide 25 text

定性⾯でのデータ • コメントを書いて、待って、タブを押して、コメントを消すという開発が増えた • 適切に関数名書いたら⼤体思った通りに補完してくれる • 右クリックでRuboCopとかの修正してくれるのありがたい • テストの説明だけ書いたら内容全部考えてくれる • Copilot Chatによって、⽣産性爆上がりしました • 触る機会がなく知⾒が少なかった⾔語での実装で素早くプルリクを出せた • 沢⼭のtypeを持つobjectに対してtype毎にswitch-caseを⼤量に書く必要がある時 にすでに実装済みの他のコードを参考に(?)バンバン補完出してくれてめちゃ体験良 かったです インタビューして聞いてみました (3) 25

Slide 26

Slide 26 text

定性⾯でのデータ 続きは懇親会またはチャット欄で! インタビューして聞いてみました (4) 26

Slide 27

Slide 27 text

まとめ 27

Slide 28

Slide 28 text

まとめ 28 • 2つのサービスにおいてデプロイ数が向上しました • 今後は変更のリードタイムも⽐較してみる予定です • Acceptance Rates は約30%、約35,000⾏のコードを書く⼿間を削減 • インタビューにおける定性⾯のデータからも⽣産性が上がったという意⾒が多数 現状ではGitHub Copilotを導⼊して、⽣産性は上がったと考えています。 今後も計測と評価を続けていきます! まとめ