🚀 `tmux` マスターガイド:ターミナル作業を劇的に効率化する完全ガイド

tmuxは、一つのターミナルウィンドウ内で複数の作業を効率的に管理するためのツールです。

ブログ

🚀 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 + bz 現在のペインを全画面表示(トグル)
ペインサイズ変更 Ctrl + b:resize-pane -[UDLR] 5 Up/Down/Left/Right方向に5行分拡大
ペイン終了 exit または Ctrl + d 現在のペインを閉じる

💡 ペイン操作のTips

📌 効率的なペイン分割:
  ├─ 開発時の推奨レイアウト
  │   ├─ 左60%: エディタ/コマンド実行
  │   └─ 右40%: ログ監視/テスト
  │
  └─ サーバー監視時の推奨レイアウト
      ├─ 上50%: アプリケーションログ
      └─ 下50%: システムリソース監視

⚡ ショートカットの活用:
  └─ ペインの最大化(Ctrl+b → z)を活用して
     一時的に作業スペースを広げる

📂 ウィンドウ (Window) 操作

基本操作

アクション キーバインド 説明
新規作成 Ctrl + bc 新しいウィンドウを作成(create)
次のウィンドウ Ctrl + bn 次のウィンドウに移動(next)
前のウィンドウ Ctrl + bp 前のウィンドウに移動(previous)
番号指定移動 Ctrl + b[0-9] 指定番号のウィンドウに移動
名前変更 Ctrl + b, 現在のウィンドウの名前を変更
ウィンドウ一覧 Ctrl + bw ウィンドウ一覧を表示して選択
ウィンドウ終了 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 + bd セッションをバックグラウンドに残して離脱
セッション選択 Ctrl + bs セッション一覧を表示して切り替え
セッション名変更 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で新しいウィンドウを作成します。これらのキー操作に慣れることで、複数のコマンドライン作業を一つの画面でスマートにこなせるようになり、開発やサーバー管理の生産性が大きく向上します。

© 2022-2025 infoHiroki. All rights reserved.