tmux 完全ガイド:何ができて、どう使うか(Claude Code との相性も)
2026-06-29
ターミナルを1枚しか開けない縛りでSSH作業をしていて、接続が切れて作業ごと吹き飛んだ——という経験があるなら、tmux で解決する。tmux は「ターミナルの中で、セッションを分割・保持・復帰できる」道具だ。この記事では、具体的に何ができるか・よく使うキー・設定、そして Claude Code と組み合わせた使い方までまとめる。
要点(先に結論)
- tmux とは:1つのターミナルの中で、画面を分割し、セッションを保持・復帰できるツール。
- 最大の利点:端末を閉じても・SSHが切れても、中の作業(プロセス)は動き続ける。
tmux aで続きに戻れる。これがターミナル自前の画面分割との決定的な違い。 - 構造:
セッション > ウィンドウ > ペインの入れ子。操作はプレフィックスキー(既定Ctrl-b)を押してからコマンドキーを押す。 - 設定:プレフィックスの変更・マウス有効化・色などは
~/.tmux.confに書く。 - 使い分け:案件/プロジェクトごとにセッションを分け、
prefix sで切り替える。 - Claude Code との相性:常駐するCLIなので、detachで長時間タスクを放置/ペイン分割で並走、と相性が良い。
tmux で具体的に何ができるか
- 画面を分割する:1つのターミナルを上下・左右に割って、エディタ・サーバーのログ・コマンドを同時に見る。
- detach して繋ぎっぱなしにする:作業中のセッションを「切り離して」端末を閉じても、中のプロセスは動き続ける。後で
attachすれば続きから戻れる。SSHが切れても作業が死なない。 - セッションを名前で管理する:プロジェクトごとにセッションを分け、行き来する。
- 長時間のコマンドを安全に回す:ビルド・学習・エージェント実行などを、端末を閉じても継続させる。
nohup や screen でも一部は実現できるが、tmux は「分割 + 保持 + 復帰」を一通り、設定もしやすく揃えている。
ターミナル自前の分割と何が違うのか
「画面を割るだけなら、iTerm2 や Windows Terminal、VS Code のターミナルでもできるのでは?」と思うかもしれない。見た目の分割は同じだが、決定的に違うのは「その分割がどこで生きているか」だ。
| ターミナル自前の分割 | tmux の分割 | |
|---|---|---|
| 紐づく先 | 端末アプリ・そのウィンドウ | セッション(プロセス側) |
| ウィンドウを閉じたら | 消える | 残る(detachしてるだけ) |
| SSHが切れたら | 中の作業も切れる | 動き続ける。再接続で戻れる |
| どこで動く | 手元のローカル端末 | リモート(SSH先)でも完結 |
| 設定 | アプリごとにバラバラ | ~/.tmux.conf 一つで全環境共通 |
つまりターミナル自前の分割は「手元のアプリの機能」、tmux は「(リモートでも動く)永続セッションの機能」。だから、SSH/RDP 越しの作業や「繋ぎっぱなしにしたい」場面では tmux になる。逆にローカルでサッと2画面見たいだけなら、端末の分割でも足りる。
インストール
# macOS
brew install tmux
# Ubuntu / Debian
sudo apt install tmux
起動は tmux、名前付きで始めるなら:
tmux new -s work # "work" という名前のセッションを開始
3つの階層:セッション・ウィンドウ・ペイン
tmux は入れ子構造になっている。ここを押さえると操作が一気に整理される。
| 階層 | 例え | 中身 |
|---|---|---|
| セッション | 作業部屋ぜんぶ | 複数のウィンドウを持つ。detach/attachの単位 |
| ウィンドウ | 1枚のタブ | 複数のペインを持つ |
| ペイン | 分割された1区画 | 実際にシェルが動く場所 |
実際の画面はこんなイメージ(※汎用の例。下の緑の帯が tmux の目印「ステータスバー」)。
下の緑の帯(ステータスバー)が出ていれば「今 tmux の中にいる」という合図。0:zsh 1:vim* 2:logs の部分がウィンドウ一覧で、* が今いるウィンドウ。
プレフィックスキー
tmux の操作は、まず プレフィックスキーを押してから、続けてコマンドキーを押す。既定は Ctrl-b(以下 C-b と書く)。
たとえば「ペインを縦に分割」は C-b を押してから % を押す、という意味。本記事では prefix = C-b とする。
プレフィックスはどこで変える? 設定ファイル ~/.tmux.conf に書く。Ctrl-b は押しにくいので Ctrl-a に変える人が多い(設定例は後述)。
セッション操作
| やること | コマンド / キー |
|---|---|
| 新規(名前つき) | tmux new -s 名前 |
| 切り離す(detach) | prefix d |
| 一覧 | tmux ls |
| 復帰(attach) | tmux attach -t 名前(tmux a -t 名前) |
| 直近に復帰 | tmux a |
| 終了(kill) | tmux kill-session -t 名前 |
| セッション切替 | prefix s(一覧から選択) |
いちばんの肝は prefix d(detach)と tmux a(attach)。これだけで「閉じても作業が残る」が手に入る。
prefix d で抜けても、中の作業は生きている。tmux a で同じ続きに戻れる。これが tmux の本体。セッションが複数あるときは prefix s で一覧を出し、選んで丸ごと切り替える。
prefix s で一覧 → 選ぶと別の作業(ここでは work2)へ切り替わる。左上の名前が変わるのが目印。ウィンドウ操作(タブのような単位)
| やること | キー |
|---|---|
| 新規ウィンドウ | prefix c |
| 名前を変える | prefix , |
| 次 / 前 | prefix n / prefix p |
| 番号で移動 | prefix 0〜prefix 9 |
| 一覧から選ぶ | prefix w |
| 閉じる | prefix & |
prefix c でウィンドウが増え、prefix p / prefix n で行き来する。下のバーの * が今いるウィンドウ。ペイン操作(画面分割)
ここが「同時に見る」の本体。
| やること | キー |
|---|---|
| 左右に分割 | prefix % |
| 上下に分割 | prefix " |
| 隣のペインへ移動 | prefix ←↑↓→ |
| 順番に移動 | prefix o |
| ズーム(最大化トグル) | prefix z |
| レイアウト変更 | prefix space |
| ペインを入れ替え | prefix { / prefix } |
| サイズ変更 | prefix を押しながら Ctrl-←↑↓→ |
| ペインを閉じる | prefix x(確認あり) |
既定の prefix % / prefix " は覚えにくい。自分は ~/.tmux.conf で | で左右に分割・- で上下に分割するよう変えている(prefix | / prefix -)。記号の見た目と分割の向きが一致して直感的になる(設定は後述)。
prefix | で左右、prefix - で上下に分割(既定は % / ")。分割したら、ペイン間の移動は prefix を押してから矢印キー。
prefix ←↑↓→ で隣のペインへ移動。枠が緑のペインが「今いる場所」。prefix z のズームは地味に便利で、分割したまま一時的に1ペインを全画面化して、もう一度押すと元の分割に戻る。
コピーモード(スクロール・コピー)
ターミナルの出力を遡って読んだり、選択してコピーするにはコピーモードに入る。
| やること | キー |
|---|---|
| コピーモードに入る | prefix [ |
| スクロール | ↑↓ / PageUp PageDown |
| 選択開始(vi風) | space |
| コピーして抜ける(vi風) | Enter |
| 貼り付け | prefix ] |
| 抜ける | q |
prefix [ でコピーモードに入ると、出力を遡ってスクロール・選択できる。q で抜ける。マウスを有効にしておけば(後述)、ホイールでそのままスクロールできる。
~/.tmux.conf:最初に入れておくと快適な設定
既定のままでも使えるが、以下を入れると体験がかなり変わる。~/.tmux.conf に書く。
# プレフィックスを Ctrl-a に変更(Ctrl-b は押しにくいという人向け)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# マウス操作を有効化(スクロール・ペイン選択・リサイズ)
set -g mouse on
# 色をちゃんと出す(truecolor)
set -g default-terminal "tmux-256color"
set -ga terminal-overrides ",*256col*:Tc"
# ウィンドウ番号を1始まりに
set -g base-index 1
setw -g pane-base-index 1
# 設定リロードをキーに割り当て(prefix r)
bind r source-file ~/.tmux.conf \; display "reloaded"
# 分割キーを直感的に(| で左右、- で上下)
bind | split-window -h
bind - split-window -v
変更後は prefix : から source-file ~/.tmux.conf、上の設定を入れたなら prefix r でリロードできる。
プラグイン(必要になったら)
tpm(tmux plugin manager)を入れると、プラグインを管理できる。よく使われるのは:
- tmux-resurrect:セッションを保存・復元できる。
prefix Ctrl-sで保存、prefix Ctrl-rで復元。ウィンドウ・ペインの構成やレイアウト、(設定すれば)各ペインで実行していたプログラムまで丸ごと戻せる。PCやtmuxを再起動しても、作業レイアウトを元通りにできるのが効く。 - tmux-continuum:resurrect を自動化する。定期的に自動保存し、tmux 起動時に自動で復元する。"保存し忘れ"が無くなる。
「再起動のたびに同じ分割を組み直している」なら、この2つで解決する。
Claude Code との相性
Claude Code はターミナルで動く CLI なので、tmux と非常に相性がいい。実際の使いどころ:
1. 長い作業を detach して放置できる
Claude Code に大きめのタスクを任せて、端末を閉じても・SSHが切れても継続させたい時、tmux のセッション内で走らせておけば prefix d で切り離せる。後で tmux a で戻れば、その間の進行も残っている。リモートサーバー上で動かす時に特に効く。
2. ペインを割って「並べて見る」
左に Claude Code、右に npm run dev のログ、下にコマンド用シェル——のように分割しておくと、Claudeが入れた変更が即座に画面に反映されるのを見ながら進められる(分割のやり方は上の「ペイン操作」の通り)。
3. プロジェクトごとにセッション
案件Aは tmux new -s a、案件Bは -s b。それぞれに Claude Code を常駐させて、prefix s で行き来する。
4. 表示を崩さないための設定
Claude Code は色やボックス描画を使う TUI なので、tmux 側で色設定をしておかないとくすんで見える。上の .tmux.conf の truecolor 設定(tmux-256color + terminal-overrides) を入れておくこと。出力を遡りたい時は mouse on のホイール、またはコピーモード(prefix [)で。
5. キー衝突に注意
tmux のプレフィックスが既定 C-b のままだと、シェルや TUI の Ctrl 系操作と感覚が混ざりやすい。C-a に変えておくと、Claude Code を含むターミナルアプリとの併用が楽になる(上の設定参照)。
6. ペインごとに役割を持たせ、tmux から指示を飛ばす(応用)
ペインごとに別々の Claude Code を立てて、役割を分けることもできる(例:左=実装担当、右=レビュー担当、下=テスト担当)。さらに tmux の send-keys を使うと、別のペインで動いている Claude Code に、外からプロンプトを送り込める。
# ペイン番号は prefix q で画面に出る。一覧で確認するなら:
tmux list-panes -F '#{pane_index}: #{pane_current_command}'
# 例:ウィンドウ0のペイン1の Claude Code に指示を送る(末尾の Enter で送信)
tmux send-keys -t 0.1 "ペイン0で実装した変更をレビューして" Enter
これを使えば「実装役のペインに作らせる → 出来たらレビュー役のペインに投げる」といった受け渡しを、tmux コマンドやシェルスクリプトから回せる。簡易的な"複数エージェントの分業"を tmux の上で組める、ということ。
ただし注意点:各 Claude Code は別々のコンテキストで動き、記憶は共有しない。send-keys は「文字を打ち込んで Enter する」だけで、相手の完了を待たない。きっちり連携させたいなら tmux capture-pane で相手の出力を読んでから次の指示を出す、といったスクリプトが要る。まずは手動で投げてみるところから。
自分の開発環境での使いどころ
うちは MacBook を手元のメイン端末にして、リモートの2台に Tailscale 経由で SSH して使っている。1台は Web サービスをホスティングしている Ubuntu 機、もう1台は Windows 上の WSL2(GPU)で、画像生成・学習・推論・3D モデリングといった重い処理を回す。どちらにも tmux を入れ、まったく同じやり方で使っている。Mac は手元の窓として軽く保つ。
- GPU の重い処理は WSL2 で回す:画像生成(Stable Diffusion など)、モデルの学習・推論、3D モデリング——GPU を食う処理は WSL2 側の tmux セッション内で走らせる。Mac の CPU・バッテリーは食わない。
- Web サービスは Ubuntu 機で運用する:ホスティングしている Ubuntu 機にも tmux を入れ、デプロイ・ログ監視・メンテ作業を session に分けて回す。SSH を切っても作業途中のプロセスは残る。
- 接続が切れても作業が生き残る:Tailscale でどこからでも繋がるが、回線やスリープで SSH は切れる。リモートの tmux セッション内で処理や Claude Code を走らせておけば、切れても中は動き続け、繋ぎ直して
tmux aで続きに戻れる。長い学習やレンダリングを投げて放置、が安心してできる。これがいちばん効く。 - 用途ごとにセッションを分ける:WSL2 なら
-s gen(画像生成)・-s train(学習)、Ubuntu なら-s web(運用)のように用途名で立てておき、prefix sで行き来する。ウィンドウ・ペイン構成をそのまま残して切り替えられるので速い。「どこまで回したか」がレイアウトごと残る。 - WSL2 にも入れておく:Windows でも WSL2 の中に tmux を入れておけば、Ubuntu 機と同じ操作で使える。SSH で入って
tmux a、で同じ。OS が混在していても tmux の使い勝手は1つに揃う。 - ペイン分割で一望:リモート側で Claude Code + 生成/学習のログ + 確認用シェルを1画面に並べ、SSH のウィンドウ1枚で完結させる。
- 設定はリモート側に入れる:truecolor と
mouse onを各リモートの~/.tmux.confに入れておくと、SSH 越しでも Claude Code やログの表示が崩れず、スクロールも効く。
要するに「繋ぎっぱなしにしたいのは SSH 先(Ubuntu / WSL2)」。tmux は手元の Mac より、サービスを動かす Ubuntu や重い処理を回す WSL2 側に入れておくと効果が大きい、というのがこの構成での結論。
まとめ:最悪これだけ覚えればいい
最初は、次の4つだけで動ける。あとは必要になってから足せばいい。
tmux new -s 名前… 始めるprefix dで離れる →tmux a -t 名前で戻る(これが本体)prefix |/prefix -… 画面を左右/上下に分割(既定は%/")prefix ←↑↓→… ペイン間を移動
もう少し慣れたら:
| シーン | キー / コマンド |
|---|---|
| ペイン最大化(トグル) | prefix z |
| スクロール / コピー | prefix [(or マウス) |
| 新規ウィンドウ / 移動 | prefix c / prefix n p |
| セッション切替 | prefix s |
tmux は「detach して繋ぎっぱなし」と「画面分割」の2つが分かれば、もう元に戻れなくなる。Claude Code のような常駐型の CLI と組み合わせると、その価値はさらに上がる。
続編を書いた:herdr 完全ガイド:tmux の代わりに「エージェント対応」マルチプレクサを使う。複数の Claude Code を並走させ始めて「どのペインが止まってるか分からない」となったら、そちらを読んでほしい。