ニッチワークス合同会社

← ブログ一覧

tmux 完全ガイド:何ができて、どう使うか(Claude Code との相性も)

2026-06-29

#tmux#ターミナル#Claude Code


tmux とは? ターミナルを分割し、閉じても作業が残る。 ▸ 画面を分割して同時に見る ▸ detach すれば閉じても作業が続く ▸ 案件ごとにセッションを切り替え vim app.tsx // component function App(){ return <div/> } $ npm run dev ready on :3000 compiled 1.2s $ tail -f log GET / 200 GET /blog 200 [work] 0:zsh 1:vim* 2:logs demo ニッチワークス合同会社 — nicheworks.jp

ターミナルを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が切れても作業が死なない。
  • セッションを名前で管理する:プロジェクトごとにセッションを分け、行き来する。
  • 長時間のコマンドを安全に回す:ビルド・学習・エージェント実行などを、端末を閉じても継続させる。

nohupscreen でも一部は実現できるが、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 は入れ子構造になっている。ここを押さえると操作が一気に整理される。

ターミナル (手元・Mac) attach detach tmux(リモートで常駐し続ける) セッション:案件A ウィンドウ1 ペイン ペイン ウィンドウ2 ペイン セッション:案件B(別プロジェクト) ウィンドウ/ペイン … prefix s で切り替え

階層 例え 中身
セッション 作業部屋ぜんぶ 複数のウィンドウを持つ。detach/attachの単位
ウィンドウ 1枚のタブ 複数のペインを持つ
ペイン 分割された1区画 実際にシェルが動く場所

実際の画面はこんなイメージ(※汎用の例。下の緑の帯が tmux の目印「ステータスバー」)。

~/app vim app.tsx // コンポーネント export function App() { return <div>hi</div> } $ npm run dev ready on http://localhost:3000 ○ compiled in 1.2s $ tail -f log [14:23] GET / 200 [14:23] GET /blog 200 [work] 0:zsh 1:vim* 2:logs host 14:23 ペイン (分割された区画) ステータスバー セッション名 / ウィンドウ一覧 / 時計

下の緑の帯(ステータスバー)が出ていれば「今 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 で detach して抜け、tmux a で同じセッションに戻る様子
prefix d で抜けても、中の作業は生きている。tmux a で同じ続きに戻れる。これが tmux の本体。

セッションが複数あるときは prefix s で一覧を出し、選んで丸ごと切り替える。

prefix s でセッション一覧を出し、work から work2 へ切り替える様子
prefix s で一覧 → 選ぶと別の作業(ここでは work2)へ切り替わる。左上の名前が変わるのが目印。

ウィンドウ操作(タブのような単位)

やること キー
新規ウィンドウ prefix c
名前を変える prefix ,
次 / 前 prefix n / prefix p
番号で移動 prefix 0prefix 9
一覧から選ぶ prefix w
閉じる prefix &
prefix c で新規ウィンドウを作り、prefix p / prefix n で行き来する様子
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 を押してから矢印キー。

prefix を押してから矢印キーで隣のペインへフォーカスを移す様子
prefix ←↑↓→ で隣のペインへ移動。枠が緑のペインが「今いる場所」。

prefix z のズームは地味に便利で、分割したまま一時的に1ペインを全画面化して、もう一度押すと元の分割に戻る。

コピーモード(スクロール・コピー)

ターミナルの出力を遡って読んだり、選択してコピーするにはコピーモードに入る。

やること キー
コピーモードに入る prefix [
スクロール ↑↓ / PageUp PageDown
選択開始(vi風) space
コピーして抜ける(vi風) Enter
貼り付け prefix ]
抜ける q
prefix [ でコピーモードに入り、出力を遡ってスクロールする様子
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 との相性

$ vim $ dev $ log $ git [work] 0:1:2* tmux × > この差分をレビューして ⏺ 確認しました。3点あります 1. 型が… 2. 命名が… > Claude Code 常駐する CLI 同士。detach で放置・ペイン並走・send-keys で別ペインへ指示。

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.conftruecolor 設定(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 は手元の窓として軽く保つ。

MacBook 手元の窓・軽く保つ Tailscale 経由で SSH Ubuntu 機(Web サービスのホスティング) tmux で運用・デプロイ・ログ監視 [web] 0:deploy 1:logs* 2:db 用途ごとに session を分け、prefix s で行き来 Windows / WSL2(GPU) 画像生成 / 学習・推論 / 3D モデリング [gen] 0:sd 1:train* 2:3d SSH が切れても中は動き続ける → tmux a で復帰

  • 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 を並走させ始めて「どのペインが止まってるか分からない」となったら、そちらを読んでほしい。

だれでもLP — その思いつき、3分でページになる。