若手エンジニアがGitHub Copilotに触れる
こんにちは。
エンジニアの山下です。
サービシンクではAIが我々の仕事に与える影響を肌で実感し、AIと共存できるエンジニアになるための取り組みの一環として、会社負担でGitHub Copilotの使用が許可されています。
現状のAIにできることやできないこと、得意なことや不得意なことを肌で触れ理解し、AIを「我々から仕事を奪う存在」ではなくて「我々を助ける存在」として捉えて活用することが必須になるという代表 名村の考えです。
当ポストではそんな代表の元で育つ4人の若手エンジニアが実際にGitHub Copilotを使用して得た感触や、今後どう活用していくのかを対談形式で綴ります。
自己紹介
1週間GitHub Copilotに触れてみてどうでしたか?
山下
早速ですが、1週間GitHub Copilotに触れてみてどうでしたか。
正木
1からプログラムを書く機会があまりなかったので、GitHub Copilotの本領を発揮する事はできませんでしたが、Laravelのlog関数を使って値を確認する作業を2・3回繰り返す中で、自動でプログラムを作成してくれるのはすごく便利でした。
山下
繰り返すと欲しいサジェストにより近づきますよね。
1回目より2回目、2回目より3回目といった具合で、だいたい3回目くらいになると100点のサジェストが表示される感覚です。
村林さんはどうでした?
村林
SQLを作成する際にすごく楽だなというふうに思いますね。例えばテーブルのカラム名や関連する値を補完してくれました。
特に、決まり切ったことをやる時や反復するコードを書くときはすごく楽ですね。
ただ、複雑なコードを書きたいときは、自分で正確に伝える能力が足りず、思ったものにならないこともありました。
山下
千代坂さんはどうでしたか?
千代坂
僕も皆さんと同じで、決まりきった作業のようなコードを書いていくときは、的確なサジェストが返ってきた印象です。
先に具体的なコメントを書くとちゃんと期待するコードが返ってきました。
また、コメントを書かなくてもサジェストしてくれるのは凄いと思いました。
ただ、あくまでも先読みであるため、期待しないコードが返ってくることが多くありました。
使用感はシンプルで良かったです。
(コメントで指示をした際のサジェスト(カーソルから先がサジェスト))
(コメント無しで生成されたサジェスト)
山下
今まで使っていたVSCodeの補完機能と比較してどうですか?
千代坂
コメントで指示を書いて提案されるサジェストの内容は良かったのですが、コメントがないと期待しないサジェストが返ってくることが多くて。
なのである程度のコード補完であれば、個人的にはVSCodeの補完機能で充分な気もします。
山下
ありがとうございます。
3人ともこの1週間で長所も短所も感じていますね。
具体的に業務で役に立ったシーンを教えてください
山下
では、具体的に業務で役に立ったシーンを教えてください。
村林
反復して似たようなコードを書くときや、分かりきっていることを書くことがなくなり業務効率が上がったなと思います。
山下
わかります。パッとサジェストが出てきてくれますもんね。 他の2人はどうですか。正木さんと千代坂さんも同じですか?
正木
同じ感じですね。Laravelのlog関数の使用頻度が高いので、その部分の変数名をコピーアンドペーストする作業が以前は多くありましたが、GitHub Copilotを使用してからは「logger」と入力した時に一発で変数名を予測して入力してくれます。作業時間の短縮になるので効率的だと感じています。
千代坂
僕も同じで、決まりきったテンプレートのようなコードをたくさん書く時のみ、効率化できたかなって思います。それ以外ではまだ効率化できたとは言えないです。
山下
ただ、コーディングの鉄則で「Don't repeat yourself」ってよく言うじゃないですか。そこには注意ですね。
まあ、それでも似たようなコードを繰り返し書く作業も業務で出てくると思うので、そういった場面で使用するのは結構いいかもしれないですね。
千代坂
はい。そういった繰り返しの処理はAIに任せてしまうのが良いかもしれないですね。
GitHub Copilotがなかったら解決できなかった問題はありましたか?
山下
GitHub Copilotがなかったら解決できなかった問題はありましたか?
例えばすごく仕様が複雑で、どうしても自分だけだと時間がかかる処理を書くことになるけど、GitHub Copilotを使ったらすごくシンプルで速度も速いコードが出来たとか。
千代坂
僕は「GitHubCopilotによって実装できなかった処理ができた」とかではないんですけど、メソッドやクラスの命名で迷った時にGitHub Copilotが命名してくれたので、その点はありがたかったです。もしGitHub Copilotを使っていなかったら、命名の部分で先輩方からご指摘を受けていたかもしれません。
山下
確かに、自分の知らない単語とかもたまに出てきますよね。命名する際に選択肢が増える点は良いと思います。
正木さんはどうですか。
正木
主な作業がテストコードの修正のため1からプログラムを書く機会がなかったのですが、業務日報を書く際にGitHub Copilotを使用しています。
業務日報を記入する際に、前半の文章を書くとGitHub Copilotが後半の内容を予測して生成してくれるので、GitHub Copilotが作成した後半の文章を、自分の言いたい内容に修正して使用しています。
山下
日報に活用するなんて個人的には意外でした。自分も試してみます。
GitHub Copilotにとって自然言語の文章があるのとないのとでは、大きな差なのかもしれませんね。
業務日報は日本語をかなり書くと思うので、文脈であったり構造から続きを推測してくれているのかもしれないですね。
千代坂
僕の場合は返ってくるサジェストに対して一発で決定することはほとんどありませんでした。
サジェストを一通り確認してその中から選んだり、選ばなかったりすることが多かったです。
期待するサジェストが返ってこなかったというのも理由の1つですが、サジェスト自体が正しいのかどうか判断できなかったというのも理由としてあります。
直前に書いたコードや文脈によって当然サジェストも変わってくると思うので、自分の期待するサジェストが返ってくるかどうかは、コードを書く人の力量にも左右されるのかなと感じました。
山下
村林さんはどうですか?
村林
保守業務をしているので、関数を自作で書くことがあまりなく、GitHub Copilotは活用できませんでした。
山下
エンジニアの仕事って1から機能を作るのではなくて、修正をすることの方が多いですよね。
だからこそ修正作業でもGitHub Copilotをうまく活用して欲しいと個人的には思います。
村林
そうですよね。
修正作業だと全く上手くいかないというよりは、求めてるサジェストがでてこないことが多い印象です。
自分で「他の箇所ではこういうふうに修正しているから、今回も同様に修正しよう」と進めていく方が早いです。
GitHub Copilotを1週間使ってみて課題は見つかりましたか?
山下
GitHub Copilotを1週間使ってみて課題は見つかりましたか?
正木
GitHub Copilotを使用する際の課題として、私の力量では返ってくるサジェストが正しいのか判別ができないという問題があります。
そのため、返ってきたサジェストの中でわからない部分を調べてから使用する事が多いです。
なので、総合的にみると現時点ではGitHub Copilotを使用するより私自身の力だけでプログラムを書いたほうが早いです。
ただ、今後私の知識が増えれば、GitHub Copilotの作成したプログラムを理解して、それを元に編集する事ができるようになると思っています。
なので、知識や技術力がついてから、有効活用したいと考えてますが、現状はうまく活用するのが難しいと思っています。
山下
それってチャンスでもありますよね。
どうしても1人だけで作業しているとより良い実装に行きつけないことがありますよね。
GitHub Copilotってその辺はまさに副操縦士だと思っていて、隣に座って自分だけでは考えつかない方法を伝えてくれる存在でもあります。
自分も含めて若手エンジニアにとっては、自分に理解できないものがポロッと出てきたらチャンスというか、良いきっかけにはなるんじゃないかなと思います。
今でもたまに「何コレ」っていうサジェストを受けますけど、動かしてみると意外とうまくいくことがあって楽しいです。
正木
GitHub Copilotは大体60点から70点のコードを生成できるというのをなにかの記事で見ました。
山下
ええ... じゃあ使わない方が良いかもしれないですね。
お客様には常に100点のものを納品したいですからね。
正木
でも、他社さんのブログ記事を見たところ、GitHub Copilotは、ChatGPTよりは導入障壁が低いみたいです。
「GitHub Copilot 導入事例」で検索すると、「GitHub Copilot」を導入した事で効率化できましたという記事が結構出てきます。なので、もっと上手く使えるようになれば業務の効率化ができるんだろうなと考えてます。
山下さんはどう思いますか?
山下
自分たちの業務の成果物って、命令的か宣言的なものに分けられると思っていて、例えばPHPでDBの更新をするとかは命令的、一方でTerraformやDockerは宣言的ですよね。
宣言的なものを作成する際はGitHub Copilotさまさまで、100点なのかそうでないのか判断が付きやすいです。
不動産システム関連だと、例えば都道府県一覧のJSONを作成する場合などではすごく役立ちます。
村林
わかります。
業務でIPアドレスの設定をしていたのですが、GitHub Copilotを使用した際に、自動で宣言などを補完してくれるのでスペルミスなどのケアレスミスも減って助かりました。
山下
ケアレスミスがよく起きそうな設定とかのプログラムは、0点か100点な事が多いですよね。なので、設定する時とかはすごくいいなと思いますね。
GitHub Copilotを使用してデメリットはありましたか?
山下
GitHub Copilotを使用してデメリットはありましたか?
村林
修正をしている時とか、使うつもりがないのに候補が出続けるのはデメリットのように思っちゃいますね。 そこまでデメリットではないんですけど。
山下
いやでも、すごい重要な指摘で。自分も村林さんと同じようなデメリットを感じていて、プログラムを書いている途中でサジェストが表示されると、思考が一瞬途切れるんですよね。サジェストされたプログラムがあっているとか間違っているに限らず、内容を読んでしまうので、一瞬思考が切れます。今でも集中が切れることがあるのでなかなか難しいなと思いました。
じゃあ、今後もGitHub Copilotを使用していきますか?会社では使用するのも、しないのも自由ですよね。
村林
使っていこうと思います。 それがデメリットかはちょっとわかんないですけど。
GitHub Copilotを使用していて、効率をあげていくためにはTipsを溜めないといけないっていう場面が結構あります。効率よく使用するためには、一定のコーディング力が必要なように感じます。
山下
それも含めて今後も使うことですね。
村林
そうですね。 使います。
山下
自分の力だけでプログラムが書けなくなることへの恐怖はありますか。
この前実際にあったことですが、ずっとGitHub Copilotを使っていたら、コードが一気に書けなくなったんですよ。for文ってどうやって書くんだっけ?みたいな。
正木
個人的には、GitHub Copilotを使用して内容が理解できないコードを生成して、そのまま使用すると、当然私自身のコードを書くスキルは落ちていくと思っています。
でも、コードの意味を理解しておけば、次に似たようなことがあったときに、前回の経験を元に作成できると思っています。 なのでGitHub Copilotに問題があるというよりは、使い方の問題だと思っています。GitHub Copilotにコードの作成をすべてを託すとダメだと思うんですけど、ある程度自分で使い方を決めておけばいいと思ってます。ここまでは使うけど、ここから先は自分でやるっていう部分の区別をしておけば問題ないかなと思っています。
山下
3人とも新卒研修でプログラミング研修をやりましたよね。
GitHub Copilotを新卒の研修で使っていいよって言われたら使ってましたか?
正木
使ってないです。
村林
自分も使わないですね。文法すら何もわからないまま、研修が終わっちゃうんで、元も子も無くなってしまうのかなって思います。
正木
それか将来的にはfor文なんて書けなくてもいいという前提になるかもしれません。
コードの書き方や考え方は当然知っている必要があると思うんですけど、所詮その程度のコードであれば、GitHub Copilotが多分一瞬で生成してくれると思います。 となるとそのレベルのプログラムは、人間が書くなっていう状況になるのではないかと思います。なので、難しいコードは書けるけど簡単なプログラムを書けないという世の中が来るのかなっていう風に思います。
山下
私たちにしかできないことをやろうっていうことですね。
村林
私たちにしかできないことをしつつ、生成されたコードの内容を判断することもできる人になるっていうのが多分大切なのかなと思いますね。
山下
自分も目指すべきはそこだと思います。
GitHub Copilotの費用対効果について教えてください
山下
GitHub Copilotの費用対効果について教えてください。
正木
GitHub Copilotは1アカウントあたり約2700円/月※で使用できます。 ただ、私が使用できているのは100円ぐらいの価値だと思っています。今後2700円分の価値を使用するためには、私自身の成長が必要だと考えています。
※2023年10月現在
千代坂
会社目線では、エンジニア1人の人件費は、おおよそGithub Copilotの100アカウント分に相当しますよね。
そう考えると逆に自分自身の費用対効果を考えてしまいます。
山下さんはGitHub Copilot 100アカウント分がご自身と同じくらいのコストだとした場合に、どう考えますか。
山下
自分は、GitHub Copilotを凌駕するくらいのエンジニアになりたいと思います。
まだまだ、若いので血の滲むような努力をすれば叶うと考えています。
勿論仕事では、GitHub Copilotを使ったほうが早いところを自分でたらたらやることはさすがにないですけど。
けど、エンジニアとしてのプライドみたいなものがあるじゃないですか?お前にこのコードかけないだろうみたいな意地を張りたくなりますね。
正木
でも逆に私はコードを書く時間があったら、それより命名規則や社内ルールを作ってみたいと思っています。GitHub Copilotを使うことで、プログラムに使用している時間を一部短縮する事で、空き時間ができるじゃないですか。その分、チケット管理ツールのwikiの作成などに振ることができると、効率的だなあと思います。まあ、得意な人間がここに居るんだから、私自身がプログラムに特化する必要がないかなと思っています。
山下
実際にはお客様からお金をいただいてるので、正木さんのやり方が正しいですね。
今後AIにエンジニアの仕事を取られてしまうと思いますか?
山下
今後はAIに仕事が取られてしまうと思いますか?
村林
すべてAIに仕事を取られてしまうことはないと思います。AIは知識を出してくれることができても、様々なことを考慮して判断を行っていくということはしてくれないからですかね。
山下
では、例えば今業務で行っているコーディングなどは今後なくなると思いますか?
村林
今後もAIのプログラミングの知識も成長していくと思うので、ただコーディングをする業務は減っていくのではないかと思っています。
山下
少し前でも話しましたけど、将来的に今やっている仕事に価値がなくなっていくのでAIに任せることができないことに仕事をシフトしていく必要があるってことですよね?
村林
今後はエンジニアとしての仕事がAIにどんどん任されていくようになるのではないかと思います。
なので上流の方の仕事にシフトしていく必要があるのではと思っています。
山下
ということは、今後エンジニア職からディレクター職にシフトするキャリアを考えているんですか?
村林
将来的にはディレクター職側に行く可能性もあるのかと考えています。
山下
そうなんですね。正木さんはどうですか?
正木
私はエンジニアの母数が減っていくように思いますね。
AIが作業したことを判断ができる人がいればいいので、コードを書く人がそんなにいらなくなると思います。
なので、コードを書くよりもどうしたら効率的なプログラムにできるかや企画などの上流の仕事ができるようになる方が強いと思います。
山下さんは、どう考えているんですか?
山下
世界に一人だけの最後のエンジニアになったとしても戦いますよ。AIと。
この仕事が好きなので。
けど、仕事が無いと生きていけないので好きなことだけをやっていくなんて言ってられませんね。
来年入ってくる新卒の人たちにGitHub Copilotをおすすめしますか?
山下
ちなみに、来年入ってくる新卒の人たちにGitHub Copilotをおすすめしますか?
正木
少なくとも研修後におすすめします。
村林
同じく、そう思います。
山下
千代坂さんはどうですか?
千代坂
おすすめするというよりは、一つの選択肢としてGitHub Copilotを使えることを紹介して、使用するかどうかは本人に判断を任せたほうがいいのではと思っています。
サービシンクも様々なツールを使用できる環境がありますが、使用するかどうかは本人たちに任せる方針なので。
山下
では、もし新卒研修中に使用していたらどう思いますか?
村林
自分がAIに任せている内容を理解できていて、実際に自分でもコードを書くことができれば問題ないと思います。
ただ、理解をせずに使用していると本人に力がつかないためちゃんと内容を理解して使うように工夫が必要だと思います。
千代坂
そうですね、ChatGPTと違ってGitHub Copilotは自分の知識レベル内のものしか生み出せないのかなっていうのがちょっと思ったところで。例えば返ってきたサジェストが冗長であったり誤りがあった場合、結局その取捨選択を自分自身で行わないといけないので何も知識がない状態でGitHub Copilotを使用するのは注意が必要ですね。
山下
最近登場したGitHub Copilot Chatならその辺はカバーしてくれそうなので今後に期待ですね。
https://docs.github.com/ja/copilot/github-copilot-chat/about-github-copilot-chat
正木さんはどう思いますか?
正木
私も研修中は使わないほうが良いと思います。
GitHub Copilotが生成した内容を理解せず使用した時に、「どのような意図があってこのコーディングをしたの?」と指摘されてしまったら本当に困るのは結局本人なので。
山下
厳しい言い方ですね。
けど上の世代の人たちは、「まず3年間は自分で考えてから便利なツールを使用していくべき」というような人が多そうですが、そこまで厳しくした方がいいと考えていますか?
さすがに何もわからない状態から使うのは、本人の身にならないから、研修後くらいから触れて慣れていったほうがいいのではという感じですか?
正木
そうですね。
個人的に、ChatGPTやGitHub CopilotなどのAIは一番近い相談相手というイメージを持っています。
私は、今新卒一年目でわからないことが多く、先輩に相談をしたいと思うことが多いのですが、毎回先輩に相談して仕事の時間を奪ってはいけないと考えています。
その時に、ChatGPTなどを使用して基礎的な質問や相談をよくしてます。下手に調べて聞くよりも、一度質問をした後その内容を元に調べたほうが効率的に調べられるからです。
山下
確かに、ChatGPTやGitHub CopilotなどのAIを相談相手という考え方はとてもいいですね!
実際に、毎回質問をされるのは困ってしまうので、まずはAIに聞いて理解度を深めて、それでも分からなければ質問してもらえると助かります。
Webサイト・システムの
お悩みがある方は
お気軽にご相談ください
出張またはWeb会議にて、貴社Webサイトの改善すべき点や
ご相談事項に無料で回答いたします。