みなさん、こんにちは!
おでんチーム(WS管理画面リメイクチーム)の向後です!
最近、おでんチームが「たまご(新機能開発)」と「だいこん(既存機能移行)」チームに分割されて、チーム名おもろいなと思ってるこの頃です。
律儀にSlackのユーザーグループも作ってます(ex. @tamago, @daikon)。
今回はGitHub Copilot for Businessを社内導入したことについて話します!
※ Copilotの細かい話はしないです。導入経緯や使用感などを紹介します!
GitHub Copilotとは
コーディング中に自動補完としてコードの候補を提示し、コーディングを支援してくれるツールです。
「Copilot」は日本語で「副操縦士」です。
GitHub CopilotくんがAIペアプログラマとしてコードやコメントなどの補完候補を教えてくれます。
→ 疑似ペアプログラミングができるイメージ
見た目は結構可愛いです!(ぬいぐるみ欲しい)
詳しいことは様々な記事が出てると思うので、他の記事や公式ドキュメントを拝見してください。
以下は公式ドキュメントにある例を抜粋。
↓をIDEで入力すると
function calculateDaysBetweenDates(begin, end)
↓のような補完候補を提示してくれる。
導入した経緯
導入した時期は5月中旬〜になります。
GitHub Copilot for Businessが一般公開されたのが2月中旬なので、3ヶ月くらいで導入に至りました。
個人的には結構早い方かなと思います!
導入を推進していただいた長田さん(CTO)に軽くインタビューしたので紹介します!
導入のきっかけは?
テックトークで個人利用している人がどのくらいいるか聞いたときに、Copilotに関して思ったよりも関心が低く組織として推進したほうが良いなと感じたからです。
目的は?
- 時間の節約、生産性の向上
- コードの品質向上
- 学習の促進
など。
向後の使ってみた感想になってしまいますが、生産性の向上が一番大きいなと思いました。
単純な作業、面倒な作業などをCopilotくんがやってくれるので、設計や複雑なロジックの実装に注力しやすくなったイメージです。
最近、生成型AIの話で盛り上がっていますが、リスク管理をした上で新しい技術を組織として導入、推進していただけるのはエンジニアサイドとして嬉しいですね!
個人契約のGitHub CopilotやChatGPTのサブスク費用を補助してくれる制度欲しいなと思ったので、インタビューついでに打診してみました笑
チリツモで意外と負担になるんですよね…
使用感、経験談
社内導入してから1ヶ月程度経ったので、メンバーに使用感や経験談をヒアリングしてみました!
今回は「random-tech」という技術系の情報共有チャンネルで募集。
レスポンスも早く大変助かりました。
みなさん、ご協力ありがとうございます!mm
Vue.jsのscript setup移行のProps補完
script setup構文に移行するタスクで楽に移行できた。
※ propsの種類が多くなると間違っている部分や補完されない部分があった(ex. オプショナルの有無など)。
バックエンドのクラス間詰め替えの補完
DTOクラスの提案
先にロジックだけ書いたらDTO(Data Transfer Object)クラスを提案してくれた。
ORMEntity to DomainEntityの詰替
ORM(Object Relational Mapping)Entity: HogeEntityからDomainEntity: Hogeに詰替する例
テストメソッドの提案
メソッド名やコメントを書くだけで、ある程度の精度でテストメソッドを提案してくれた。
類似するテストコードがあると精度が高い。
コードコメントの自動生成
コメントを残したいときにコードコメントの接頭辞(ex. 「//」,「#」)を関数の上部などに追加すると、ざっくりコメントしてくれた。
コメントがないコードでどのようなメソッドなのか知りたいときにも使えるので便利。
まとめ
業務で使ってみた感想としては、簡単なこと、面倒なことをCopilotくんがやってくれるだけで、生産性が凄く上がるなと感じました!
効率化によって余裕ができたら、その分リファクタなどの改善活動などに割り当てれるのでプロダクトの成長に注力しやすい。
Copilotくん、入社してくれてありがとうmm(長田さん、ありがとうございますmm)
注意点としては、「補完は完璧ではない」ことです。
提案されたコードは実装者の責任で使用するのが原則になります。
たまに間違えたり、チンプンカンプンな提案をするのはCopilotくんの愛嬌ですね!笑
以上、GitHub Copilot for Businessを社内導入した話でした!