画面分割すら使えない私が、tmuxをAI CLIの作業場として使っている
読了 約9分
What's in this posts
iPhoneから自宅のMac miniに入り、Claude Codeを動かしていたときのことです。
作業の途中で別のアプリを開いたり、画面をロックしたり、電波が切れたりしました。あとで戻ってくると、tmuxの中に同じ画面がそのまま残っていました。AIが作業中の出力も、開いていたログも、そのままです。
そのとき、ふと思いました。
「tmuxって、AI CLIの作業場を残しておくために使うと、かなり便利なのでは?」
この記事は、その感想を備忘録として書いたものです。tmuxの解説記事ではなく、使ってみて便利だったという体験ベースの記録です。ちなみに私は画面分割すら満足に使えていません。基本コマンドしか覚えていません。それでも、AI CLIの作業場を残す用途なら十分役に立っています。今更かな?
はじめに:今更tmuxが便利だと思うようになった
tmuxは昔から名前は知っていましたし、使ったこともあります。でも正直、そこまで必要性を感じていませんでした。
以前のtmuxに対する印象
私にとってtmuxは、こういうツールでした。
- ターミナルを分割するツール
- SSHが切れても処理を残せるツール
- サーバー管理をよくする人向けのもの
便利なのは分かるけれど、GUI中心の普段使いでは「必須」というほどではありませんでした。ターミナルアプリを複数ウィンドウ開けば済む話も多く、わざわざtmuxを立ち上げる動機が弱かったのです。
きっかけはAI CLIのリモート運用だった
変わったのは、Claude CodeやCodex CLIをMac mini上で動かすようになってからです。さらに、iPhoneやiPadからそれらを触るようになって、tmuxの意味が変わって見えました。
単発のコマンドなら再実行すれば済みます。でもAI CLIの場合は、そこまでの会話や作業の流れごと残したくなる。そこでtmuxが急に便利に見えてきました。
自宅のMac mini M4をAI・開発作業用サーバーにしている
前提として、私の環境を軽く説明します。スペック自慢(大した環境ではない)ではなく、「なぜtmuxが必要になったのか」の背景です。
iPhone / iPadからMac miniへ入る構成
自宅のMac mini M4を常時稼働させ、AI・開発作業用のサーバーのように使っています。そこへiPhoneやiPadから入る構成はこうです。
iPhone / iPad
↓
Moshi / Termius
↓
Tailscale
↓
Mac mini M4
↓
tmux
↓
Claude Code / Codex CLI
自宅ネットワークに限らず、外出先からTailscale経由でMac miniに入れるようにしています。
図の中で役割が分かれています。Moshi / Termiusは接続アプリ、TailscaleはMac miniまでの到達経路、tmuxはMac mini上の作業場、その中でClaude Code / Codex CLIが動きます。接続が切れても、tmuxとAI CLIはMac mini側で動き続けます。
PCの前に座らず、必要なときだけ作業環境へ入る
大切にしているのは、「Mac miniの前に座って作業する」のではない、という点です。
Mac mini上に作業環境を置いておき、必要なときだけそこへ入ります。PCの前に座り続ける必要はありません。この考え方が、tmuxと相性がいいんです。tmuxは、Mac mini上に残り続ける作業スペースのように使えます。
Moshiを使い始めてリモートCLIがかなり自然になった
iPhoneからCLIに入る体験は、Moshiを使い始めてから大きく変わりました。通信が不安定でも扱いやすく、スマホからターミナルを触るのが自然になりました。
ただ、この記事はMoshiのレビューではありません。あくまで「Moshiを使ったことでリモートCLI利用が増え、その結果tmuxの価値に気づいた」という位置づけで書きます。
AI CLIは、普通のCLIより「セッションを残す価値」が高い
ここからが記事の中心です。なぜAI CLIとtmuxの相性がいいのか。
Claude Code / Codex CLIには作業の流れがある
Claude CodeやCodex CLIでは、以下のような情報がひとまとまりになっています。
- AIとの会話
- 現在作業しているディレクトリ
- 実装途中の状態
- コマンド実行結果
- エラー
- git diff
- ログ
普通のCLIなら、コマンドを再実行すれば済む場面も多いです。でもAI CLIでは、「そこまでの会話や流れ」も含めて作業状態になります。
コマンド単体ではなく、作業場そのものを残したい
AI CLIでは、単にプロセスが落ちなければよい、というだけでは足りません。「いま何を相談していたか」「どこまで実装したか」「直前にどんなエラーが出たか」が重要になります。
tmuxの中に入れておくと、作業画面ごと残せます。AIとの会話も、開いていたログも、エラーの履歴も、そのまま残る。これが普通のCLI以上にありがたいんです。
再接続したときに同じ画面から続けられる安心感
iPhoneで一度アプリを閉じても、通信が切れても、あとから戻れば同じ画面に戻れます。
- AIが作業中だった出力
- ログを見ていた状態
- diffを確認していた画面
- エラーを読んでいたところ
こうした状態が残る安心感は、実際に使ってみないと分かりにくいかもしれません。でも一度この感覚を知ると、素のSSHでAI CLIを動かすのは少し不安になります。
スマホから使うとtmuxのありがたさがよく分かる
スマホ利用ならではの話です。PC上のターミナルだけでは見えにくかったtmuxの価値が、スマホから使うとよく分かります。
スマホでは通信切断やアプリ切り替えが前提になる
スマホでは、以下が普通に起きます。
- アプリを切り替える
- 画面をロックする
- 移動する
- Wi-Fiとモバイル回線を行き来する
- 通知を見て戻る
PCよりも、接続が途切れる前提で考えた方がよいんです。
SSHだけだと切断が気になる
普通のSSH接続だけだと、切れたときに作業中のCLIがどうなるか気になります。特にAI CLIで長めの処理や会話をしているときは、接続切断がストレスになります。
「AIに任せている間にトイレに行って戻ったら、接続が切れていた」みたいなことが、スマホだと普通に起きます。
tmux内で動かしておけばMac mini側に作業が残る
tmuxの中でClaude CodeやCodex CLIを動かしておけば、接続元のiPhoneやiPadがどうなっても、Mac mini側にセッションが残ります。
具体的な流れはこうです。
- iPhoneからClaude Codeを起動
- 途中でアプリを閉じる
- 通信が切れる
- あとから再接続
- 同じ作業画面から再開
この流れが自然にできるようになったのが、私にとっての山場でした。「閉じても戻れる」という感覚が当たり前になります。
tmuxはAI CLIの常駐ワークスペースとして使う
tmuxを「画面分割ツール」としてではなく、「AI CLIの作業場を常駐させる仕組み」として捉え直すと、しっくりきます。
プロジェクト単位でセッションを分ける
用途ごとにtmuxセッションを作ります。例えばこんな感じです。
claude-ocr
codex-blog
server
study
セッション名を見るだけで、何の作業場か分かるようにしています。
AIごとではなく「プロジェクト × AI」くらいが分かりやすい
単に claude や codex で分けるよりも、何の作業をしているか分かる名前の方が戻りやすいです。
tmux new -s claude-ocr
tmux new -s codex-blog
Claude Code用・Codex CLI用という分け方もありつつ、実際にはプロジェクト名を入れた方が管理しやすいと感じています。後で「あの作業、どのセッションだっけ?」と探すときに、プロジェクト名が含まれているとすぐ分かります。
画面分割は使えていない。セッションを分けるだけ
正直に言うと、私はtmuxの画面分割(ペイン分割)を使えていません。画面を分割する操作や、そのためのキーバインドを覚えていません。使っているのはセッションを分けることだけです。
それでも不便を感じていません。スマホでは画面が狭いので、細かく分割するより、セッション単位で作業を分けた方が扱いやすいですし、そもそも私が使いたいのは「分割」ではなく「残す」の方だからです。
この記事の主役はあくまで「セッションを残すこと」です。ペイン分割やキーバインドは、使いたくなってから覚えれば十分です。
実際に覚えているtmuxコマンドは少ない
初心者向けコマンド集にするつもりはないので、私が実際に使っている最小限だけ紹介します。
新しいセッションを作る
tmux new -s 名前
例:
tmux new -s codex-blog
セッション一覧を見る
tmux ls
いまMac mini上にどんな作業場が残っているか確認するためのコマンドです。これを実行するだけで、「あ、あの作業まだ残ってた」と思い出せます。
既存セッションに戻る
tmux a -t 名前
例:
tmux a -t codex-blog
「戻る」という感覚が大切です。新しく始めるのではなく、残しておいた作業場に帰ってくる感覚です。
セッションを終了する
tmux kill-session -t 名前
不要になった作業場を閉じるときに使います。ただし、そのセッション内で動いているプロセスも一緒に終了するので、AI CLIがまだ動いているときに実行すると作業も止まります。detach(次の項目)で離れるのと使い分けると安全です。
detachだけ覚えておく
Ctrl+b → d
tmuxから抜けるけれど、セッションは残す操作です。スマホから使う場合は、「作業場をMac mini側に置いて離れる」感覚に近いです。終了ではなく、一時的に離れるだけ。
Moshiはtmuxの便利さに気づくきっかけだった
最後にMoshiについて触れておきます。Moshiを使い始めたことでリモートCLI利用が増え、その結果tmuxの価値に気づきました。
Mosh通信によってスマホからの接続が扱いやすくなり、そこにtmuxを組み合わせることでAI CLIの作業場をMac mini上に残せます。Moshが「接続の不安」を減らし、tmuxが「作業場の喪失」を防ぐ、という役割分担です。アプリを閉じても通信が切れても、また戻れば続きが見える。この「閉じても戻れる」感覚が、AI CLIとtmuxの相性を実感するきっかけになりました。
まとめ:AI CLI時代に、昔からあるtmuxの価値が変わった
tmux自体は昔からあるツールですが、AI CLIやスマホリモート運用によって、私の中で価値が変わりました。
tmuxは古いけれど、今の使い方に合っていた
新しいツールではありません。けれど、Claude CodeやCodex CLIを長時間動かす今の使い方には合っていました。「今さら便利さが分かった」という、素直な感想です。
Mac mini常時稼働環境との相性がいい
常時起動しているMac miniがあるなら、そこに作業環境を置いておく発想が自然に生まれます。tmuxは、その作業環境の入口としてちょうどよいです。
AI CLIを長時間使う人ほど、作業場を残す価値が出てくる
AI CLIを単発で使うだけなら、tmuxなしでもよいです。ただ、リモートから何度も入り直したり、長時間の作業を任せたりするなら、tmuxで作業場を残す価値が出てきます。
tmuxは「画面分割ツール」というより、「AI CLIの常駐ワークスペース」として見るとしっくりきます。まずはプロジェクトごとに tmux new -s project-name で作業場を作るだけではじめられます。少ないコマンドだけ覚えれば、十分使い始められます。