Copilotを使い始めてみた。Copilotが登場した時にはそこまで大きなメリットを想像できていなかったが、いざ使ってみるとメリットがよく理解でき、これからのプログラミングのやり方も影響を受けるだろうなという感覚を得た。Xが発表されたが、これについては未体験。退屈な作業を減らしてくれるCopilotは自明なコードはほとんど補完してくれる。フィールドを宣言してコンストラクタを書き始めれば必要なパラメーターをすべて補完してくれる。コンテキストがハッキリしている場面では、適切な名前の変数を宣言すればそれに合わせた実装を補完してくれるし、コメントを書いたら変数宣言から実装まで補完してくれることもある。いう場面に何度も遭遇してみると、今までも頭の中ではわかりきっていたコードをタイピングすることに時間を取られていたのだということに気づいた。この楽さを一度覚えると、もう戻るのは難しい。メタプログラミングっぽさがあるコンテキストがハッキリしているものはCopilotが補完してくれるとなると、それに対する人間の役割は輪郭となるコードを書くこととなる。輪郭となるコードを書いて、残りの自明なコードを生成させるという意味では、メタプログラミングと通ずるところがあると感じた。Copilotは輪郭を様々なレベルで柔軟に認識していて、数文字の補完から数行の補完まで色々とやってくれる。同等の柔軟性のメタプログラミングの機構を開発するのは難しいだろうし、これはAIとの共同作業ならではの体験なんだと思った。負債を増やさないように気を付けるコードは簡単に書けるようになったが、コード量を安易に増やして負債化することには気をつけるべきだと感じた。コードが存在しなくて済むなら存在しない方が良い。テストコードは闇雲に生成すると膨れやすくなる。それと、コードの読み手の目線では手書きのコードも生成されたコードも同じなので、生成する楽さに寄りかかりすぎるべきではないと感じた。今の時点では、プログラミングの主役はまだまだ圧倒的に人間だが、その割合が変わるのは案外早いかもなというのが今のところの感覚。これが進んだ先の世界でどんな仕事が主務になっていくのかわからないが、更にエンジニアリングのストレスが減っていくことを期待したい。知識は適切にインプットしてもらえるし、アウトプットは適切に補完されるし、危ないことは止めてくれるし、面倒なことはやってくれるし、問題にハマっても解決してくれるし、といった感じに。考えると、今のエンジニアリングはストレスが多すぎるのかもしれない。