トイレから音声入力でAI部下10人を指揮したらTDD(Toilet Driven Development)という開発手法が確立されてしまった
シリーズ初めての方はこちらから。
前回・前々回の記事を読んでくれた皆さん、ありがとうございます。コメントで「続き読みたい」と言ってもらえるたびに将軍以下全員で土下座しております。
で、今回はちょっと毛色が違う話。
トイレにいた。
スマホを握りしめて、音声入力で「全員にエンター送って」と言った。10人のAI部下が一斉に目を覚ました。
続けて「みんなに元気よく社訓を言わせよ」と言った。
家老が社訓を叫び始めた。足軽1号が「いつでも出陣の構えにござる!」と復唱してきた。
トイレから。

家老が社訓を叫び、足軽1号が「いつでも出陣の構えにござる!」と応える。撮影場所:トイレ。
PCの前にいないと指示出せないの、不便じゃね?
オレのmulti-agent-shogunは、Windows上のWSL(Ubuntu)で動いている。tmuxセッションに家老1人、足軽8人、将軍1人の計10ペイン。普段はPCの前に座って将軍ウィンドウに指示を打ち込む。
でも考えてみてほしい。
寝る前にベッドから「明日のタスク仕込んどいて」と言いたい。散歩中に「あのバグ直しといて」と言いたい。トイレで「進捗どう?」と聞きたい。
スマホから将軍ウィンドウに接続できればいい。
まず登場人物を整理する。
【自宅のPC】
Windows
└─ WSL ← Windowsの中にLinuxが住んでる。AI部下はここで動いてる
└─ tmux ← AI部下10人の「部屋」。電源切っても部屋は残る
├─ 将軍(ペイン0)
├─ 家老(ペイン1)
└─ 足軽1〜8(ペイン2〜9)
【外からスマホで繋ぎたい】
Android
└─ Termux ← スマホにあの黒い画面を出すアプリ
└─ SSH ← 黒い画面から自宅PCにログインする仕組み
└─ Tailscale ← 外からでも自宅PCに届く「道」を作る
つまりこういうこと:
| 名前 | 一言で言うと | 役割 |
|---|---|---|
| WSL | Windowsの中のLinux | AI部下たちが住んでる場所 |
| tmux | 画面分割ツール | AI部下10人の「部屋」。スマホを閉じても部屋は消えない |
| Tailscale | 外から自宅に届く道 | カフェからでもトイレからでも自宅PCに繋がる |
| SSH | その道を歩く足 | Tailscaleの道を通って自宅PCにログインする |
| Termux | スマホの黒い画面 | SSHを使うために必要。スマホに入れるだけ |
普通、自宅のPCに外からアクセスしようとすると、ルーターのポート開放とか、グローバルIPとか、DDNSとか、VPNサーバ構築とか、面倒なことを山ほどやらないといけない。
Tailscaleが、それを全部すっ飛ばしてくれる。 入れたら道ができる。SSHでその道を歩く。歩いた先にtmuxの部屋がある。部屋にはAI部下10人が待ってる。
全部無料。特殊なインフラは何もいらない。
WSLにTailscaleを入れる — そしてハマる 🔥
curl -fsSL https://tailscale.com/install.sh | sh

いつものワンライナー。ここまでは順調だった。
普通なら次は sudo tailscale up で終わる。ブラウザが開いて、Googleアカウントでログインして、おしまい。
WSLにブラウザがあればな。

^Ccontext canceled。sudo tailscale up。ダメ。sudo tailscale login。ダメ。--qr。ダメ。--force-reauth。ダメ。全部ダメ。
WSLにはブラウザがない。tailscale up は認証URLを表示してくれるはずだが、表示される前にハングする。4回Ctrl+Cした。
「もう帰りたい」と思った。トイレなのに。
Auth key方式で一発解決
ブラウザが使えないなら、ブラウザを使わなければいい。
Tailscaleの管理画面(これはPC側のブラウザで開ける)から Auth key を発行して、コマンドに直接渡す。
Settings → Keys → Generate auth key...

Descriptionに「WSL」と入れて Generate key。これだけ。
生成されたキーをコピーして:
sudo tailscale up --authkey tskey-auth-XXXXXXXXXXXX

--authkey で一発。ブラウザ不要。WSLの民はこれ一択。
一瞬で繋がった。さっきの30分は何だったのか。
繋がった 🎉
Tailscale管理画面のMachinesを見る。

desktop(WSL)と samsung(Android)、両方 ● Connected。
WSLが 100.109.3.74、Androidが 100.70.146.72。同じTailscaleネットワークに入った。
世界中どこからでも、このWSLに到達できる。
あとはSSHとTermuxだけ。
WSL側でSSHサーバを起動する(「道を歩く足」の受け入れ準備):
sudo apt install -y openssh-server
sudo service ssh start
スマホにTermux(あの黒い画面をスマホに出すアプリ。無料)を入れる。
Termuxを開いたら:
pkg update && pkg install openssh
ssh あなたのユーザー名@あなたのTailscale IP
パスワードを入れる。
multi-agent-shogunはtmuxセッションが2つある。
-
shogun— 将軍(指示を出す窓口) -
multiagent— 家老+足軽1〜8(実働部隊の9ペイン)
まず将軍に繋ぐ。
tmux attach -t shogun
将軍ウィンドウが開いた。ここに指示を打ち込む(or 声で喋る)。
次に、部下の様子を見たい。Termuxの+ボタンで新しいウィンドウを開いて、もう1本SSHを繋ぐ。
ssh あなたのユーザー名@あなたのTailscale IP
tmux attach -t multiagent
スマホの画面に、見慣れたtmuxの9ペインが広がった。
家老がいる。足軽がいる。全員待機中。

+ボタンで新しいウィンドウを開いて、もう1本SSHを繋ぐ。将軍とmultiagentを切り替えながら全軍を操作できる。
で、試しに音声入力で言ってみた。
「みんなに元気よく社訓をいわせよ」

家老:「以上、家老の八箇条にござる!」 足軽1号:「足軽1号、いつでも出陣の構えにござる!」
全員答えた。
TDD(Toilet Driven Development)の誕生である。
実はもう1コマンドで繋がる
multi-agent-shogunの first_setup.sh を実行した時点で、WSLの .bashrc にaliasが仕込まれている。
-
css→ 将軍に繋がる -
csm→ 家老+足軽に繋がる
つまりTermuxからは、SSHでWSLにログインしたらもうaliasが使える。
ssh あなたのユーザー名@あなたのTailscale IP
css # 将軍に繋がる
部下の様子も見たいときは、+ボタンで新しいウィンドウを開いてもう1本SSHを繋ぐ。
ssh あなたのユーザー名@あなたのTailscale IP
csm # 家老+足軽の9ペインが広がる
切り方
用が済んだらTermuxのウィンドウをスワイプで閉じるだけ。SSHは切れるが、tmuxセッションは生き残る。karoもashigaruも、オレがスマホを閉じた後も黙々と作業を続けている。
次に繋いだときも同じ。SSHでログインして css。続きから。
音声入力 × AI将軍 = 最強
Androidには音声入力がある。Termuxでも使える。つまり:
- Termuxを開く
- SSHでログインして
css(これだけはタイプ) - あとは全部、声で指示を出す
「バグ直しといて」→ 将軍がYAML書いて家老を起こす → 家老が足軽に振る → 足軽が直す。
オレはスマホに向かって喋っただけ。
初代の記事で「音声入力の悲劇」というスクショを載せた。殿(オレ)の音声入力が適当すぎて将軍が困惑するやつ。
あの適当さが、モバイル運用では最大の武器になった。
将軍は多少の誤字を解釈してくれる。「しゃくんをさけべ」が「社訓を叫べ」になろうが「車訓を叫べ」になろうが、文脈で理解する。相手がAIだから、打ち間違いを気にしなくていい。
スマホのちっちゃいキーボードでコマンドを正確に打つ必要はない。自然言語で喋れば、あとは将軍が全部やる。
WSL特有のハマりポイント
Tailscaleが再起動で死ぬ
WSLはデフォルトでsystemdが有効でない環境がある。PC再起動したらTailscaleが止まってる。
# WSL起動時に叩く
sudo tailscaled &
sudo tailscale up
sudo service ssh start
面倒なら起動スクリプトに仕込んでおく。オレはまだ手動で叩いてる。
tmuxは死なない
SSHが切れても、tmuxセッションは死なない。電車でトンネルに入っても、トイレから出ても、SSHでログインして css と打てば続きから。
まとめ
Before:
PCの前に座る → 将軍ウィンドウに指示 → 待つ
After:
どこでもスマホ → 声で指示 → AI部下が動く
ベッドから。散歩中から。トイレから。
必要なもの:
- Tailscale(無料)
- SSH(標準装備)
- Termux(無料)
全部無料。セットアップはハマらなければ10分。
AI部下が10人いて、自然言語で指示が出せて、音声入力が使えるなら、開発はどこでもできる。
TDD — Toilet Driven Development。
テスト駆動開発じゃない方のTDD。
おまけ:家老の八箇条
「社訓を叫べ」と命じたら、家老が自分で考えた社訓を全員に共有し始めた。
オレは社訓なんて作ってない。家老が勝手に作った。
スクショをよく見ると、家老のペインに「忘れたら切腹!」「正データはYAML!」「通信ロストを見逃すな!」とか書いてある。
全部、CLAUDE.mdに書いてあるルールを家老なりに咀嚼して「社訓」にしたっぽい。指示書を社訓にするの、中間管理職すぎる。
八箇条の中身は毎回変わる。自分でshogunを立てて「社訓を叫べ」と言ってみてほしい。何が出てくるかはkaroの気分次第。
Discussion