🚀 tmux マスターガイド:ターミナル作業を劇的に効率化する完全ガイド
🎯 中心的な主張
tmuxは、一つのターミナルウィンドウ内で複数の作業を効率的に管理するためのツールです。セッション、ウィンドウ、ペインという階層構造を理解することで、作業効率が飛躍的に向上します。SSH接続が切断されても作業状態がサーバー上で保持されるため、長時間のプロセスも安心して実行可能です。
🏛️ tmuxの基本構造
tmuxは以下の3つの階層で構成されています。この関係を理解することが重要です。
📊 階層構造の視覚化
📦 セッション (Session)
├─ 📂 ウィンドウ 1 (Window 1)
│ ├─ 🖥️ ペイン 1-1 (Pane 1-1)
│ └─ 🖥️ ペイン 1-2 (Pane 1-2)
│
└─ 📂 ウィンドウ 2 (Window 2)
└─ 🖥️ ペイン 2-1 (Pane 2-1)
📦 セッション (Session)
役割: すべての作業の親となるコンテナ
✨ 主な特徴:
├─ 🔌 SSH接続が切れてもバックグラウンドで生き続ける
├─ 🔄 デタッチ&アタッチで作業を中断・再開可能
├─ 💾 長時間実行するプロセスを安全に管理
└─ 🏢 プロジェクトごとに独立したセッションを作成可能
🎯 使用例:
├─ 開発用セッション: dev-project
├─ サーバー監視用: monitoring
└─ データ処理用: data-pipeline
📂 ウィンドウ (Window)
役割: セッション内のタブのようなもの
✨ 主な特徴:
├─ 🗂️ タスクごとにウィンドウを分けて管理
├─ 🏷️ わかりやすい名前を付けて整理
├─ 🔢 番号で素早く切り替え可能
└─ 📊 ステータスバーで一覧表示
🎯 使用例:
├─ ウィンドウ 0: git(バージョン管理)
├─ ウィンドウ 1: docker(コンテナ管理)
├─ ウィンドウ 2: logs(ログ監視)
└─ ウィンドウ 3: editor(エディタ)
🖥️ ペイン (Pane)
役割: 一つのウィンドウをさらに細かく分割
✨ 主な特徴:
├─ ✂️ 垂直・水平に自由に分割
├─ ⌨️ 矢印キーで素早く移動
├─ 👀 複数の作業を同時に監視
└─ 📏 サイズ調整可能
🎯 使用例:
├─ 左ペイン: コード編集
├─ 右上ペイン: テスト実行
└─ 右下ペイン: サーバーログ監視
⌨️ 基本コマンドチートシート
🔑 プレフィックスキーの理解
すべての`tmux`操作は、プレフィックスキーから始まります
基本パターン:
1️⃣ Ctrl + b を押す(プレフィックス)
2️⃣ コマンドキーを押す
3️⃣ 操作が実行される
例: ペインを垂直分割
Ctrl + b → % の順に押す
🖥️ ペイン (Pane) 操作
分割操作
| アクション |
キーバインド |
説明 |
視覚イメージ |
| 垂直分割 |
Ctrl + b → % |
ペインを左右に分割 |
[画面] → [左][右] |
| 水平分割 |
Ctrl + b → " |
ペインを上下に分割 |
[画面] → [上][下] |
移動・操作
| アクション |
キーバインド |
説明 |
| ペイン移動 |
Ctrl + b → ←↑↓→ |
矢印キーでペイン間を移動 |
| ペイン最大化/復元 |
Ctrl + b → z |
現在のペインを全画面表示(トグル) |
| ペインサイズ変更 |
Ctrl + b → :resize-pane -[UDLR] 5 |
Up/Down/Left/Right方向に5行分拡大 |
| ペイン終了 |
exit または Ctrl + d |
現在のペインを閉じる |
💡 ペイン操作のTips
📌 効率的なペイン分割:
├─ 開発時の推奨レイアウト
│ ├─ 左60%: エディタ/コマンド実行
│ └─ 右40%: ログ監視/テスト
│
└─ サーバー監視時の推奨レイアウト
├─ 上50%: アプリケーションログ
└─ 下50%: システムリソース監視
⚡ ショートカットの活用:
└─ ペインの最大化(Ctrl+b → z)を活用して
一時的に作業スペースを広げる
📂 ウィンドウ (Window) 操作
基本操作
| アクション |
キーバインド |
説明 |
| 新規作成 |
Ctrl + b → c |
新しいウィンドウを作成(create) |
| 次のウィンドウ |
Ctrl + b → n |
次のウィンドウに移動(next) |
| 前のウィンドウ |
Ctrl + b → p |
前のウィンドウに移動(previous) |
| 番号指定移動 |
Ctrl + b → [0-9] |
指定番号のウィンドウに移動 |
| 名前変更 |
Ctrl + b → , |
現在のウィンドウの名前を変更 |
| ウィンドウ一覧 |
Ctrl + b → w |
ウィンドウ一覧を表示して選択 |
| ウィンドウ終了 |
exit |
ウィンドウ内の全ペインを閉じると終了 |
💡 ウィンドウ管理のTips
🏷️ 命名規則の例:
├─ 0:git → バージョン管理専用
├─ 1:code → コーディング作業
├─ 2:test → テスト実行
├─ 3:docker → コンテナ管理
└─ 4:logs → ログ監視
⚡ 効率的な使い方:
├─ プロジェクトの構造に合わせてウィンドウを分ける
├─ 頻繁に使うウィンドウは番号0-2に配置
└─ 一覧表示(Ctrl+b → w)で全体を俯瞰
📦 セッション (Session) 操作
基本コマンド(ターミナルで実行)
| アクション |
コマンド |
説明 |
| 新規セッション |
tmux |
名前なしで新しいセッションを開始 |
| 名前付き新規 |
tmux new -s [名前] |
指定した名前でセッションを開始 |
| 一覧表示 |
tmux ls |
現在実行中のセッションを一覧表示 |
| アタッチ |
tmux attach -t [名前] |
指定したセッションに再接続 |
| アタッチ(短縮) |
tmux a -t [名前] |
attachの短縮形 |
| 最新アタッチ |
tmux a |
最後に使用したセッションに接続 |
| 名前変更 |
tmux rename-session -t [旧名] [新名] |
セッションの名前を変更 |
| セッション終了 |
tmux kill-session -t [名前] |
指定したセッションを完全に終了 |
| 全セッション終了 |
tmux kill-server |
すべてのセッションを終了 |
セッション内での操作
| アクション |
キーバインド |
説明 |
| デタッチ |
Ctrl + b → d |
セッションをバックグラウンドに残して離脱 |
| セッション選択 |
Ctrl + b → s |
セッション一覧を表示して切り替え |
| セッション名変更 |
Ctrl + b → $ |
現在のセッション名を変更 |
🎯 実践的なワークフロー例
🚀 ケース1:Web開発プロジェクト
# 1. 開発用セッションを作成
tmux new -s web-dev
# セッション内での操作:
# ウィンドウ0(デフォルト): フロントエンド開発
Ctrl+b → , → 入力: "frontend"
npm run dev
# ウィンドウ1: バックエンド開発
Ctrl+b → c
Ctrl+b → , → 入力: "backend"
go run main.go
# ウィンドウ2: データベース
Ctrl+b → c
Ctrl+b → , → 入力: "database"
docker-compose up postgres
# ウィンドウ3: Git操作
Ctrl+b → c
Ctrl+b → , → 入力: "git"
# デタッチして離脱
Ctrl+b → d
# 後で再接続
tmux a -t web-dev
🖥️ ケース2:サーバー監視
# 監視用セッションを作成
tmux new -s monitoring
# ウィンドウ0: システムリソース監視
# ペインを4分割して各種監視ツールを配置
Ctrl+b → " # 上下分割
Ctrl+b → % # 右側を左右分割
Ctrl+b → ↑ # 上ペインに移動
Ctrl+b → % # 上側を左右分割
# 各ペインで監視コマンド実行:
# 左上: htop
# 右上: docker stats
# 左下: tail -f /var/log/app.log
# 右下: watch -n 1 df -h
💾 ケース3:長時間実行タスク
# データ処理用セッション
tmux new -s data-processing
# 大量のデータ処理を開始
python long_running_script.py
# デタッチして他の作業へ
Ctrl+b → d
# SSH接続を切断しても処理は継続
# 後で進捗確認
tmux a -t data-processing
🎨 設定カスタマイズ
基本設定ファイル
~/.tmux.confを作成して設定をカスタマイズできます。
# プレフィックスキーをCtrl+aに変更(screenユーザー向け)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# マウス操作を有効化
set -g mouse on
# ペイン番号の表示時間を延長
set -g display-panes-time 2000
# ウィンドウ番号を1から開始
set -g base-index 1
# ペイン番号を1から開始
setw -g pane-base-index 1
# ステータスバーの色をカスタマイズ
set -g status-bg colour235
set -g status-fg colour136
# 設定ファイルのリロード
bind r source-file ~/.tmux.conf \; display "Reloaded!"
設定の反映
# 設定ファイルを保存後、tmuxセッション内で
Ctrl+b → :
source-file ~/.tmux.conf
📚 よくある質問(FAQ)
Q1: セッションから抜けたらどうなる?
A: デタッチ(Ctrl+b → d)すると:
✅ セッションはバックグラウンドで実行継続
✅ 実行中のプロセスも継続
✅ SSH接続が切れても影響なし
✅ tmux a -t [名前] でいつでも再接続可能
Q2: セッションを完全に終了するには?
A: 以下のいずれかの方法:
1️⃣ セッション内で全ウィンドウを終了(exit)
2️⃣ ターミナルから: tmux kill-session -t [名前]
3️⃣ セッション内で: Ctrl+b → : → kill-session
Q3: 複数セッションを同時に使えるか?
A: はい、可能です:
├─ 複数のセッションを作成可能
├─ Ctrl+b → s でセッション間を切り替え
└─ 別ターミナルから別セッションにアタッチ可能
Q4: ペインのコピー&ペーストは?
A: コピーモードを使用:
1️⃣ Ctrl+b → [ でコピーモード開始
2️⃣ スペースで選択開始
3️⃣ Enter で選択終了&コピー
4️⃣ Ctrl+b → ] でペースト
🚀 レベル別学習ロードマップ
🌱 初級:基本操作をマスター(1週間)
目標: tmuxを日常的に使えるようになる
✅ 学ぶこと:
├─ セッションの作成・デタッチ・アタッチ
├─ ウィンドウの作成・切り替え
├─ ペインの垂直/水平分割
└─ ペイン間の移動
🎯 練習課題:
└─ 毎日の開発作業をtmuxで行う習慣をつける
🌿 中級:効率的な運用(2週間)
目標: 複雑なワークフローを構築
✅ 学ぶこと:
├─ 複数セッションの管理
├─ ウィンドウの命名規則
├─ ペインのレイアウト最適化
└─ コピーモードの活用
🎯 練習課題:
└─ プロジェクトごとに専用セッションを作成
🌳 上級:完全カスタマイズ(1ヶ月)
目標: 自分専用の開発環境を構築
✅ 学ぶこと:
├─ .tmux.confのカスタマイズ
├─ プレフィックスキーの変更
├─ キーバインドの追加
├─ ステータスバーのカスタマイズ
└─ プラグインの導入(TPM等)
🎯 練習課題:
└─ 自動起動スクリプトの作成
💡 実務での活用シーン
🏢 リモートサーバー管理
メリット:
✅ SSH接続が不安定でも作業を継続
✅ 複数のログを同時監視
✅ デプロイ作業を安全に実行
✅ チーム内で同じセッションを共有可能
具体例:
├─ 本番サーバーへのデプロイ作業
├─ データベースマイグレーション
└─ 長時間のバッチ処理実行
💻 ローカル開発
メリット:
✅ プロジェクトごとに環境を分離
✅ 作業再開が即座に可能
✅ 複数のサービスを同時起動
✅ ターミナルの整理整頓
具体例:
├─ フロントエンド+バックエンド同時開発
├─ Docker環境の管理
└─ テストの自動実行監視
📊 データ分析・機械学習
メリット:
✅ 長時間の学習処理をバックグラウンド実行
✅ 複数の実験を並行実行
✅ ログとコードを同時表示
✅ Jupyter + CLI を同時使用
具体例:
├─ 深層学習モデルの訓練
├─ 大規模データの前処理
└─ 複数パラメータでの実験並行実行
🔗 参考リソース
📖 公式ドキュメント
tmux公式サイト:
└─ https://github.com/tmux/tmux/wiki
マニュアル:
└─ man tmux(ターミナルで実行)
🛠️ おすすめツール
tmux Plugin Manager (TPM):
├─ プラグイン管理を簡単に
└─ https://github.com/tmux-plugins/tpm
tmuxinator:
├─ セッションレイアウトを自動化
└─ https://github.com/tmuxinator/tmuxinator
✨ 300字要約
tmuxは、ターミナル作業を効率化するツールで、「セッション」「ウィンドウ」「ペイン」の3階層で管理します。最大の特長はセッション機能です。SSH接続が切断されても作業状態がサーバー上で保持されるため、後から再接続(アタッチ)すれば中断した箇所から作業を再開できます。これにより、長時間のプロセスも安心して実行可能です。基本操作は、Ctrl+bの後にコマンドキーを入力します。%で垂直、"で水平にペインを分割し、cで新しいウィンドウを作成します。これらのキー操作に慣れることで、複数のコマンドライン作業を一つの画面でスマートにこなせるようになり、開発やサーバー管理の生産性が大きく向上します。