Claude Codeをスマホでリモート、その場でペインが増える

SIOS Tech.Lab banner featuring a large Japanese headline 'リモートでセッションを増やす' on a grid blueprint background with a small subtitle and schematic drawing on the right side.

ども!最近はスマホから Claude Code に指示を投げてばかりいる龍ちゃんです。

少し前に「AI に任せたんなら散歩でも行ってきたら」みたいな話を見かけまして。真に受けて、本当に行ってきました。歩きながらスマホをいじっていたんですが、そのとき効いていたのは散歩そのものではなくて、席を立ってもいい状態のほうでした。

Claude Code には、PC で動いているセッションにスマホから入って続きができる機能があります。公開されたときに一度触って、そのまま戻した人も多いんじゃないでしょうか。僕もそうでした。スマホからだと結局なにも確認できないな、と思って。

そこから半年ほど使い込んで、いまは毎日これで動かしています。今回はその話です。

今回の内容です。

  • 繋ぎ方と、スマホ側は入力が速いという話
  • リモートだと作業を分けられない、という詰まり
  • スマホから一言で、セッションごと増やす
  • リモートに残るつらさ2つと、その凌ぎ方

繋ぐのは一瞬。あとは喋って、撮って、投げるだけ

動いているセッションの中で、こう打ちます。

/remote-control

以上です。名前を付けたいときは /remote-control main のように渡します。あとはスマホの Claude アプリを開いて「コード」タブを見ると、そのセッションが並んでいます。タップすれば続きから喋れます。

起動のしかたは他にもありますし、プランの条件や環境変数の要件もあります。そのあたりは公式ドキュメントが正なので、そちらを見てください。ここに手順を書き写すのはやめておきます。5ヶ月前に自分用のメモとして書いた手順を今日読み返したら、見事に腐っていました。

繋いだあとの入力の話をします。外では、文字を打っていません。喋っています。

歩きながら画面を見て打つのは単純に危ないですし、周りにも迷惑です。かわりに口で言って、送信を押す。これだと前を向いたまま指示が出せます。外に持ち出したときに効くのは、この入力のほうでした。

音声入力なので表記は崩れます。固有名詞は化けるし、英語と日本語が混ざるとだいたい変なところで切れます。それでも通ります。整えてから出さなくていいので、思いついた形のまま投げています。

写真も同じで、撮ってその場で投げられます。僕はジムに Claude を連れて行ってトレーナーをやらせていて、トレッドミルの表示を撮って送ると、数字を読んで前回と並べて返ってきます。その運用そのものは「Claude Codeをジムに連れ出したらトレーナーになっていた」に書いたので、ここでは写真が飛んでいくところだけ。

スマホから撮った写真を投げると、数字を読んで前回と並べて返ってくる

机の前だと、スクリーンショットを撮って、保存して、パスを渡して、という手数が要るところです。スマホは撮る動作がそのまま入力になります。

喋っても撮っても、前提がひとつあります。動いているのはあくまで手元の PC なので、そこが止まると出先で何を打っても進みません。

蓋を閉じただけなら大丈夫で、復帰したときに繋ぎ直してくれます。ただ寝ている間は当然ながら1ミリも進んでいません。出先で指示を出したつもりが、帰ってから動き出すやつです。回線のほうはもう少し厳しくて、10分ほど繋がらない状態が続くとセッションは時間切れになり、プロセスごと落ちます。

要するに、起こしておいて、繋いでおく。ここは社内に良い記事があるので、そちらへどうぞ。佐々木さんの「満員電車でも Claude Code を動かし続ける技術」です。僕は電源設定まわりをこれで直しました。

リモートだと、作業を分けられない

喋れば投げられる状態でうろうろしていると、思いつくことがどんどん増えます。ログも見たいし、別の記事のネタも転がしたいし、さっき止めた調査の続きもやりたい。歩いているときや電車の中って、なぜか発想が散らかるんですよね。

普段、手元で作業しているときはこういう状態にはなりません。関係ない話を1本のセッションに積むと動きが鈍るのは体感で分かっているので、用が変わったら素直にセッションを分けます。ペインを増やすなり、ウィンドウを開くなり、やりようはいくらでもあります。

ところがリモートだと、これができません。

繋がっているのは動いているセッション1本で、そこから増やす手段が見当たらない。まったく手が無いわけではなくて、Agent に投げればコンテキストは分かれます。ただあれは会話の相手にはならないんです。投げて、返ってくるだけ。走っている途中で「やっぱりそっちを先にして」が言えない。

分けたほうがいいのは分かっているのに、分ける手段がない。ここが半年くらい、ずっと引っかかっていた場所でした。

スマホから一言で、セッションごと増やす

そこで登場するのが tmux です。手元でいつもペインを増やしているのも、これです。

tmux はターミナルを多重化するツールで、1枚のターミナルから新しいターミナルを切り出せます。切り出した1枚が「ペイン」です。効いてくるのはもう片方の顔で、ペインからペインへ操作を送り込めるんですよね。隣で代わりにこれを打っておいて、が別のペインから頼める。つまりClaude Codeに依頼をすればBashコマンドで増殖できるんですね!

手元のセッションに auto mode を渡してあるなら、そいつに tmux を触らせればいい。

スマホからこう言います。

サブを追加で切って
Auto mode remote control  blog -idea
でよろしく

これも音声入力なので、表記は崩れたままです。blog -idea はハイフンの前にスペースが入っているし、真ん中だけ英語になっている。それでも通ります。

手元がやっているのはシェル3本です。

tmux send-keys -t 0:1.3 \
  "claude --permission-mode auto --remote-control blog-idea" Enter; \
  sleep 6; tmux capture-pane -p -t 0:1.3 | tail -25

ペインを割って、そこにコマンドを送り込んで、6秒待って、その画面を読み返しています

最後の読み返しが効きます。起動して終わり、にしないので、生えた側が本当に立ち上がったかを確認してから報告が返ってくる。スマホ側に「たぶん動いてるはず」を抱えなくて済むのが、思っていたよりありがたかったです。

手元では3枚目のペインが生えて、そこで新しいセッションが動いている

起動する場所はリポジトリのルートに固定しています。ここを外すと .claude/ に置いた設定を拾ってくれないので、生えた先だけ別人みたいな振る舞いになってしまいます。

46秒後、スマホの一覧はこうなっていました。

セッション一覧に blog-idea が増えている

blog-idea が先頭に増えています。URL を叩いて入る必要はなくて、勝手に並びます。スマホで口走った blog -ideablog-idea として見出しになっているのも、あとから見分けるときに助かりました。(このあたりはClaudeがいい感じに解釈してくれます。)

嬉しかったのは、事前に建てておかなくていいことでした。用途ごとにセッションを用意しておく運用も一度やってみたんですが、結局そのとき欲しくなる箱は事前には分かりませんでした。思いついた順に、思いついた名前で生やすほうが性に合っていました。

「1プロセスにつき1リモートセッション」という制約は、いまも生きています。これはその制約を破っているのではなくて、プロセスのほうを増やして回り込んでいるだけです。

ここまで書いておいてなんですが、公式にはサーバーモードという手もあります。claude remote-control で起動しておくと1プロセスで複数のセッションを捌けますし、--spawn worktree を付ければセッションごとに git worktree まで分けてくれます。

それでも僕がペインを切っているのは、増やしたくなるのがいつも作業を始めたあとだからです。机で普通に claude を立ち上げて、出先で用が増える。そのときにはもうサーバーモードでは起動していません。あとから起こすにしても、結局どこかでプロセスを1つ立てる必要があって、それをスマホから頼めるのがこの手の効きどころでした。

繋いだ先には、つらいところが2つある

ここまでが良かった話です。良くない話もします。

変化の全体像が見にくい

よく「スマホからだと何も見えない」と言われますし、僕も最初はそう思っていました。これは違いました。

変更したファイル名は出ます。増減の行数も出ます。タップすれば、その編集が何を書いたかまで読めます。読めるんです。

一覧には +20 -6 まで出ていて、タップすると中身が読める

しんどいのは「で、結局どこがどう変わったの」のほうです。1件ずつなら読めるので、材料は全部そこにあります。ただ5ファイル触ったあとに全体を俯瞰しようとすると、1件ずつ開いて頭の中で組み立て直すことになる。まとめて1枚で見る手段がないぶん、そこだけ極端に手数が増えます。

「差分が見えない」と一言で片付けると嘘になるので、ここは分けて書いておきます。見えないのではなく、見にくい。 届いていないものは無くて、まとめて見られないだけです。

放っておくと切れる

さっきのジムのセッションも、器具を移動して戻ってきたら「このセッションはアーカイブされました」と出ていました。写真を投げて遊んでいる分にはよかったのに、少し放っただけで切れます。

何分で切れるかは、正確なところが分かっていません。僕の体感でもばらばらですし、調べてみたら公開されている報告も5分から30分くらいに散らばっていました。たぶん定数ではないです。なので僕の環境の数字を書いても、あなたのところでは再現しないと思います。

GitHub の Issue は上がっていますし、一度は直っています。ただ、その修正が全員に届いているわけではない、というのが現状に近い説明になります。直ってはいるけれど、自分のところには来ていない。

送信ボタンを毎回手で押すのが面倒、みたいな小さい不便もありますが、まあそれは些細な話で。困るのは上の2つです。

そしてこの2つ、繋いだ先をどういじっても直りません。

直すのは、繋いだ先ではなく手元

なので手元のほうを変えます。やっているのは2つです。

見にくいなら、見やすい形で返させておく。

図や表は作らせればセッションにそのまま出るので、確認したいものは最初から画像で出させます。長い一覧や比較表は Artifact に逃がして、スマホのブラウザで開きます。作った時点では自分にしか見えないので、そのまま個人用のビューアとして使えます。小さい画面に何を出させないかを決めておくと、ずいぶん読みやすくなりました。

ファイルそのものを送らせる手もあります。「アウトライン送って」と言えば、その .md がスマホに届きます。

スマホにはカードで届いて、タップするとファイルの中身がそのまま開く

差分の一覧から1件ずつ開いていくのとは別で、こちらはそのファイルの現在形が丸ごと来ます。確かめたいものが1つに決まっているときは、これがいちばん速いです。

ただ、長いものは長いまま届きます。86行の md は86行のまま来るので、小さい画面で上から読み下すのはやっぱり疲れます。1点を確かめるには効きますが、全体像のほうはこれでも埋まりません。

なので、いちばん使っているのはこれです。

!git push origin main

! を付けると Claude を挟まずシェルに直接届くので、「これから push します」の口上が挟まりません。結果だけ返ってきます。押してしまえば、あとは GitHub のスマホ表示が差分を全部見せてくれる。横断した眺めは元から Git が持っているので、そこへ寄せれば済む話でした。もちろん、「プッシュして」という依頼もありですね。

これ、リモート用の特別な仕込みがゼロなのが良くて。普段からやっている push が、そのまま解決策になっています。

見にくいほうはこれで足ります。残りは、切れるほうです。

切れるなら、切れる前につついておく。

繋ぎっぱなしにする小細工はいくつか試したんですが、効いたのは結局これでした。定期的に本物の仕事をさせておく。裏側の理由まで書くと長くなるので畳みますが、「生きてます」という信号を送るだけでは足りなくて、実際のやりとりが要るようです。

つついておけば、繋がったままにはできます。

並べてみると、どちらも同じことをしています。向こう側は変えられないので、こちら側を変えている。 見にくいほうは受け取る形を変えて、切れるほうは触る頻度を変えているだけで、やっていることは一緒でした。

ここまでを1枚にすると、こうなります。

スマホから手元へ向かう矢印は太く、戻ってくる矢印は細い。手を入れられるのは手元側だけ

行きは太いままです。喋れば通るし、撮れば送れるし、一言でセッションまで増える。細いのは帰りだけで、そこは繋いだ先では太くできません。

おわりに

半年前に一度戻した機能ですが、いまは毎日使っています。

窓口はその場で増やせるようになりましたし、残ったつらさも手元で凌げます。散歩に行ってこい、はわりと本当でした。

最後に2つだけ。向きの違う注意です。

ひとつは内向きの話で、この記事は auto mode を前提に書いています。確認を飛ばして動く設定なので、何を触らせるかは分かったうえで渡してください。僕は自分のリポジトリの中だけで使っています。基本的にコンテナで運用しているので、リポジトリの内部がメインの対象になります。

もうひとつは外向きの話で、人に見せるなら公開範囲を一度見ておいてください。セッションの共有は Settings > Privacy > Shared chats から棚卸しできます。Artifact のほうは、個人プランだと共有=公開リンクの一択です。しかもヘッダに自分の名前と、作った Artifact が全部並ぶギャラリーへのリンクが付くので、1枚だけ見せたつもりにならないように。

そして、繋がるようになったことと、任せられるようになったことは、まだ別の話です。受け取ったものを見てどう判断するか、そこは別の記事で書きます。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。
エンジニア募集中!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です