Dance with Agents

tmux――接続が切れても作業を続けられる道具

tmuxが持つ効果

コマンドで動かしている作業は、そのターミナルの窓に紐づいています。 窓を閉じれば、途中だった作業も一緒に終わります。

これが困る場面があります。たとえば、別のパソコンに接続して作業しているとき。回線が一瞬切れただけで接続が落ち、走っていた処理も道連れになります。何十分もかかる処理の途中だったら目も当てられません。

tmuxは、作業の場を、窓とは別のところに置いておく道具です。窓を閉じても、接続が切れても、置いてきた作業は向こうで生き続けています。あとから繋ぎ直せば、何事もなかったように続きが見えます。

最初のうちは、要らないことが多い

自分のパソコンでターミナルを開いて作業しているだけなら、上で挙げた問題はほとんど起きません。エージェントを使い始めたばかりなら、tmuxはまだ要らないことが多いはずです。「作業途中のセッションを確実に再開したい」と思い始めたら、このページを参考にしてください。

要るようになる3つのサイン

次のどれかに当てはまってきたら、そのとき覚えれば十分です。

  1. 別のパソコンやスマホから繋いで作業するようになった — 回線が切れると作業が死ぬ、という問題に直面します。このサイトで扱うリモート開発環境の話は、ほぼここに繋がります
  2. 時間のかかる処理をエージェントに任せて、席を立ちたくなった — 閉じても大丈夫、という状態を作れます
  3. 複数の作業を並行させたくなった — 別々のエージェントを、別々の場で同時に走らせておけます

エージェントを使っていると、2番と3番は思ったより早くやってきます。エージェントは人間より根気があるので、待ち時間が生まれるからです。

覚えるのは、実質4つ

そのときが来ても、身構えるほどのことはありません。まずはこれだけで足ります。

tmux new -s work          # 「work」という名前の場を作って、そこで作業を始める
tmux ls                   # 今どんな場があるか一覧する
tmux attach -t work       # 「work」につなぎ直す
tmux kill-session -t work # 「work」を終わらせる

そして、場に置いたまま抜ける操作がCtrl+bを押してからd。このCtrl+bが「これからtmuxへの指示を出します」という合図で、tmuxの操作はほぼ全部この合図から始まります。

aliasにしてしまう

この4つは、aliasにしておくと更に楽になります。管理人が実際に.zshrcに書いているのは、alias 3つと関数1つです。

alias ta='tmux new-session -A -s'       # attach(あればつなぐ/無ければ作る)
alias tl='tmux list-sessions 2>/dev/null || echo "セッションなし"'   # list(一覧する)
alias tk='tmux kill-session -t'         # kill(終わらせる)

# tn <名前>: tmuxの中なら名前を変える、外なら作って入る
tn() { [ -n "$TMUX" ] && tmux rename-session "$1" || tmux new-session -A -s "$1"; }

ta workで作って(あれば戻って)、tlで一覧する。これだけでほぼ回ります。

「名前を変える」だけ関数にしてあるのには理由があります。 以前はtr='tmux rename-session'と書いていましたが、trはもともとUNIXにあるコマンドの名前で(文字を置き換えるもの)、aliasがそれを覆い隠していました。2026-09-09にtnへ寄せています。詳しくはtmuxを使い込むことになったらにまとめてあります。

インストール

インストールは、Macならbrew install tmuxです。

Windowsの場合は、もう一手間かかります。 tmuxはLinux向けの道具なので、使うにはWSL(Windowsの中でLinuxを動かす仕組み)が要ります。エージェント自体はWindowsにそのままインストールできるため、WSLをインストールする理由がtmuxだけなら、割に合うかどうかは考えどころです。上の3つのサインに複数当てはまるなら、インストールする価値はあります。

最後の1つを忘れると、溜まります

kill-sessionだけ、性質が違うので補足しておきます。

tmuxの場は、抜けても消えません。 それが売りなのですが、裏を返すと終わったことを伝えないと残り続けるということです。抜ける(Ctrl+b d)だけで済ませていると、tmux lsの一覧がどんどん伸びていきます。

しかも、そこにエージェントが走ったままだと、見ていないところで動き続けます。 用が済んだ場はkill-sessionで明示的に終わらせてください。

tmux lsで一覧して、要らないものを落とす。この習慣だけ、最初から持っておくと後が楽です。

先に読むべきもの

tmuxより先に楽になる道具があります。打つのが面倒なコマンドに短い名前を付けるという話です。

こちらは今日から使えます。tmuxは、必要になった日に戻ってきてください。

そして実際に使い始めて、ウィンドウやペインで画面を分けたくなったら、tmuxを使い込むことになったらへどうぞ。打つ回数を減らすaliasと、最初に書いておくとよい設定まで、管理人の実物込みで書いてあります。

上の1番(別のパソコンから繋ぐ)に当てはまるなら、tmuxと組み合わせるとよいのがmoshです。接続が切れないようにするのがmosh、切れても作業が死なないようにするのがtmux。 守っているところが違うので、組み合わせて使います。

作業の始め方そのものはcloneして、cdして、AIエージェントを起動するにまとめてあります。

リモート開発環境の記事

リモート開発環境のページへ →