はじめに
MSBuild Day1 の Keynote、すごかったですね! 個人的な感想として、Windows Copilot には興奮しつつも身の引き締まる思いで、Github Copilot にはワクワクが100%でした。
連携Plugin開発のジレンマ
Windows Copilotには身の引き締まる思い、という点について、これはおそらく割と一般的なジレンマというか、共感してくださる方も多いのではと思うのですが、たとえばCopilotから LinkedIn に投稿する Plugin が KeyNote で例示されていましたけども、あれって冷静に考えれば LinkedIn にとっては開発コストの二重負担というか、純粋に作るものが増えちゃってますよね? Plugin を提供することで数億のユーザーにリーチできるのは結構なことですけれども、私としてはユーザーを自分のアプリに囲い込んだほうが楽ですし、私が楽ということはそれだけ私の時間をユーザーに新たな価値を届ける活動に使えるので、ユーザーにとっても嬉しい、というのが基本原則だと思います。ただ、原則を持ち出すならば言うまでもなく私の責務はユーザーに価値を届けることであるからして、ユーザーが望みユーザーの生産性が上がるのであれば私のアプリの Plugin を提供するのは全くやぶさかでないけれども、しかしそれによって増加するメンテナンスコストを Plugin の利益を享受しないユーザーにも負担させるのは筋が通るのだろうか? 結果的にそれは私のアプリの競争力を削ぐことになりはすまいか? とか、そんなことを考えながら、身の引き締まる思いで聞いていました。
GitHub Copilot 活用テクニック
その一方で GitHub Copilot の Breakout セッション、これは期待どおり面白かったので、みなさんぜひ後日視聴していただきたいですが、速報として私なりのサマリを書いておきます。
Pragmatic techniques to get the most out of GitHub Copilot(GitHub Copilotを最大限活用するための実用的テクニック) | 24(水) | 9:15 AM - 10:00 AM JST
(サマリここから)
LLMは「超スゴイAutoComplete」でしかなく、プログラム言語のシンタックスを理解しているわけではない。GitHub Copilot をうまく活用するためのベストプラクティスは「3つのS」、Single - 一度にひとつのことだけをする、Specific - 要求は明確に、Short - アウトプットが短くなるようにする、である。たとえば「//HTMLをサニタイズする関数
」という要求は「サニタイズ」が明確でないので、うまくいかない。「//文字列からHTMLタグを除去する関数
」のほうがより明確である。
限界があるいっぽうでパターン認識は非常に得意で、これは言い換えれば「開発者がすぐ忘れちゃうようなこと」、たとえば正規表現やCSSやCRONなどに絶大な威力を発揮する。ただし「信頼しつつ検証せよ」、Copilot の提案を検証なしに採用してはならない。Copilotはあくまで副操縦士であり、操縦席に座るのはあなたである。
現在の Copilot は、プロンプトサイズに上限があるので、プロジェクト内に存在するすべてのコードを見てくれているわけではない。材料として使っているのはファイル名と、現在開いているファイル。あなたが Copilot に与えた情報がダイレクトに結果に影響する。良い結果を一回で得ようとするのではなく、結果を見ながら反復して情報を与えていくとよい。関数の説明をコメントで書いて、結果が期待に近づくようにコメントを修正するサイクルを反復する。このコメントはそのまま将来の開発者(あるいは将来のあなた)の助けにもなる。
Copilotのトライアルは下記、これとは別に30days free trialもある。
(サマリここまで)
おわりに
GitHub Copilot Chat は単にコード生成などの機能が強力というだけでなく、KeyNoteでも何度か言われていた「フローに留まることを助ける」という点も魅力だと思います。すぐ忘れちゃうような記法を調べようとしてエディタから離れたらたまたまチャット通知が目に入ってしまい、そのままフローが終わってしまった、という体験は誰しもあると思いますが、これが Github Copilot Chat であれば VSCode から出ずに Copilot と対話しながらコーディングを継続でき、開発者が最大限フローに留まれる、という体験の部分も大きな魅力であって、単なるコード補完と考えるとちょっと見誤るのかなと思います。はやく業務利用したいですね!
明日はDay2、Keynote では Windows Copilot の話が多くなりそうなので、私にとってはまた興奮しつつも身の引き締まる感じになりそうです。引き続きレポートしていけたらと思います。