ワークフロー
実務で役に立つtmuxのワークフロー例を紹介します。
開発環境セットアップスクリプト
基本的なセットアップ
#!/bin/bash
# setup-dev-session.sh
SESSION="dev"
PROJECT_DIR="$HOME/projects/myapp"
# セッション作成
tmux new-session -d -s $SESSION -c $PROJECT_DIR
# ウィンドウ作成
tmux new-window -t $SESSION -n "editor"
tmux new-window -t $SESSION -n "server"
tmux new-window -t $SESSION -n "logs"
# editor ウィンドウでvimを起動
tmux send-keys -t $SESSION:editor "vim ." Enter
# server ウィンドウでサーバーを起動
tmux send-keys -t $SESSION:server "npm start" Enter
# logs ウィンドウでログを監視
tmux send-keys -t $SESSION:logs "tail -f logs/app.log" Enter
# セッションに接続
tmux attach -t $SESSION
複数プロジェクト対応版
#!/bin/bash
# setup-project.sh <project-name>
if [ -z "$1" ]; then
echo "使用方法: $0 <project-name>"
exit 1
fi
SESSION=$1
PROJECT_DIR="$HOME/projects/$SESSION"
if [ ! -d "$PROJECT_DIR" ]; then
echo "エラー: $PROJECT_DIR が見つかりません"
exit 1
fi
# 既存セッションを確認
if tmux has-session -t $SESSION 2>/dev/null; then
echo "既存セッション '$SESSION' に接続"
tmux attach -t $SESSION
exit 0
fi
# 新規セッション作成
tmux new-session -d -s $SESSION -c $PROJECT_DIR
# ウィンドウ設定
tmux new-window -t $SESSION -n "edit" -c $PROJECT_DIR
tmux new-window -t $SESSION -n "run" -c $PROJECT_DIR
tmux new-window -t $SESSION -n "test" -c $PROJECT_DIR
# 初期コマンド実行
tmux send-keys -t $SESSION:edit "vim" Enter
tmux send-keys -t $SESSION:run "npm start" Enter
# セッションに接続
tmux attach -t $SESSION
ペイン分割ワークフロー
フロントエンド開発環境
#!/bin/bash
SESSION="frontend"
PROJECT="$HOME/projects/react-app"
tmux new-session -d -s $SESSION -c $PROJECT
# 左側にエディタ、右側にターミナル
tmux split-window -h -t $SESSION
# 右側をさらに分割(上:実行、下:ツール)
tmux split-window -v -t $SESSION:0.1
# 各ペインでコマンド実行
tmux send-keys -t $SESSION:0.0 "vim src/" Enter # エディタ
tmux send-keys -t $SESSION:0.1 "npm start" Enter # 開発サーバー
tmux send-keys -t $SESSION:0.2 "npm test -- --watch" Enter # テスト
tmux attach -t $SESSION
結果:
┌────────────────────┬──────────────────┐
│ エディタ │ 実行サーバー │
│ ├──────────────────┤
│ │ テスト(watch) │
└────────────────────┴──────────────────┘
リモートサーバー管理
複数サーバーのセッション
#!/bin/bash
SESSION="servers"
tmux new-session -d -s $SESSION
# 各サーバーに接続
tmux new-window -t $SESSION -n "prod" -c ~
tmux send-keys -t $SESSION:prod "ssh user@prod.example.com" Enter
tmux new-window -t $SESSION -n "staging" -c ~
tmux send-keys -t $SESSION:staging "ssh user@staging.example.com" Enter
tmux new-window -t $SESSION -n "dev" -c ~
tmux send-keys -t $SESSION:dev "ssh user@dev.example.com" Enter
tmux attach -t $SESSION
作業の切り替え
複数プロジェクトを管理
# 複数のセッションを同時に管理
tmux new-session -d -s project-a -c ~/projects/a
tmux new-session -d -s project-b -c ~/projects/b
tmux new-session -d -s project-c -c ~/projects/c
# セッション一覧
tmux ls
# プロジェクト切り替え(Ctrl+b s で表示される選択画面から選択)
tmux attach -t project-a
セッション内では Ctrl+b s でセッション選択画面を表示できます。
デバッグセッション
テスト・デバッグ環境
#!/bin/bash
SESSION="debug"
PROJECT="$HOME/projects/app"
tmux new-session -d -s $SESSION -c $PROJECT
# ウィンドウ1:テスト実行
tmux send-keys -t $SESSION "npm test" Enter
# ウィンドウ2:ログ監視
tmux new-window -t $SESSION -n "logs"
tmux send-keys -t $SESSION:logs "tail -f logs/*.log" Enter
# ウィンドウ3:デバッガー
tmux new-window -t $SESSION -n "debug"
tmux send-keys -t $SESSION:debug "node --inspect-brk dist/index.js" Enter
# ウィンドウ4:コマンドラインツール
tmux new-window -t $SESSION -n "cli"
tmux attach -t $SESSION
定期的なモニタリング
ログ監視・リソース確認
#!/bin/bash
SESSION="monitor"
tmux new-session -d -s $SESSION
# リソース監視
tmux split-window -h -t $SESSION
tmux send-keys -t $SESSION:0.0 "watch -n 1 'ps aux'" Enter
tmux send-keys -t $SESSION:0.1 "watch -n 1 'df -h'" Enter
# ウィンドウ1:ログ監視
tmux new-window -t $SESSION -n "logs"
tmux split-window -h -t $SESSION:1
tmux send-keys -t $SESSION:1.0 "tail -f /var/log/app.log" Enter
tmux send-keys -t $SESSION:1.1 "tail -f /var/log/error.log" Enter
tmux attach -t $SESSION
シェル関数で快速アクセス
.bashrc または .zshrc に追加:
# プロジェクトに素早くアクセス
work() {
local project=$1
if [ -z "$project" ]; then
echo "セッション一覧:"
tmux ls
else
tmux attach -t "$project" || tmux new-session -s "$project" -c "$HOME/projects/$project"
fi
}
# 使用例
# work
# work myproject
.tmux.confでクイックセッション
# ~/.tmux.conf
# セッション作成クイーコマンド
bind C-n new-session -s dev -d -c ~/projects/current \; attach -t dev
# セッション一覧ジャンプ
bind s choose-session
ベストプラクティス
- プロジェクトごとのセッション: 異なるプロジェクトは異なるセッションで管理
- セッション名の規約: 短くわかりやすい名前(
proj-aよりaなど) - スクリプト化: 繰り返しの作業はスクリプト化
- .tmux.conf の活用: よく使うキーバインドをカスタマイズ
- ウィンドウ名の統一: チーム内で命名規則を統一