AIを使ったコード生成はあっという間に主流となりつつある。Visual Studio Code(VSCode)にもエージェントモードが搭載されて、自然言語であれこれ指示をすればファイルを更新してくれるようになった。
ところで、私はアプリ、ひいてはソフトウェアというのは「情報操作」をするものだと考えている。あらゆるアプリの本質は「情報を操作すること」だ。 エージェントモードは「プロジェクトフォルダ内のファイル」を「操作」することができるのだから、それ自体がアプリとして機能する。それどころか、自然言語であらゆる情報操作を受け入れるアプリなのだから、これはもしかして、万能アプリなのではなかろうか。
そこで、以前から欲しかったGTDの処理を支援してくれる対話型のインターフェースを作ってみた。
アプリの概要
作ってみたと言っても、いわゆるプログラミング言語のコードは一行もない。VSCodeのCopilotエージェントに対する指示を自然言語で書いただけだ。
Copilotエージェントに対する指示はいろいろな方法で書くことができる。VSCodeの設定として、ユーザー設定やプロジェクト設定に書くこともできるが、プロジェクト内の.github/copilot-instructions.md
に記述することができるので、編集しやすいこともあって今回はここに記述した。記述した内容はすべてgithubに公開した。
すべての処理は.github/copilot-instructions.md
に記述している。最初英語で書き出したので全文英語になってしまったが、ともかく自然言語だ。
ただし、データフォーマットの指示で一部JSONを使っている。なんらかのフォーマットを決めないとデータがしっちゃかめっちゃかになってしまうのでJSONにしたが、きちんと定義できるなら箇条書きでも使えるだろう。
このプロジェクトをクローンして、VSCodeのエージェントモードで開けば、すぐGTDを始めることができる。
まずは、収集プロセスだ。GTD/inbox.md
に思いつくまま、箇条書きで項目を追加する。githubのデータにはサンプルのタスクを何行か記入しておいた(当然ながらこれも自動生成したものだ)。
一通り収集が終わったら、エージェントにGTDの処理をして
と頼んでみよう。GTD/inbox.md
の中身を一行ずつ取り出して、「これは実行可能か?」という一連のGTDの質問を処理して分類してくれる。
処理の様子(動画ファイル)
実際に処理する様子を動画にしておいた。
自分で言うのもなんだがこれはすごい。半日エディタをいじっただけで、まがりなりにも動作している。コードさえ一行も書かずに。
今後の展望(アプリ動作の修正や追加)
この後さらに動作を追加したければ、.github/copilot-instructions.md
に記述を足すだけだ。
私としてはプロジェクトをActionに分割する手順を追加したい。分割案をAIに書かせてそれを手直しするのでもいいし、自分で分割してもいい。分割したものをGTD/actions.md
に転記することもできる。
あとは、JSON形式では読みづらい点もあるので、View
フォルダを作って、そこに見やすい形で出力させることもできるだろう。マークダウンの表形式でもいいし、HTMLでもいい。もしかしたらmermaid記法で図示することもできるかもしれない。依存関係を表示できたら便利そうだ。
エージェントが考え込むので、ちょっと処理するだけも待たされるのが玉に瑕だが、有料プランにすれば少しは早くなるかもしれないし、今後処理スピードは上がるだろう。タスク管理の場合に限れば、じっくり時間をかけた方が、いろいろなことを考えられていい面もある。
まとめ
VSCodeのエージェントモードは、自然言語であらゆる情報操作を受け入れるアプリとして機能する。これを使えば、対話型のインターフェースを持つアプリケーションをいとも簡単に作ることができる。
もちろん、動作をきちんと定義しなければいけないのは自然言語でも変わらない。ソフトウェア設計の知識はあった方がいい。だがそれでも、自分専用のアプリを作って、どんどん改良していくことができるなんて、ほんとに夢のような時代だなと思う。