2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

まず、何を作っているかの話から

AIを何本も同時に走らせることだけを考えて作った、Windows 用のターミナルを公開しています。SHIKISHA-TERM といいます。

AIが一発でそれなりのコードを書くようになってから、勝負どころが「同時に何本進められるか」に移りました。1本投げて、終わるのを眺めて、次を投げる。この使い方をしている限り、待っている時間はまるごと損失になります。同時に10本走らせて、人間は指示と判断だけをする。これができると、同じ時間で扱える案件数が桁で変わります。

Mac には Ghostty や cmux のように、そういうイケてる環境が次々に出てきました。Windows には無かったので、悔しくて自分で作りました。単一の .exe で、インストーラも管理者権限も要りません。前回の記事(月100万円稼ぐためのAI並行開発環境を、Windowsだけで作る)で「同時に10本走らせるための7つのルール」を書いたので、この記事はその続きです。

SHIKISHA-TERM のデスクトップ画面。5つのAIがそれぞれ Working / Waiting / Done を表示している

あれから2週間、8月27日から9月10日までで12回リリースしました。この記事は v0.3.4 から v0.9.0 までのぶんです。機能の一覧は CHANGELOG にあるので、ここには実際に回してみて分かった運用の話を書きます。ツールが違っても持ち帰れる話のつもりです。


いちばん削れたのは、待ち時間ではありませんでした

前回は「待ち時間を削る」と書きました。2週間まわしてみて、これは半分外していました。

実際に測ってみると、AIはとっくに終わっているのに、こちらがそれに気づいていない時間のほうが長いのです。5本走らせて、1本目を見ている間に3本目が終わっている。3本目に戻るころには5本目も終わっていて、そのあいだ2本のAIは何もせずに座っています。AIの処理が速くなっても、この時間は1秒も減りません。

削るべきは、終わったことに気づくまでの時間でした。ここに手を入れたのが、この2週間の実質です。

1. 終わったらこちらから知らせに行く(席を立っていても)

タブごとに「このAIが答え終わったら知らせて」を設定できるようにしました。知らせ先は Slack でも Discord でも Telegram でも、Windows の通知でも構いません。

そのなかで、いちばん効いたのがスマホでした。

スマホからPCの画面を見る機能はもともとありましたが、通知を受け取るには「ブラウザで開きっぱなしにしておく」必要があって、実質使えていませんでした。v0.7.0 で、スマホ側が自分で通知の登録をできるようにしました。PCの設定でQRを出し、スマホでそれを開くと、画面の上に「通知を受け取る」という帯が出ます。それを1回タップするだけです。アドレスを打つ作業も、Slack のワークスペースを用意する作業もありません。

効き目が大きかったのは、通知に「返信」まで付いていることでした。届いた知らせを開くと、そのAIが最後に言ったことが読めて、その場から返事を打てます。移動中や打ち合わせの合間に「OK、進めて」と1行返すだけで、PCの前に戻ったときには次の工程が終わっています。

これは道具というより段取りの話で、並行作業で詰まるのが人間の判断なら、判断できる場所を人間のほうに寄せるのが正解でした。人間をPCの前に座らせる前提でいる限り、AIは人間の生活時間の外では動けません。

2. 窓を閉じても止めない

以前は、窓の×を押すとプログラムごと終わっていました。当然、走っていたAIも全部そこで止まります。作業中に間違えて閉じてしまって作り直し、というのを何度かやりました。

v0.8.0 から、×は通知領域に片付けるだけになりました。AIはそのまま働き続け、スマホからも繋がったままです。窓を捨てるとメモリは 216MB から 13MB まで落ちるので、裏に置いておくコストもほぼありません。終了したいときはタスクトレイのアイコンから明示的に終了しますが、そのときも作業中のタブがあれば先に確認します。

「PCを触っていない時間もAIは進んでいる」という状態が普通になると、投げ方が変わります。寝る前に3本投げておく、が普通の使い方になりました。

3. 同じ課題を、4つのAIに同時に投げる

どのAIが優秀かという議論には、たぶん決着がつきません。課題によって変わりますし、日によっても変わります。

なので、決着をつけるのをやめました。

v0.8.0 で、同じリポジトリから作業フォルダをもう一枚切り出す仕組み(git worktree)のダイアログに、「AIごとに1つ作る」を足しました。チェックを入れると、インストール済みのAIの数だけフォルダとブランチができて、それぞれで別のAIが立ち上がります。ブランチ名にはAIの名前が入るので、あとから見てどれがどれか分かります。

「並行開発(GIT WORKTREE)」のダイアログ。AIごとに1つ作るにチェックが入り、4つのAIぶんのフォルダと、実行される git のコマンドが実行前に表示されている

同じ指示を4つに配って、上がってきた4つを見て、いちばんいいものを採る。残りは捨てます。乱暴に聞こえますが、選ぶのは人間の1~2分で、AIの実行時間は並行なので伸びません。「どのAIを使うべきか」を悩む時間より、4つ動かして選ぶほうが速い、というのが2週間の結論でした。

実行される git worktree add の行は、実行前に全部画面に出ます。裏で何をされたか分からない、という状態にはしていません。

4. デプロイまで同じ窓で終わらせる

AIにコードを書かせて、確認して、サーバーに上げる。すこしレガシーなプロジェクトではまだまだSFTPが使われる場面もあると思います、この最後の1手がめんどい。転送ソフトを開いて、同じサーバーにもう一度ログインして、フォルダを合わせて、ドラッグする。1回30秒でも、1日に10回やれば5分です。1か月で2時間近くを、同じ4手順に払っていた計算になります。

こういう「窓の外に出る用事」は、時間そのものより、そのたびに手が止まって別の画面のことを考える負担のほうが高くつきます。ここを窓の中に戻したのが v0.9.0 でした。

タブのコマンドに sftp://user@host:port と書くと、そのタブがファイルの一覧2枚になります。左が手元のフォルダ、右がサーバーです。選んで「送る」を押すだけで上がります。

タブが2枚のファイル一覧に分かれ、左が手元のフォルダで2件にチェック、右がサーバーのフォルダ。「送る」ボタンが光っている

同じ書き方で ssh://user@host:port と書けば、そのサーバーの端末になります。アドレスが同じなら接続は1本を分け合うので、端末とファイルで二重にログインすることもありません。

そしてこれが地味に効くのですが、パスワードの入力待ちが出ません。 アドレスも鍵もパスワードもタブの設定に書いておくので、開いたらもう繋がっています。ターミナルで ssh を打って、パスワードを聞かれて、パスワード管理ソフトを開いてコピーして、という往復がまるごと消えます。

5. AIに鍵を渡さないガードレール設計(これは他のツールを使っていても効きます)

AIに自動化を書かせていると、いつか必ず「このパスワードを使って、このサイトにログインして」という話になります。ここが危ないところで、AIが書いた台本は、どのページを開くかを自分で決められます。あるサイト用のパスワードを、別のサイトの入力欄に入れる台本も書けてしまう。入れてしまえば、そのページ側から読み返せます。

パスワード管理の運用として持ち帰れるのは、たぶんこの1行です。秘密を1件預けるたびに、その行き先を1つ書いておく。 「この鍵はこのサイトでだけ通じる」を鍵のほうに持たせておけば、台本が行き先を間違えた瞬間に止まります。台本を全部読んで審査するより、はるかに現実的でした。

もうひとつは既定値です。AIが使ってよいかを、秘密ごとに持たせて、既定を「不可」にしました。AIに開けるのは、こちらが1件ずつ開けたものだけです。これも運用の話で、逆にすると事故は「気づいたとき」にしか見つかりません。

うちのソフトは v0.9.0 でこの形に作り直しましたが、ここは自分のツールに限らず、AIエージェントに仕事をさせるなら誰でも一度考えたほうがいいところだと思います。「鍵を渡さない」ではなく「渡す鍵を1本ずつ、行き先とセットで決める」。渡さない運用は、たいてい続きません。

そのほかに入ったもの

git の差分・ステージ・コミット・マージが窓の中で終わるようになって、コミット文はAIが書きます。端末そのものの処理も速くしました(日本語1万行で 286ms → 119ms)。スマホのペアリングはリンクをコピーして送れるようになり、そのリンクが誰に届く範囲なのかも画面に出ます。Visual C++ の再頒布パッケージが要らなくなり、アイコンも付きました。

新しい版が出たら教えてくれて、押せば入れ替わるようにもなりました(勝手には入りません)。全部は CHANGELOG にあります。

使い方

zip を展開して SHIKISHA-TERM.exe を起動するだけです。インストーラも管理者権限もランタイムも要りません。

  • Microsoft Store 版
  • GitHub Releasesもあります。こちらは ポータブル版で更新も頻繁にリリースされますが署名がつかないので警告がつきます

AIのCLI(Claude Code、Codex CLI、Gemini CLI ほか)は同梱していません。すでにお使いのもの、いまのサブスク契約をそのまま動かします。 APIキーを別に用意する必要はありません。

正直なところ

  • 署名なしの zip は、いまも起動時に SmartScreen の警告が出ます(Store 版なら出ません)
  • フォルダをまるごと転送する機能はありません。開いて、中のファイルを送ります
  • 「AIごとに1つ作る」で立ち上がるタブには、最初の指示は自動では入りません。1本ずつ渡します

おわりに

2週間まわしてみて、いちばん効いたのは「人間が気づくまでの時間」を測る対象に入れたことでした。どの新機能より、これが大きかったと思います。AIの速度を上げる話ばかりしていると、この時間はどこにも出てきません。5本走らせて手が止まっているとき、詰まっていたのはAIではなくこちらでした。それが2週間の答えです。

同じことは、たぶん他のツールを使っていても言えます。通知でも、モニタでも、席の配置でもいい。終わったことに気づくまでの経路を、一度だけ測ってみてください。

Windows でAIを並べて回したい方は、よかったら使ってみてください。要望でもバグでも、Issue をいただけると嬉しいです。

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?