TECH BLOG
新人エンジニアがGitHub Copilotを使ってみた。
はじめまして、Marketing Solution Division,Service Design Unit所属 ソリューションエンジニアの相沢です。今回は、新人エンジニアの私がエンジニア向け研修中に利用した「GitHub Copilot」について、”新人エンジニアが使うことでどのような良いことがあるか”についてお話しします。
1.GitHub Copilotとは
GitHub Copilotとは、一言でいうと「AIが自動で条件に合うコードを提案してくれるサービス」です。こんな機能を実現したい!とコメントした内容をコードにしてくれたり、既にあるコードを修正する際に他のコードの内容に倣った形でプログラムを作ってくれたりします。ChatGPTでも同様のことができますが、GitHub Copilotはコーディングに特化したAIで、コードを実際に書くコードエディタ上で使うことができます。加えて、毎回質問せずともスマホの予測変換のようにコードを提案してくれるので、より効率的にプログラムを作成することができます。では、実際にGitHub Copilotを使った画面をお見せしながら、どのような良いことがあるかをお話ししていきます。
2.GitHub Copilotを使ってみた
ここでは、GitHub Copilotがコードをどのように提示してくれるかの二つの例を示します。
まず初めに、”作りたいもの”をコメントに入力したときの動きをお見せします。この例では、Go言語で作るのでファイル名をtest.goで作成し、作りたいものとして「1~50までの乱数を生成する関数」をコメントに記入しています。
すると、GitHub Copilotはコメントに書いた”実装したい内容に合ったコード(画像のグレー文字の部分)”を提示してくれます。このコードの内容は、”0~49までの整数をランダムで生成してくれる関数の値に+1をした値を返してくれる”という内容で、コメントに入力した”作りたいもの(1~50までの乱数を生成する関数)”を生成してくれています。
続いて、必要なものを補完してくれる機能の動きをお見せします。この例では、”新しいユーザーを作成する関数”を途中まで書いています。
すると、GitHub Copilotは別のファイルで定義していたmodel.Userの構造体(下の画像)を参考にして、「Icon」、「EmailAddress」のフィールドを提示してくれました。
このようにコードを途中まで書くと、GitHub Copilotが内容を理解し、プログラムに必要と思われるものを補完してくれます。候補に挙がったコードはtabキーで入力まで行えるので、考える・調べる時間に加えて、入力する時間までも短縮することができます。
3.新人エンジニアが使うメリット
いざプログラミングを始めてみると、”初学者がはまりやすい罠”というものがいくつかあります。例にもれず私自身も罠にはまり、既に何度も挫折しています。時には失敗も必要ですが、最初から何度も転んでしまうと、立ち上がるのが大変ですよね。そんなときに手を差し伸べてくれるのがGitHub Copilotなのです。GitHub Copilotを使うことで、”初学者がはまりやすい罠”をいくつも回避することができます。
直面した罠 その1 何から調べればよいのかわからない
プログラミング初学者は、エンジニアリングに取り掛かる際に”まず何から調べればよいか”がわからないことがあるかと思います。「このWebアプリに記事の一覧を取得する機能を作ってくれ」と言われたときに、「Webアプリ」や「一覧取得機能」などのわかっているワードから調べ、調べた中でさらにわかったワードを調べ、さらにわかったワードを…を繰り返して、実現したいものに必要な情報を穴埋めしていくことが多いと思います。しかし、その過程では、筋違いな方向に検索を進めてしまい、次につながるワードが途切れてしまったり、間違いや古い情報に当たってしまったりして、適切な情報にたどり着けないことがあります。そんなときにGitHub Copilot Chat(以下、Copilot Chat)を活用することで、関連するワードから具体的な手順まで知ることができます。
この例では、「goで記事の一覧を取得する機能を作りたいです。」とCopilot Chatに対して質問しています。
すると、Copilot Chatは具体的な手順を1~5で示し、具体的なコードも返してくれました。
これにより、
- 初めから具体的な作業イメージをつかむことができる
- 実装に必要なコードを得ることができる
- 検索のヒントに用いることができるワードを知ることができる
という3つのメリットを享受することができます。
直面した罠 その2 参考コードのどの部分を変更すればよいかわからない
Copilot Chatを利用してコードを生成した場合や、参考コードをインターネットの記事から見つけた場合、そのまま使えるわけではなく、自分が作りたいものと差分があることが大半だと思います。その場合には、どの部分を自身で変える必要があるかを判断するために、さらなる調査が必要になります。知識を身に着けるために調べることも重要ですが、調べるたびにわからないことが増えて頭がパンクしてしまっては元も子もありません。また、膨大に時間がかかってしまうこともあります。しかし、GitHub Copilotに自身が作りたいコードの内容を教えることで、適切にコードを書き換えてくれます。
この例では、”直面した罠 その1”で質問した「goで記事の一覧を取得する機能を作りたいです。」という内容に対して出力されたコードに、次の2つの指示を出しています。
- 関数等で使われている「articles」という名前を「topics」に変えてほしい
- 著者の情報を加えてほしい
するとCopilot Chatは、2つの指示の内容に合わせて修正したコードを提示してくれます。
1については、コード全体を通して、単数形/複数形に関わらず、該当する箇所を修正してくれています。
2については、「誰が書いたか」に合わせてAuthorという情報を追加してくれています。
このように指示が多少曖昧でも、Copilot Chatが内容を考慮して、適切に修正をしてくれます。
直面した罠 その3 タイミングよく回答が得られない。
何かわからないことがあったときにインターネットや書籍を利用して調べてもわからないことは日常茶飯事だと思います。そんなとき、先輩エンジニアやプログラミングスクールの先生、オンラインのチューターに質問をすると思いますが、回答待ちの時間があったり、頻繁に会話ができない場面があったりとタイミングよく回答が得られないことがあるかと思います。そんなときにCopilot Chatを使うことで、数十秒で回答がもらえたり、インタラクティブに会話したりすることができます。加えて、拙い文章で質問してもCopilot Chatが不明瞭な部分を丁寧に質問して返してくれます。これらにより、わからないことが出たタイミングでCopilot Chatに質問することで、作業を中断することなく、迅速に疑問を解消することができます。
この例では、GitHub Copilotが提案した関数の意味が分からなかったので解説をお願いしています。
するとCopilot Chatは、処理の内容を関数名や構造体の名前を交えながら解説してくれています。それでもわからない部分がある場合には、その部分をチャットで質問することで、更に詳しい解説をしてくれます。
4.全エンジニアが使うメリット
上記3つの新人エンジニアが使うメリットに加えて、全エンジニアにとってのメリットもあります。それは、”自身が書いているコードを元に提案をしてくれること”です。プログラムや関数に関する質問はChatGPTでも同様にすることができますが、前提条件や現在のコードの状況を入力する必要があります。一方で、GitHub Copilotでは、コードエディタ上で利用することができるため、開いているファイルの情報を考慮した提案を行ってくれるのです。そのため、前提条件や現在のコードの状況をAIに学習させる時間を削減して効率よく情報を得ることができます。
5.使った感想
個人的な感想としては、GitHub Copilotを使って”時間”と”品質”の観点で効率が上がったと感じています。
【時間に関して】
“適切な情報にたどり着くまでの時間”が大幅に短縮されたと感じています。通常の検索では、検索ワードが適切でないために”ほしい情報”にたどり着けなかったり、それらしい内容にたどり着いたものの情報が古かったりする場合があるため、何度も調べ直し時間がかかることが多いです。一方でGitHub Copilotは、ワードなしに調べる(この部分を〇〇したい等)ことができたり、比較的新しい情報を元にした回答を返してくれるため、短時間で”ほしい情報”を得ることができると感じました。
【品質に関して】
変数や関数の命名時に”統一感”があり、”内容がわかりやすい”名前を提示してくれるため、可読性が高いコードを書くことができると感じました。
6.まとめ
GitHub Copilotを使うことで、効率よく開発を進めることができます。
特にプログラミング初学者にとっては、
- 何をすべきか・関連するワードを提示してくれる
- 自身の作りたいものに合わせてコードをカスタマイズしてくれる
- いつでも質問ができる
というメリットがあります。
すべてのエンジニアに向けては、
- 前提条件や現在のコードの状況をAIに学習させることなく自身のコードを元に提案をしてくれる
というメリットがあります。
この記事を読んで、少しでもGitHub Copilotに興味を持っていただけましたら幸いです。
ぜひ、GitHub Copilotを使ってみてください。