3/2

2026

スマホから将軍Claudeに指示するだけ — いつでもどこでも爆速開発

#Claude Code#マルチエージェント#AI#tmux#Notion#リモート開発スマホから将軍Claudeに指示するだけ — いつでもどこでも爆速開発

スマホから将軍Claudeに指示するだけ — いつでもどこでも爆速開発

自分がやったのはNotionにやりたいことをざくざくと書いて渡しただけ。それだけでWebサイトがデプロイされて、iOSアプリがTestFlightに配信されて、App Storeのリジェクト対応まで自動で回る。実家からスノボや夕食の合間に指示を出すだけで、休みを犠牲にして集中開発していたときの5倍くらいの速さでアプリができあがることに感動を覚えた。

この記事では、その仕組みの全体像を書く。


きっかけ

Claude Codeで「AI部下10人」を作ったら、開発が"指示するだけ"になった

この記事を読んで「自分でも作ろう」と思った。Claude Codeをtmuxのペインに複数並べて、それぞれにロールを持たせるアイデア。これをベースに、戦国時代の組織構造をモチーフにした「将軍マルチエージェントシステム」を作った。

システム構成

将軍・家老・足軽の3層構造

  • 将軍(Shogun): 戦略を決める人。cmdというYAMLに「目的」と「完了条件」を書いて家老に渡す。自分ではコードを書かない
  • 家老(Karo): マネージャー。将軍のcmdを具体的なsubtaskに分解して足軽に割り振る。品質管理とダッシュボード更新も担当
  • 足軽(Ashigaru): 実装担当。コードを書く、テストする、PRを出す

これを4プロジェクト同時に運用していて、各プロジェクトに将軍+家老+足軽2名を配置している。

足軽は2人で十分

元ネタ記事では足軽8人の構成だったけど、8人いても手が空いてしまうことが多い。タスクの依存関係やレビュー待ちがあるので、同時に走らせられる作業には限界がある。実際は足軽2人でわりとうまく回っている。

コスト

最初は10人体制 x 4プロジェクトで走らせたら、$200のMaxプランでもトークンが5日で枯渇した。足軽を2人に減らしたら劇的に改善した。

⚡ 10人 x 4プロジェクト = 楽しいけど破産する。足軽は2人で十分。

Notion連携 — これが一番便利

最初はTailscale(VPN)で自宅Macにリモートアクセスしようとした。でもブラウザからターミナルを操作するとき、Escapeキーみたいな特殊キーを送る仕組みが別途必要だったり、VPN自体の取り回しが面倒だったりで、結局やめた。

そこで思いついたのがNotionを中間レイヤーにする方法。Notionに書いたらエージェントがそれを読みに行く。返信もNotionに返ってくる。結果的にmultimodal(画像+テキスト)でやり取りできるので、これでよかったと思っている。本来はSlackとかでやるのが一般的なのかもしれないけど、せっかくNotion課金しちゃったのでしばらくこれで行く。

30秒ポーリングとディスパッチ

プライベートなNotion DBに30秒に1回ポーリングしている。各ページには「プロジェクト名」プロパティと「WaitingShogun」フラグがあって、WaitingShogunが立っているページを検知したら該当プロジェクトの将軍に自動でディスパッチする。

将軍が処理したら同じNotionページに返信が返ってくる。画像もテキストも送れるので、お互いmultimodalでやり取りできている。「ここのUI直して」とスクショを貼ると、将軍がそれを見て指示を出し、足軽が修正して完了スクショを返してくる。

💡 スマホからNotionで指示するだけでリモート開発が可能。自分がやるのはNotionにざくざく書いて渡すだけ。

日常の開発フロー

朝起きたらNotionを開いて「状況は?」と聞く。将軍から進捗報告が返ってくるので、布団の中でそのまま「じゃあこれやって」と書く。

具体的にはこんな流れ。

  1. Notionに「ダイエット記事を追加して」と書く
  2. 30秒ポーリングが検知 → 将軍にディスパッチ
  3. 将軍がcmd YAMLを書く → 家老がsubtaskに分解
  4. 足軽が記事を書いてPR作成 → マージ → Netlifyが自動デプロイ
  5. 完了通知がNotionに返ってくる

自分がやったのはNotionに1行書いただけ。スマホで指示を出しながら、Webサイトのデプロイや iOSのTestFlight配信まで自動で行ってくれるのは正直感動した。

実際のNotionのやり取りはこんな感じ。「状況は?」と聞くだけで将軍から進捗が返ってくる。

Notion上での状況確認のやり取り

将軍掲示板の一覧。いろんな指示やレビュー依頼がずらっと並んでいて、ここに書くだけで全部処理される。

将軍掲示板の一覧画面

Apple審査リジェクトの自動対応

Notion連携の応用で、App Storeのリジェクト対応も自動化した。Appleからリジェクトメールが来たら、Gmailのフィルタでラベルを付けて、そのラベルをGAS(Google Apps Script)で監視してNotion DBに自動保存する。Notionに保存された時点でいつものポーリングフローに載るので、将軍が自動でリジェクト対応を始める。寝てる間にリジェクト対応のPRが上がっていたこともあった。

fastlaneによるCI/CD自動化

iOSアプリの証明書管理にはfastlane matchを使っている。証明書とプロビジョニングプロファイルをGitリポジトリで一元管理するので、エージェントが勝手に証明書を作り直してしまう心配がない。

App Storeへの審査提出もfastlaneで自動化した。ビルド→署名→アップロード→審査提出までコマンド一発。スマホからNotionで「提出して」と書けば、あとはエージェントがfastlaneを回して審査に出してくれる。

もともとXcode CloudやBitriseを使っていたけど、ローカルMac + Claudeのほうが高性能で取り回しもしやすい。CI/CDやビルドサービスをクラウドSaaSに頼らなくても、ローカルMac + AIエージェントで全部完結する。確かに「SaaSの死」の片鱗を感じた。

PC常時稼働

自宅のPCは常に起動していて、caffeinate -simコマンドでスリープにならないようにしてある。-sはシステムスリープ防止(AC電源時)、-iはアイドルスリープ防止、-mはディスクアイドルスリープ防止。これで外出先からNotionで指示すればいつでもエージェントが動く。

コンテキスト管理

マルチエージェントで一番大変なのがコンテキスト管理。セッションが切れたり/clearされるたびに文脈が消えるので、何層にも分けて永続化している。

4層構造

  1. CLAUDE.md: 全エージェント共通のルール。Session Startの手順、禁止行動、通信プロトコル。プロジェクトルートに置くとClaude Codeが自動で読む
  2. instructions/: ロール別の指示書。shogun.mdkaro.mdashigaru.mdにペルソナ・権限・禁止行動を記載
  3. context/: プロジェクト別のコンテキスト。Xcodeのワークスペース構成やSD環境の詳細など
  4. Memory MCP + YAML Queue: Memory MCPで永続記憶。YAML Queueでタスクデータ(cmd、subtask、report)を管理

📝 CLAUDE.mdのSession Start手順が最重要。「1. 自分のIDを確認 → 2. 指示書を読む → 3. メモリ復元 → 4. YAMLから状態復元 → 5. 作業開始」。全エージェントが/clearのたびにこれを実行する。

docs/による知識永続化

加えて、永続化しておきたい知識は各プロジェクトにdocs/ディレクトリを作ってgitで管理している。特に環境構築はいろんな設定をいじるので、何をやったかdocsに明示してもらっている。こうしておけば後から「この設定いつ変えたっけ?」というときにgit logで追跡できる。

エージェント間通信

メッセージングはファイルベース。inbox_write.shでYAMLファイルに書き込み、inbox_watcher.shがファイル変更を検知してtmux send-keysで相手を起こす。メッセージはYAMLに永続化されるので途切れても消えない。応答がなければ3段階エスカレーションして、最終的に/clearでセッションをリセットし自動復帰させる。

Git管理

worktreeで並列作業

複数の足軽が同じリポジトリで同時に作業するためにgit worktreeを使っている。各足軽がそれぞれのworktreeで別ブランチを切るので、コンフリクトが起きない。

~/.claude-worktrees/
├── miyashiapp/
│   ├── header-redesign/    ← 足軽1がヘッダー改修
│   ├── tag-filter/         ← 足軽2がタグフィルタ実装
│   └── diet-article/       ← 足軽1がダイエット記事

Git-Flow + matomeブランチ

ブランチ戦略はGit-Flowベース。developを開発の中心に置いて、リリース時にはdevelopからリリースブランチを切る。足軽のfeatureブランチはmatomeブランチに集約して、自分のGoサインでdevelopにマージする。

main                          ← リリースタグ
 ↑
release/v1.2.0                ← developから切る
 ↑
develop                       ← 開発の中心
 ↑
matome-20260301               ← 足軽の作業をここに集約
 ↑
feature/fix-header            ← 足軽の個別ブランチ

アプリ開発(iOS/Android)ではバージョン管理やストア審査があるのでGit-Flowが自然にフィットする。Web開発だとmainにマージしたら即デプロイみたいなフローのほうが合うかもしれない。

冗長性 — supportエージェント

将軍システムとは別にsupportエージェントを立ち上げている。

  • Claudeがスタックしたら、supportが外からプロセスを立ち上げ直す
  • supportが落ちている時は、将軍にsupportの起動を頼める

この相互復旧の仕組みがあるおかげで、遠く離れた実家からでも片手間でスマホアプリ開発ができた。「エージェント止まってるな」→ Notionで「support再起動して」→ 復旧。

⚡ 単一障害点がない。誰かが落ちても他の誰かが起こせる。

Stable Diffusion

サムネイル画像の生成にローカルのStable Diffusion環境を使っている。面白いのは、この環境構築自体をAIエージェント(足軽)がやったこと。diffusersのインストールからモデルのダウンロード、生成スクリプトの作成まで全部自分で。

ちなみにこのSDのセットアップは、自分がスノボをやりながらNotionで指示を出して構築させた。ゲレンデのリフトの上からポチポチ指示するだけで環境が出来上がっていく。この記事のサムネイルもAIが生成している。

まとめ

  • 構成: 将軍・家老・足軽の3層。Claude Code + tmux。4プロジェクト並行
  • コスト: 10人は破産する。足軽2人で十分。8人いても手が空く
  • Notion連携: 30秒ポーリング + WaitingShogunでディスパッチ。multimodalで画像つきやり取り
  • 自動化: Webデプロイ、TestFlight配信、fastlane match + 審査提出、Apple審査リジェクト対応まで自動
  • コンテキスト: CLAUDE.md / instructions/ / context/ / Memory MCP + YAML Queueの4層 + docs/でgit管理
  • Git: worktree並列 + Git-Flow + matomeブランチ
  • 冗長性: supportエージェントで相互復旧

仕組みを作るまでが大変だったけど、一度作ってしまえばNotionにざくざく書いて渡すだけで全部回る。自分はほとんど手を動かしていない。