GitHub Copilotを使ってみた話

はじめに

こんにちは!HYPER CUBEのフロントエンドエンジニアのMです🌞

個人で使っていたGitHub Copilotが会社にも導入されたため、これを機会に個人的感想も踏まえながら記事にまとめてみました。

GitHub Copilotとは?

https://docs.github.com/ja/copilot/about-github-copilot

GitHub Copilotとは、一言でいうと「AI コーディング アシスタント」です。
主に開発者がIDE上で使用し、プログラミングのコーディング作業の効率化や生産性の向上が可能です。その他にも様々なメリットがある優れものです!
導入前と比べてタイピング量が格段に減りました。

導入できるIDE

  • Visual Studio Code
  • Visual Studio
  • Vim / Neovim
  • JetBrains IDEs
  • Azure Data Studio

出来ること

・コード補完 – 入力中に Copilot からコードが提案されます。 詳しくは、「GitHub Copilot の概要」を参照してください。
・チャット – コードに関するヘルプを Copilot に尋ねます。 詳細については、「IDE での GitHub Copilot チャットの使用」を参照してください。
・pull request の概要 (Copilot Enterprise のみ) – Copilot に pull request の変更について説明させます。 詳しくは、”Copilot pull request の概要について.” を参照してください。
・ナレッジ ベース (Copilot Enterprise のみ) – Copilot とのチャットのコンテキストとして使用するドキュメントのコレクションを作成および管理します。 詳しくは、”Copilot ナレッジ ベースの管理.” を参照してください。

https://docs.github.com/ja/copilot/about-github-copilot#github-copilot-%E3%81%AE%E6%A9%9F%E8%83%BD

↑公式ドキュメントにはこのように書かれています。

コードを入力するとCopilotからの提案でグレーのテキストが表示されます。次にTabキーを押すことでその提案を受け入れることができます。

特徴

  • 多数の言語に対応していて、特にPython、JavaScript、TypeScript、Ruby、Go、C#、C++に適している。
  • 開いている現在のファイルだけではなく、プロジェクト全体のファイルの情報も含めた提案を行ってくれる。(これがめっちゃいい!)
  • コメントアウトで提案や質問をするとそれに対応したコードが提案される。

例えば、テンプレート化できないページ数の多いサイトを手作業でコーディングしていくのは大変ですが、Copilotを使えば2時間40分を1時間10分に短縮できると研究結果として発表されています。実際に私の体感としても1時間を40分くらいには減らせている気がします!

コーディングの時間短縮だけではなく、エンジニアが退屈と思うコードを書くことが減るため、ストレスフリーに作業を進められ結果質をあげることができます。

実際に使っていてよかったこと

1. ダミーデータの作成

オブジェクトの中身を整形したい時に、どこかにダミーでもコメントアウトでもいいので書いておくとそれをもとに整形処理を書いてくれたりします。他にも、フロントエンドで必要なデータをまだもらえていないときに繋ぎこみのためのダミーデータをランダムに出力してくれたりもします。

2. 反復するコードの一括提案

フロントエンドって退屈な反復作業がめっちゃ多いですよね。そこだけでもCopilotが解決してくれれば、好きなことに集中できて作業効率が上がるわけです。

3. コメントの追加

コメントで説明を付け加えたいときなんかに処理を分析して提案してくれるため、関数などの処理の説明を考えなくても済みます。

出来ないこと

1. モデルの選択

CopilotはGPT-3.5を使用しているようで、GPT-4ほど高性能ではありません。後に発表されたGitHub Copilot ChatはGPT-4を一部で使用できるようです。
GitHub Copilot ChatはIDE上でチャットベースで会話ができるサービスです。WEBサイトのChatGPTと比べて、エディタの中選択しているコードを参照してくれるためこちらも導入してもよさそう。

2. 訳も分からず提案のすべてを受け入れるとかえって効率が悪くなる

やっぱりCopilotに頼り切ってしまうと、コードの難易度にもよりますが、かえって効率が悪くなってしまう気がします。例えば、自分が理解できていないメソッドや処理を受け入れてばかりいると、途中で頓珍漢なコードを受け入れてしまい、最終的にどこで躓いたか分からなくなったり…。

3. モダンな提案がされない

ChatGPTにも同じことが言えますが、サイトで調べて得られる情報より一昔前のコードを提案してくることがあります。モダンな開発をしたい方にとっては嫌かもしれませんね。

プライバシーは守られる?

企業でCopilotを導入する場合、書いたコードをAI学習用にアウトプットされるリスクと著作権のあるコードをインプットしてしまうリスクを考える必要があります。

前者のリスクについては、公式が「GitHub Copilot は、パブリック リポジトリに表示されるすべて言語でトレーニングされます。」と明言していて、プライベートリポジトリは学習されないとあります。そして、ビジネスプラン以上ではコードスぺニットはデフォルトでGitHubに保存されないとあり、個人プランでは「プロンプトと候補を GitHub が保持し、Microsoft と共有するかどうかを決定するオプションがあります。」とあります。

後者のリスクに関しては、公式の下記ページでパブリックな約150字のコードをまるっと提案することを制限するオプションがあります。

https://docs.github.com/ja/copilot/configuring-github-copilot/configuring-github-copilot-settings-on-githubcom

ただ、このあたりの規約に関してはGitHub依存になるため、突然私たちに不利な規約変更をされてしまったら、利用を続けるかやめるかの判断をしなければなりません。その必要も考えた上での導入をお勧めします!

費用

  • Individual:$10 / 月、$100 / 年
  • Business:$19 / 月(1人あたり)
  • Enterprise:$39 / 月(1人あたり)

https://github.com/pricing

こちら公式ドキュメントです。

https://docs.github.com/ja/copilot/copilot-individual/about-github-copilot-individual#copilot-individualcopilot-businesscopilot-enterprise-%E3%81%AE%E9%81%95%E3%81%84%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B

プランによってこのように機能が異なります。

導入方法

1. 個人利用(GitHub Copilot Individuals

https://github.com/pricing

課金するにあたってはGitHubアカウントを作成します。
上記URLからプランを選んでorganizationをセットアップしましょう!

2. チーム・企業利用(GitHub Copilot Business、GitHub Copilot Enterprise)

https://docs.github.com/ja/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot#github-copilot-business-%E3%81%8A%E3%82%88%E3%81%B3-github-copilot-enterprise-%E3%81%AE%E8%AA%B2%E9%87%91%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

チームの代表がユーザーに対して権限シートを与えることができます。ユーザーは権限を与えられたGitHubアカウントでログインしたIDEにプラグインをインストールすることで使用できます。

  • GitHub Copilot Business: 中規模のチームや部署向けで、特定数のユーザーにシートを割り当てることができます。
  • GitHub Copilot Enterprise: 大企業向けで、より広範囲のカスタマイズや統合が可能であり、多数のユーザーに対応しています。

使うときのコツ

https://qiita.com/masakinihirota/items/0e58a6b921e4420a2882

便利なショートカットキー

  • 提案を受け入れる:TAB キー
  • 提案を拒否する:Esc キー
  • まとめて提案を表示させる:Ctrl+Enter キー
  • 提案を単語単位で受け入れる:Ctrl + 右矢印キー
  • 提案を単語単位での受け入れを元に戻す:Ctrl+b
  • 次の提案を見る:Alt +]
  • 前の提案に戻る:Alt +[
  • インライン候補をトリガーする:Alt +/

今まではなんとなくでTabキーで実行を繰り返しているだけでしたが、ショートカットキーに使い慣れていたほうがCopilotのメリットを最大限に発揮できそうです!

まとめ

GitHub Copilotにちらっと触れてみましたが、いかがでしたか?
正直Copilotを使い始めてから、使用不可なプロダクトに入ると少しやりずらいなぁと感じる程度には効果を感じます!
また、「とりあえず提案されたものはすべて使っていこう~」とか「このコード意味わかんないけどいっか」で進めていると汚いコードが完成されてしまうため要注意で、「Copilotに使われる」のではなく使いこなしていく意識も大事だと思いいました。
これらを踏まえて、まだ導入してないよって方はこれを機に使ってみることをお勧めします!!


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA