あるXのポストに、こんな趣旨の不満が書かれていた。公式のスマホアプリからClaude Codeに指示は出せる。ただ、一部の設定やコネクターの再認証のときは、PCのターミナルに戻らされる。外出先でも、そこまでアプリの中で済ませたい、という内容だった。
私は、この不満が出る形とは別のやり方で使っている。アプリを経由せず、Claude Codeが動いている端末の画面そのものを、スマホで開く。 この記事では、その仕組みと弱点を書く。
何をしているか
PCの端末(ターミナル)の中でClaude Codeを動かしている。その端末の画面を、スマホから、そのまま開いている。
スマホ側では、a と打つだけで、PCのClaude Codeの画面に入る。PCの前に戻ったら、cc と打てば、同じ画面が出る。どちらから入っても、同じ画面に入る。会話の途中のまま、続けられる。
端末の画面そのものなので、設定の変更も、再認証も、PCで打つのと同じコマンドを、スマホで打てる。戻る場所が、そもそも無い。
使っているもの
| 名前 | 役割 |
|---|---|
| tmux | 端末の中身を保つ。画面を閉じても、接続が切れても、中の作業が残る。あとで同じ画面に入り直せる |
| mosh | SSHの仲間。Wi-Fiが変わる、スマホがスリープする、といった回線の切れ目があっても、つなぎ直さずに続く |
| SSH(鍵認証) | PCに入るための入口。パスワードでのログインは切って、鍵だけにしている |
| Tailscale | 外から自宅のPCに届く経路(VPN) |
| Termux | スマホ(Android)側の端末アプリ。ここでmoshを動かす |
流れは、こうなる。
- スマホのTermuxで
aと打つ。これは、moshでPCに入り、tmuxのdevというセッションに入る、という命令の短縮(エイリアス)。 - SSHでPCにつないだあと、mosh-serverがその場で起動して、UDPで、つなぎ直す。
- tmuxの
devに入る。そこで、Claude Codeが動いている。
PCの前では、cc で、同じ dev に入る。cc は、tmux new -A -s dev(あれば入る、無ければ作る)の短縮にしてある。
つまずいた点
- mosh-serverは、常駐しない。 つなぐたびに起動する。誰もつないでいないときに動いていないのは、正常。
- moshの
-pは、SSHのポートではなく、mosh自身のUDPポート。 SSHのポートを変えているなら、--ssh="ssh -p ポート番号"の形で渡す。 - ロケールが無いと、moshが接続に失敗する。 UTF-8のロケールが必要で、PC側で生成しておかないと、「needs a UTF-8 locale」で止まる。
- スマホのTermuxは、Androidに、バックグラウンドで止められることがある。 接続が切れたら、Termuxを開き直す。
弱点
- PCが起きていることが前提。 落ちているときは、家のNASから、Wake-on-LANで起こしている(
wake-archという命令にしてある)。 - PCを再起動すると、tmuxごと消える。
devセッションも、中で動いていたClaude Codeも、再起動のたびに作り直しになる。電源が切れていたPCをWake-on-LANで起こした場合も、同じ。会話は、Claude Code側の--continueで、続きから再開できる。 - 画面が小さい。 長い出力を読むのは、スマホでは辛い。長い出力は、ファイルに書かせて、あとで読む。
- 日本語の入力は、端末アプリ越しだと、PCの前より手間がかかる。
- 公式アプリとは、役割が違う。 通知や、アプリの画面での確認は、アプリの方が楽。私は、Remote Control(公式アプリからの指示)も有効にしてあり、必要に応じて使い分けている。
まとめ
- 公式アプリで足りない場面(設定、再認証)は、端末の画面を、そのままスマホで開けば、戻らずに済む。
- 必要なのは、tmux、mosh、PCに届く経路、鍵認証のSSH。
- 弱点は、PCが起きている必要があること、画面が小さいこと。
セキュリティ面では、SSHをパスワードなし(鍵認証のみ)にして、外からは、VPN経由でしか入れない形にしておくのが前提になる。この記事では、ポート番号やアドレスなど、環境の具体的な値は書いていない。
