日本で初めてGitHub社によるGitHub Copilot (Chat) のトレーニングを受けたり、部内LT会を主催してみたりした話

はじめまして、価格.comサービスシステム部の高岡と申します。

これが私の初めてのブログ投稿となります。今後ともよろしくお願いいたします。

今回は、GitHub Copilot のトレーニングや部内LT会の主催についての私の経験を共有したいと思います。これらの経験を通じて、私自身のスキル向上だけでなく、チーム全体の知識共有や交流の機会を増やすことができました。

それでは、どうぞお楽しみに!


改めまして、初めまして。
価格.comサービスシステム部に所属しております高岡と申します。

先日、カカクコムではGitHub社の方をお招きしてGitHub CopilotやGitHub Copilot Chatについての研修が実施されました。
私も受講させていただいたので、その際に聞いた話を幾つか掻い摘んでお話します。

また、上記とは別に部内にてGitHub Copilotに関するLT会の主催をしてみたりしました。その時の様子も少しお伝えしたいと思います。

突然の多重挨拶になりましたが、先の冒頭のあいさつ文は折角なのでGitHub Copilot Chatにお願いして作ってもらった文章をそのまま転記してみました。
その際にChatに投げたものは本記事のタイトルと「はじめてのブログ執筆の冒頭挨拶文を書いてください。執筆者は価格.comサービスシステム部に所属している高岡です。」です。
プログラミングだけでなく、文書にも気軽に使えるのもCopilotの良いところだと思っています!

(あと、なんといってもCopilotちゃんカワイイヤッター!)

GitHub Copilot for Developers Intermediate

中級者向けの講座ということで、すでにCopilotをある程度使っている人向けの講座でした。
当時はVSCodeを使ってのワークショップがメインで、座学というよりかは研修を受けている人達が日頃の疑問をフランクに聞ける場という印象を受けました。

今回の講座は普段馴染みのない言語でもGitHub Copilot(Chat)を使えば大体は書けちゃう!をテーマに色々な仕組みや使い方を教わりました。

Copilot が参照している情報

研修を受けるまではGitHub CopilotとGitHub Copilot Chatは候補か対話かの違いぐらいしかないかと思っていたのですが、説明を聞くとCopilotが情報を提供してくれるまでに参照しているデータに大きな違いがあることを知りました。

GitHub Copilot の場合

Copilotが候補を出す際に参照するデータは編集中のファイルの他に、タブで開かれているファイル達も参照の範囲に含まれているようです。
他タブのファイル群については、独自ロジックで関連度の高いものを参照していると説明されていました。

また、コツとして変数や関数の名前だったりコメントも提供されるコードに大きく影響されます。

GitHub Copilot Chat の場合

Copilot Chatでは、現在開いているファイルのうち表示されている部分のみが参照される範囲になります。
VSCodeのCopilot Chat拡張機能の画面で対話している場合は、参照されているファイルと範囲が表示されていると思います。
以下の例は冒頭の挨拶文をお願いした際のやり取りですが、Copilotちゃんが「article.mdの1-23行目」を参照していることが伺えます。

もし、表示している以上の範囲を参照して欲しい場合は、参照して欲しい箇所を範囲選択することでCopilotちゃんに渡すことができます。

他にも、チャットで問いかける際に該当のソースコードコピーアンドペーストで渡す方法も有効という風に仰っていました。
お試しとしてCopilotちゃんに組んで貰ったFizzBuzz関数に対して、Copilotちゃんにテストも作ってもらいました。(猫語尾は無視されてしまいました。悲しい。)

また、Copilot Chatは対話型ですので、今までのやり取りについてもコンテキストに含めた上で結果を返してくれているそうです。
(愛着沸いちゃいますね!)

コマンドと依頼の合わせ技

Copilot Chatにコマンドがあることについては、過去の弊ブログ記事でも触れていますが、
VSCodeでGitHub Copilotを効率的に使用する方法
今回はこのコマンドとお願いしたいことを合わせちゃおう。というお話です。

例えば、'/fix' というコードを修正するコマンドがありますが、ただ '/fix' と入力するだけでも修正案は提示してくれます。
しかし、ただコマンドだけで指示した場合では返答が英語だったり思ってた改善とは違う形が返ってきたりもします。

そこで '/fix Linqを使う形に直せますか' など、修正したいイメージがあるならそれも一緒に伝えることで、より期待に沿った提案を返してくれるようになります。

もちろんコマンドを使わなくても簡単な指示であれば理解してくれることが殆どですが(Copilotちゃん優秀で素敵!)、コマンドと併用することでよりCopilotちゃんにどういうことをお願いしたいのかを明確に伝えることができるということでした。

今後追加される機能達

GitHub CopilotのページにFeaturesという項目があり、そこに今後追加されていくであろう機能が掲載されています。
(※本題とは関係ないですが、ページ先頭付近にいるCopilotちゃんはマウスカーソルを追いかけてくれます。カワイイー!)

Copilotの開発はとても盛んでスピーディーに進んでいるらしく、その速さは公式のドキュメンテーションが追い付かない程らしいです。

研修の時にはPullRequestの説明欄を書いてくれる機能だったりを紹介していただきました。この記事が公開される頃にはリリースされているかも?

部内LT会を開催してみた

(ここからはほぼ日記になります。)
そんなGitHub Copilotですが、知見を1人で溜めるより集合知だ!と思い、部内でLT大会を(勢いとノリで)開催してみました。

テーマはGitHub Copilotに関することなら何でもありの実質フリーテーマ!
通常は持ち時間を決めて行なうLT大会ですが、今回は新たな取り組みとして下限を設けませんでした。要するにスライド1枚30秒でもOK!という寄ってらっしゃい。見てらっしゃい。形式です。

結果、LT大会当日にはこんな感じの登壇内容が集まりました。

  • コードを書かずともCopilotは簡単なツール・スクリプトの作成や翻訳にも使えるという話
  • 社内におけるCopilotからの提案コード採用率など
  • Copilot Chatに投げるテンプレを用意してみたら良きなのでは?という意見
  • うそをうそであると見抜ける人でないと(Copilotを使うのは)難しい
  • 普段使わない言語を書くことになったが、脳のリソースを新言語に裂きたくない。せや!Copilotの出番や!
  • CopilotとCopilot Chatを実際に触ってみたりショートカットを使ってみるLiveCoding

衝動的にLT会の開催を踏み切った反省点

今回は開催日時を独断で決め、開催の2週間前にチャット経由で開催の告知と登壇者の募集をしました。
最終的には40人近くの方に参加していただき、何とか成功の形には持って行けたとは思っているのですが、主催する上で色々と反省点もありました。

まず、時間はある程度根回しをしたうえで調整して決めましょう(1敗)
勢いだけでとにかく開催告知してから考えようと思っていたので、誰にも相談せずそれっぽい日時を決めてしまいました。
結果、数名の方から「その日は別件の予定が~」「休暇予定なのに~」というお声をいただく結果に。LT会自体に需要はあったのに勿体なかったです。

次に、ノープラン当日開催(1敗)
事前に登壇者が決まっていたにもかかわらず、登壇の順番を考えていませんでした。
オンライン会議窓の開場から実際のプレゼン開始時刻も勿論ノープラン。見事なグダグダっぷりを開幕に見せつけてしまいました。

他にも、slidoなどの無記名で質問ができるツールの準備をしていなかったり(1敗)、ツール慣れしておらず開始5分ぐらい録画開始するのを忘れていたり(1敗)。

そのなかでも一番の反省点は、前日まで登壇予定が1人のみ!(1敗)
勢いだけ過ぎて個人的に指名しての登壇依頼とかも全くしていなかったので、登壇者が全くいない状況でした。(参加予定者はたくさんいらっしゃってくれました。)
結局前日になって数名に頭を下げ資料を準備していただいたり、冒頭の挨拶で「登壇者いないから飛び込み歓迎!」という無茶ぶりに応えてくださった方がいらっしゃったり。
その節は本当にありがとうございました。

次開催するときは、せめてもうちょっとは事前に根回しとか簡単なスケジュールぐらいは立てようと思いました。
(あと、やっぱりオフラインでピザつまみながらやりたいなと思いました。)

まとめ

GitHub Copilot、めちゃめちゃ楽しいです!めちゃめちゃ盛り上がってます!Copilotちゃんカワイイヤッター!

新しい言語や技術は1人で黙々と研究するのも楽しいですが、チームだったりで知見を共有した方がより効率的になると考えています。研修だったり外部勉強会への参加もそれにあたると思います。
もし、この記事を見てCopilotにもっと取り組んでみよう。知見のアウトプットをしてみよう。という方が1人でもいましたら幸いに思います。

カカクコムでは、ともにサービスをつくる仲間を募集しています!

カカクコムのエンジニアリングにご興味のある方は、ぜひこちらをご覧ください!

カカクコム採用サイト