TechとPoemeの間

Qiita に書かないエンジニア業の話

ライブコーディングで GitHub Copilot を使うべきかどうか

TL; DR

  • 場合による
  • "How to" を教えるライブコーディングの場合は、切ったほうが良い
  • 設計議論を中心に行うライブコーディングの場合は、使うと良いことがある

文脈

最近の仕事の中で、プログラミングを学んでいる人々の前で、オーディエンスのスキルアップを目的としたライブコーディングを実施したり、ライブコーディングセッションのアレンジをしたりファシリテーションをしたりしている。少々性格の異なるライブコーディングを数パターン行うなかで、「ライブコーディングで GitHub Copilot を有効にするべきかどうか」という問いに答えるに当たって一つの指針が見えてきたので書き残しておく。

How to を教えるライブコーディングでは Copilot を切る 

自分が担当したライブコーディングは、特定のテスティングフレームワークの使い方やテスト駆動開発の講義だったのだけど、このような「特定のツールやフレームワークの使い方を教える」や「手法を教える」ことが目的の場合は、Copilot は明確に切っておくべきだ。

このような「How to」を教える手法としてライブコーディングが優れているのは、同じコードを書き起こす場合でも、どのような考えに基づき、どのような順番でコードを書いているのかの思考をオーディエンスがリアルタイムでトレースできることだ。とても単純な例だが、仮にエディタによる補完が効かない状況で console.log(message) と書くだけでも、最初に console.log() とまで書いてから、末尾にあるキャレットを1文字戻してから message と入力するだろう。本当のプログラミング初心者なら、より経験あるプログラマのこのような所作ひとつでも学びになる。しかし、Copilot を有効にしてしまうと、こういった体験をほぼ全てすっ飛ばしてソースコードが出来上がってしまう。

また、このような How to を教えるコーディングの題材は単純なものであることも多く、それまでに書いたコードから Copilot が提示してくる候補の精度も比較的高いことがある。一旦提案を受け入れた後に議論をするように試みても、すんなりと「良いコードですね」という結論になって終わってしまい、コンテンツ的にも面白みのないセッションになる可能性が高い。

設計の議論が目的の場合は、Copilotを使うとセッションの濃度が上がる

逆に、オーディエンスが必要なプログラミングのハードスキルを一定程度持ち合わせていることを前提として、ライブコーディングを通じて設計の考え方を伝えたり、インタラクティブに議論をしながら簡易アプリケーションを作ることを目的とする場合は話が変わってくる。

同じ時間・同じコード量を書くことを前提とする。すると、まず Copilot があることで、コードを書き起こすことに費やす時間が減ることで、コーディング実施者が自分の考え方について説明したり、トレードオフを整理して簡単な議論をしてからコードを書く、ということを丁寧に行えるようになる。オーディエンスもわかり切っているコードなら、さっさと Copilot に書かせたほうが良いに決まっている。それはライブコーディングセッションでも変わらない。

濃度だけでなく、持久力も向上する

加えて、個人的には想定外だったのは、Copilot があることでコーディング実施者・オーディエンスともにセッション参加に際してのスタミナ消費が抑えられるのではないか、ということだ。

実際にやってみるとわかるのだが、人がだらだらとコーディングしている様子をただじっと眺めているのは意外と疲れるし、飽きる。その飽きを回避しようと思っても、プログラマーは他のトークを回しながらコーディングをすることはできないし、仮にプログラマーと別にファシリテーターがいても、コーディングの様子を眺めるアテンションを吸い取ってまで有意義な話を差し込むのはあまり現実的ではない。

Copilotがあることで、この退屈な時間をすっ飛ばして、より議論に入り込めるようになり、うまくいくセッションなら「時が経つのも忘れる」モードに持ち込める可能性が高まってくる。自分が実施した例だと、Copilot無しでは60分続けるのが色々な意味で限界だったセッションが、Copilotありの場合は90分も余裕だった。

ただ、これに関しては筆者自身も試行回数がまだ多いわけではなく、コーディング実施者を固定して複数パターン試行したわけでもなく、いま持ち合わせている経験だけで言い切るのは少し無理があるかな、と思っているのも事実。今年も色々とトライしてみようと思う。

まとめ

改めて振り返ると、普段から生成 AI を利用する際に気をつけていることと大きくズレた話ではないと思う。ライブコーディング自体はトレーニングのメインコンテンツにはできないけど、目先を変えたりオーディエンスの視野を広げるには良い手法なので、今回取り上げたようなコツをうまく踏まえて活用できたら良いと思う。