GitHub Copilot Workspace ファーストインプレッション

概要

GitHub Copilot WorkspaceはAIが組み込まれた開発環境。「見えてきたプログラマー不要時代」で有名。テクニカルプレビュー中で、ウェイトリストに申請すると招待が来る。 githubnext.com

巷で言う”仕様書から開発自動化コーディングエージェント”とはちょっと違って、あくまでCopilot WorkspaceはCo-pilotの役割のみで、コーディングするのは自分、と考えると良い。今までブロック単位のコード補完だったものがレポジトリ全体に及んでる、というようなアナロジーだと思う。

自然言語を使用してタスクを指定し、AIが生成したコードの微調整、レビュー、繰り返しをユーザーが行うことができる。タスクの定義をIssueからインポートすると画像も認識する。

特徴

自然言語で目的(Task)、現在値・期待値(Specification)、変更計画(Plan)の各フェーズのメタ情報を定義し、定義した情報から実装となるコード変更が自動で行われる(Implementation)。

各ステップが箇条書きリストになりユーザー側が上書き訂正もできる。この段階で編集する対象のファイルを確認できる。

Implementationまで進んだらページ内にターミナルを表示して、変更内容を専用の実行環境でコマンドライン起動し動作確認できる。

さらに、GitHub Codespacesを外部エディタとして起動してソースコードを同期しつつ編集とデバッグできる。

ウェブアプリもパブリックアクセス可能なURLを作ってくれるので、Claude Artifacts*1のような「指示→プレビュ→繰り返し」の手続きができる。

意図に介さなかったら前のフェーズに戻って繰り返すことができる。生成されたソースコードも上書きできる。

最後に、これまでの情報をまとめてプルリクエストに変換してドキュメント化できる。

技術的詳細

実態はGitHubアカウント認証する外部連携Webアプリケーション(LLMアプリ!)。copilot-workspace.githubnext.comで動作する。

cloudapp.azure.comにデプロイされており、GitHubの情報を入力としてこのサーバーでソースコード処理をして、最後に吐き出してGitHub側にコミットやプルリクエストをつくる。

使用例

例としてbadtodoのSQLインジェクションを修正してもらった。何も加工せず全部yesで通したらいくつか修正をしてくれたが、修正漏れがある。logindo.phpなどは対象に含めてなかった。

結果を以下のようにシェアできる(招待を受けてなくてもいいがアカウント連携しないと閲覧できない)

copilot-workspace.githubnext.com

あとはGitHub - github/haikus-for-codespacesというシンプルなWebアプリの画面のレイアウトをサンプル画像に沿ってCSSを変えてもらうとかはできた。

github.com

他に試している方法は、任意のOSSリポジトリから解決済みIssueをピックしてきてプルリクエストと付き合わせて答え合わせする。というもの。

いくつかやってみたけど、プルリクエストと同じ変更になるケースはなかった。Issueを完全に理解しないと、そもそもCopilotの修正が別解なのか誤りなのか分からない。

評価

自分の実装したものなら把握できるのでsite2pdfという100行ぐらいのクローラープログラムも何パターンか変更してもらったけど「robots.txtに対応する」「sitemap.xmlがあったら使う」程度なら違和感なくできた。

がそれはChatGPT等のコンテキストウィンドウ内でもやってくれるので、Workspace氏には「単体ウェブアプリケーションの1画面を変更する」などの人間が主にやりがちなタスクの代替をしてもらいたい。

その精度としては現状はまだ満足いくものではなくて、「ログイン機能作って」などの二・三段階の思考が必要な実践的タスクは解決してくれない。画像はいけるけどインターネットリソースもまだ読み込んでくれない。他のユーザーの評判も似たようなものだった。

そのためメタ情報部分に一生懸命ガイドとなるテキストをこちらで入れないと機能しないが、それをするなら自分でコード書けるという状態。

しかし逆にいうとインテリジェンスが飛躍的に進化してたら結構便利に使えそうと感じる。将来に期待。