LoginSignup
1
1

GitHub Copilotを使ってみた話

Last updated at Posted at 2024-05-17

はじめに

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

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

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 ナレッジ ベースの管理." を参照してください。

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

スクリーンショット 2024-05-13 123439.png

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

特徴

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

スクリーンショット 2024-05-13 123630.png

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

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

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

1. ダミーデータの作成

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

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

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

スクリーンショット 2024-05-15 122946.png

3. コメントの追加

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

unnamed.png

出来ないこと

1. モデルの選択

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

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

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

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

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

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

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

スクリーンショット 2024-05-13 150334.jpg

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

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

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

費用

 
プラン 費用($)
Individual 10 / 月、100 / 年
Business 19 / 月(1人あたり)
Enterprise 39 / 月(1人あたり)

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

スクリーンショット 2024-05-09 134455.png

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

スクリーンショット 2024-05-09 132905.png

導入方法

1. 個人利用(GitHub Copilot Individuals)

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

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

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

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

使うときのコツ

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

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

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

まとめ

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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1