GitHubの研究開発部門であるGitHub Nextは2月15日(現地時間)、自然言語でAIと対話しながらプログラマーを支援するサービス「GitHub Copilot」をコマンドラインインターフェイス(CLI)で使用できる「GitHub Copilot CLI」のプロトタイプ公開に向け、ウェイティングリストへの登録を開始した。
OpenAIの学習済み言語モデル「Codex」を利用
2021年6月に提供開始されたGitHub Copilotは、GitHubとOpenAIが開発したサブスクリプション型AIツール。Visual StudioやNeovimといった統合開発環境(IDE)上で動作し、コメントを実行可能なコードに変換したり、コードの繰り返し部分、メソッド、関数を自動補完するなど、プログラマー向けの支援機能が備わっている。
OpenAIが開発した事前学習済み言語モデル「Codex」を利用しており、元となる学習データはGitHub上に公開されているソースコードだ。
We're finally ready to start flagging users in to GitHub Copilot CLI 🔥
— matt rothenberg (@mattrothenberg) February 15, 2023
If you haven't already, please join the waitlist from the following page 👇https://t.co/D73YFOWmnI
GitHub Copilot CLI自体は2022年11月に発表されていたが、今回開発者の1人マット・ローゼンバーグ氏のTwitter投稿によりウェイティングリストへの登録開始がアナウンスされた。
対話型プログラミングを体験
GitHub Copilot CLIのプロトタイプにはAIとの対話を可能とする「??」「git?」「gh?」という3つのコマンドが用意されている。
gitコマンドが利用したいとあらかじめわかっている場合は「git?」、Githubコマンドとわかっている場合は「gh?」、より広くシェルコマンドについて支援を受けたい場合は「"??"」の後に自然言語でやりたいことを書くことで、AIが意図を読み取って適切なコードを生成してくれる。
なお、gitおよびGithubコマンドについては、込み入ったフラグやjqによる表現といった複雑なオプション指定についてもAIの支援を受けることができる
例えば「tsファイルのリストを出す」シェルコマンドを知りたければ、「?? list ts files」と「??」に続けて自然言語で質問する。
すると即座に「Command(生成されたソース)」と「Explanation(コードの解説)」が表示される。
その下に「This looks right, thank you!(正解、ありがとう)」、「Actually, I can be more specific. Let me clarify!(もう少し設定を絞り込みたいです)」、「Cancel」の3つの選択肢が表示されるので今回は2番めを選んでみよう。
すると「Revision(修正)」欄が表示されるので「ignore node module(Nodeモジュールは無視する)」と自然言語で入力する。
今度は「Query」欄に追加された条件、「Command」には新たに生成されたソース、「Explanation」に説明が表示される。さらに条件を追加してみよう。
続けて「Revision」欄に「sort by size(容量で並び替え)」という新たな条件を自然言語で入力。
最終的に「find. -name *.ts" | grep -v node_modules | xargs du -h | sort -h」というコードが生成されたので「This looks right, thank you!」を選択。
実行するかどうか聞いてくるので「y」と入力すると生成されたコマンドが実行され、tsファイルのリストが表示された。
このように簡単な操作であれば、多少知識が曖昧であってもほぼすべて自然言語だけで実行できてしまう。もうコマンドの内容を忘れてしまっても「--help」と入力したり長いマニュアルページをスクロールする必要がなくなるのだ。
とは言えAIツールの常として正確性は保証されていない。特にシェルコマンドは意図していない取り返しのつかない変更をしてしまう可能性があるため、提案されたコマンドが何をするのか、実行する前に必ず解説を読んで理解することが推奨されている。
GitHubは2018年にマイクロソフトによって買収されている。AzureやTeamsなどマイクロソフトの各種サービスに次々とOpenAIのAIモデルが導入されているが、GitHub Copilot CLIも技術者をMSを中心とするエコシステムに囲い込む一助になるのだろうか?