SansanにおけるGitHub Copilot導入までの流れと、ツールのレビュー
Sansan株式会社 / wakuwaku3
利用プラン | ツールの利用規模 | ツールの利用開始時期 |
---|---|---|
GitHub Copilot for Business | 101名〜300名 | 2023年2月 |
利用プラン | GitHub Copilot for Business |
---|---|
ツールの利用規模 | 101名〜300名 |
ツールの利用開始時期 | 2023年2月 |
導入の背景・解決したかった問題
導入背景
Sansanでは2023年4月下旬より、利用希望者に向けてGitHub Copilot(以下、Copilotと表記)の導入を開始しました。
以前から個人開発でCopilotを利用していたエンジニアから利用したいという声が上がっていたのですが、社内コードの流出や、Copilotの提供するコードを適用した際に起こるライセンス侵害などに懸念があったため導入を見送っていました。
そんな中、2023年2月にGitHub Copilot for BusinessというCopilotのビジネス向けプラン一般提供を開始したことを受け、導入の検討を開始しました。
GitHub Copilot for Businessは、ユーザーが入力したコードを学習する際に、公開されているコードのみを使用します。そのため、社内コードが流出するリスクはありません。また、提供するコードのライセンス情報を明示的に表示する機能があり、ユーザーはコードを適用する前にライセンスを確認し、ライセンス侵害のリスクを避けることができます。
ただし、この時点ではCopilot導入による効果がコストに見合うものかがわからなかったため、まずは希望者のみに利用してもらって効果測定をしたうえで、継続利用を行うか改めて判断するという流れでGitHub Copilot for Businessを導入しました。
選定理由
導入については別の方が担当したため割愛させていただきます。
導入の成果
Copilotの利用状況は設定画面からCopilotを利用中のユーザー一覧と最終利用日、利用IDEの情報を取得できます。さらに詳細を知りたい場合は、APIから情報を取得できます。(ただしこのAPIは2024年4月現在、アルファ版での公開になっているため変更される可能性があります)ここでは以下の情報を表示できます。
- Copilotを使っている環境の比率
- Accept Rate(Copilotの推薦の採用率)
- 言語別のAccept Rate(Copilotの推薦の採用率)
また当社では、利用者の実感を測定するために、利用者に対してCopilot利用に関するアンケートを行いました。
利用開始から3カ月後の実際の利用状況は こちらのブログ記事 に詳細を記載しています。
当社では、この時点で節約した時間数から費用対効果がそれなりにあると判断し、希望者に対しての継続利用を決定しました。
導入に向けた社内への説明
上長・チームへの説明
導入については別の方が担当したため割愛させていただきます。
活用方法
- コード補完
コード補完の導入は簡単で、利用しているIDEにCopilotのプラグインをインストールし、GitHub で認証を行うだけです。開発者であればプラグインのインストールは日常的に行っていますし、プラグインをインストールすれば認証はウィザードに従っていれば良いので導入を非常に簡単に行えます。
この状態でコードを書いていれば、適宜Copilotによるコードの推薦が行われるのでTabキーを押せばコードを適用できます。
2. Copilot Chat
当社ではコード補完に加え、Copilot Chatも開放しています。こちらもコード補完同様にプラグインをインストールすることで有効になります。
Copilot ChatはChat GPTのようにシンプルな会話も行えますが、より専門的な機能としてアクションを実行することも可能です。例えば `@workspace /explain` のようなアクションを実行すると、現在開いているファイルに書かれたコードで実行されている内容を説明してくれます。また、Copilot Chatにはインラインチャットという機能があり、エディタからも呼び出せます。例えば、エディタ上で任意の関数を範囲選択し `/test` アクションを実行すると、テストを生成してくれたり、書き換えをお願いすると選択範囲を指示に従って書き換えた内容を提示してくれたりします。
よく使う機能
コーディングアシスタントとして活用しています。
ツールの良い点
- 導入が簡単
IDEにプラグインをインストールすることも、補完をTabキーで受け入れることも、普段のコーディングの中に織り込まれた所作なので、特に学習コストをかける必要なくツールの利点を享受できます。
2. お決まりのコードの記述速度が上がる
これまではお決まりのコードの記述も人間がタイピングして記述する必要がありましたが、この手のコードはCopilotがかなり精度高く補完してくれます。例えば、Goでファイルを開く処理を記述する場合、 ファイルを開いた時のエラーをハンドリングすることと、開いたファイルをクローズする処理を書く必要があります。
```go file, err := os.Open("file.txt") if err != nil { return nil, err } defer file.Close() ```
今回この記事を書くにあたって、実際にこのコードを書いてみたところ、 `file,` まで入力したあとはひたすらTabキーを押すだけで上記のコードが書けました。 他にも同じファイル内に似たような記述がある場合もどんどん補完してくれるので、類似のコードを書くのが楽になる印象です。
3. 複雑なコードの記述速度も上がる
例えば、複雑な正規表現を伴う処理や、階層構造を伴うようなオブジェクトの操作は今まで頭を悩ませながら書いていたと思います。Copilotを使えば、チャット形式でコードを書いてもらい、同時にテストコードも生成してもらうことによってスピーディーに実装が可能です。この場合、記述してもらったコードの正当性はテストコードで担保できます。
ツールの課題点
- コードの提案内容の品質にばらつきがある
Copilotの提案するコードの品質はまちまちです。同じようなコードを書いていても、これだ!と思うようなコードを提案してくれることもあれば、全然違うというコードを提案してくることもあります。また一見これだ!と思うコードでも、よく見るとifの判定対象が逆になっているといった微妙に誤ったコードを提案してくることもあります。
この課題によるリスクを下げるにはテストを実行するのが一番なのですが、テストコードも Copilotに補完させた場合、Copilotはテスト対象のコードも参照にして補完を行うため、テストも誤ったまま実行されて不具合が発生してまうことがあります。
補完内容を安易に適用するのではなく、人間による訂正は必要な前提になっていると思っています。
2. 生産性の向上を数値として証明しにくい
上述するように補完内容は人間による訂正が必要なのですが、これを踏まえた生産性向上を数値として示すことは難しいです。Accept Rateはあくまで推薦の採用率であり、プロダクションコードとして品質を担保した状態にするまでにどれくらいの時間がかかったかは算出できないためです。とはいえ、開発者としてコードを実際に書いてみると生産性が向上していることは簡単に体感できると思います。
ツールを検討されている方へ
ある程度Copilotを使って実際にコーディングを行ってみるとわかるのですが、Copilotを使った状態でより高速に実装を行おうと考えると普段の書き方とは違う書き方になっていくことに気づきます。例えば、今まではタイピング量を減らすために避けていた冗長な書き方であっても、Copilotが補完してくれるためそういったコードに対しての記述が苦ではなくなります。また今までは複雑なコードに対して後でコメントをつけることが多かったと思いますが、先にコメントを書いておけばCopilotがそのコメントを理解してコードを推薦してくれるようになるので、コメントを先に書くような書き方になっていきます。 つまり、どのようにコードを書けばCopilotをより活用できるかという観点でコーディングスタイルが変化していきます。
私はここにコーディングにおけるパラダイムの変化を感じています。これからの時代、生成AIがより活用されていきますが、エンジニアはこの変化により早く対応していく必要があると感じています。Copilotはもちろん、新しいツールを導入する際には、開発生産性の向上にどれだけ寄与するかという観点で判断されると思いますが、変化に適応するという観点で考えてみても面白いのかなと思います。
また、社内に浸透させるという観点ではCopilotを使ってどのように生産性を上げていくかをエンジニア同士でディスカッションしてみても良いと思います。
Sansan株式会社 / wakuwaku3
よく見られているレビュー
Sansan株式会社 / wakuwaku3
レビューしているツール
目次
- 導入の背景・解決したかった問題
- 活用方法