ishkawa

2023-04-06

GitHub Copilotの雑感

時代はAIという訳で、GitHub Copilotを使い始めてみた。GitHub Copilotが登場した時にはそこまで大きなメリットを想像できていなかったが、いざ使ってみるとメリットがよく理解でき、これからのプログラミングのやり方も影響を受けるだろうなという感覚を得た。

なお、最近GitHub Copilot Xが発表されたが、これについては未体験。

退屈な作業を減らしてくれる

Copilotは自明なコードはほとんど補完してくれる。例えば、フィールドを宣言してコンストラクタを書き始めれば必要なパラメーターをすべて補完してくれる。コンテキストがハッキリしている場面では、適切な名前の変数を宣言すればそれに合わせた実装を補完してくれるし、コメントを書いたら変数宣言から実装まで補完してくれることもある。

そういう場面に何度も遭遇してみると、今までも頭の中ではわかりきっていたコードをタイピングすることに時間を取られていたのだということに気づいた。そして、この楽さを一度覚えると、もう戻るのは難しい。

メタプログラミングっぽさがある

コンテキストがハッキリしているものはCopilotが補完してくれるとなると、それに対する人間の役割は輪郭となるコードを書くこととなる。輪郭となるコードを書いて、残りの自明なコードを生成させるという意味では、メタプログラミングと通ずるところがあると感じた。

ただし、Copilotは輪郭を様々なレベルで柔軟に認識していて、数文字の補完から数行の補完まで色々とやってくれる。同等の柔軟性のメタプログラミングの機構を開発するのは難しいだろうし、これはAIとの共同作業ならではの体験なんだと思った。

負債を増やさないように気を付ける

コードは簡単に書けるようになったが、コード量を安易に増やして負債化することには気をつけるべきだと感じた。コードが存在しなくて済むなら存在しない方が良い。特にテストコードは闇雲に生成すると膨れやすくなる。

それと、コードの読み手の目線では手書きのコードも生成されたコードも同じなので、生成する楽さに寄りかかりすぎるべきではないと感じた。

今後の期待

今の時点では、プログラミングの主役はまだまだ圧倒的に人間だが、その割合が変わるのは案外早いかもなというのが今のところの感覚。これが進んだ先の世界でどんな仕事が主務になっていくのかわからないが、更にエンジニアリングのストレスが減っていくことを期待したい。

知識は適切にインプットしてもらえるし、アウトプットは適切に補完されるし、危ないことは止めてくれるし、面倒なことはやってくれるし、問題にハマっても解決してくれるし、といった感じに。

そう考えると、今のエンジニアリングはストレスが多すぎるのかもしれない。