1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WindowsでClaude Codeを複数ペインで使う — psmux導入ガイド

1
Last updated at Posted at 2026-04-19

はじめに

Claude Codeを使っていると、「このペインでコードを書かせながら、別のペインでテストを回したい」という場面が出てきます。macOS/Linuxユーザーはtmuxでペインを分割してそれぞれにClaude Codeを立ち上げればよいですが、Windowsにはtmuxがありません。

そこで使えるのが psmux です。Rustで書かれたネイティブWindowsのターミナルマルチプレクサで、WSLもCygwinも不要。winget install psmux でインストールし、PowerShellプロファイルにレイアウト関数を登録するだけで、コマンド一発で4つのClaude Codeが並列起動する環境を構築できます。


psmuxとは

psmux は、Windows向けにRustで書かれたネイティブのターミナルマルチプレクサです。

  • Windows ConPTYを直接使用(WSL・Cygwin・MSYS2不要)
  • tmuxコマンドをそのまま実行できる(tmuxエイリアスも同梱)
  • .tmux.confをそのまま読み込める
  • tmuxのテーマ・プラグインにも対応

tmuxユーザーなら学習コストほぼゼロで移行できます。

主な機能

機能 内容
ペイン分割 水平・垂直の両方に対応
ウィンドウ管理 タブ形式で複数ウィンドウ
セッション管理 バックグラウンドセッション維持
マウスサポート クリックでペイン選択など
Vimライクなコピーモード スクロールバック付き
ステータスバー tmuxフォーマット変数をフルサポート

インストール方法は psmux GitHub リポジトリ を参照してください。


PowerShellプロファイルにレイアウトプリセットを登録する

毎回ペイン構成を手打ちするのは面倒です。PowerShellのプロファイル($PROFILE)にレイアウトプリセットを定義しておけば、コマンド一発で好みのペイン構成を呼び出せます。

以下は筆者のプロファイル起動直後の様子です。

psmux起動時のプロファイル表示

ターミナルを開くと自動で:

  • 利用可能なレイアウトプリセットtmux-eventmux-chrometmux-lefttmux-top)の一覧
  • 現在アクティブなセッションと、番号指定でkillするコマンド(tmux-kill 1

が表示されます。tmux attach -t chrome のように1コマンドで作業を再開できます。

そもそも psmux(tmux)には組み込みのレイアウトプリセットが存在します。Ctrl+b Spaceeven-horizontaleven-verticalmain-horizontalmain-verticaltiled を順に切り替えられるので、凝った構成でなければカスタム関数なしでも十分かもしれません。

PowerShell起動時に自動実行される tmux 関連コマンド

$PROFILE に書いたコードは PowerShell 起動のたびに毎回実行されます。以下が筆者の実際のプロファイルに書いている tmux 関連の定義です。

# ============================================================
# tmux 4ペインレイアウト - 全ペインで claude を自動起動
# ============================================================

function Start-ClaudeInAllPanes {
    param([string]$Session, [int]$PaneCount)
    for ($i = 0; $i -lt $PaneCount; $i++) {
        tmux send-keys -t "${Session}:0.$i" "claude" Enter
    }
    Start-Sleep -Milliseconds 3000
    for ($i = 0; $i -lt $PaneCount; $i++) {
        tmux send-keys -t "${Session}:0.$i" "" Enter
    }
}

# Pattern 1: even (tiled)
# +----------+----------+
# |  claude  |  claude  |
# +----------+----------+
# |  claude  |  claude  |
# +----------+----------+
function tmux-even {
    tmux new-session -d -s even
    tmux split-window -h -t "even:0"
    tmux split-window -v -t "even:0.0"
    tmux split-window -v -t "even:0.1"
    tmux select-layout -t even tiled
    Start-ClaudeInAllPanes -Session even -PaneCount 4
    tmux select-pane -t "even:0.0"
    tmux attach -t even
}

# Pattern 1b: chrome (tiled、左上のみ --chrome オプション付き)
# +----------+----------+
# | claude   |  claude  |
# | --chrome |          |
# +----------+----------+
# |  claude  |  claude  |
# +----------+----------+
function tmux-chrome {
    tmux new-session -d -s chrome
    tmux split-window -h -t "chrome:0"
    tmux split-window -v -t "chrome:0.0"
    tmux split-window -v -t "chrome:0.1"
    tmux select-layout -t chrome tiled
    tmux send-keys -t "chrome:0.0" "claude --chrome" Enter
    for ($i = 1; $i -lt 4; $i++) {
        tmux send-keys -t "chrome:0.$i" "claude" Enter
    }
    Start-Sleep -Milliseconds 3000
    for ($i = 0; $i -lt 4; $i++) {
        tmux send-keys -t "chrome:0.$i" "" Enter
    }
    tmux select-pane -t "chrome:0.0"
    tmux attach -t chrome
}

# Pattern 2: left (左1列メイン + 右3行)
# +----------+-----+
# |          |claud|
# |  claude  +-----+
# |          |claud|
# |          +-----+
# |          |claud|
# +----------+-----+
function tmux-left {
    tmux new-session -d -s left
    tmux split-window -h -t "left:0"
    tmux split-window -v -t "left:0.1"
    tmux split-window -v -t "left:0.2"
    tmux select-pane -t "left:0.0"
    tmux resize-pane -t "left:0.0" -x 60
    Start-ClaudeInAllPanes -Session left -PaneCount 4
    tmux select-pane -t "left:0.0"
    tmux attach -t left
}

# Pattern 3: top (上1行メイン + 下3列)
# +--------------------------+
# |         claude           |
# +---------+--------+-------+
# |  claude | claude | claude|
# +---------+--------+-------+
function tmux-top {
    tmux new-session -d -s top
    tmux split-window -v -t "top:0"
    tmux split-window -h -t "top:0.1"
    tmux split-window -h -t "top:0.2"
    tmux select-pane -t "top:0.0"
    tmux resize-pane -t "top:0.0" -y 30
    Start-ClaudeInAllPanes -Session top -PaneCount 4
    tmux select-pane -t "top:0.0"
    tmux attach -t top
}

# セッション番号指定で kill(引数なしで全kill)
function tmux-kill {
    param([string]$Nums = "")
    $sessions = tmux list-sessions 2>$null
    if (-not $sessions) { Write-Host "no tmux sessions" -ForegroundColor Yellow; return }
    $list = @($sessions | ForEach-Object { ($_ -split ':')[0] })
    if ($Nums -eq "") {
        tmux kill-server
        Write-Host "done: kill-server" -ForegroundColor Green
    } else {
        $digits = $Nums.ToCharArray() | ForEach-Object { [int]::Parse($_) }
        foreach ($d in $digits) {
            $idx = $d - 1
            if ($idx -ge 0 -and $idx -lt $list.Count) {
                tmux kill-session -t $list[$idx]
                Write-Host ("killed: {0}" -f $list[$idx]) -ForegroundColor Green
            }
        }
    }
}

# ---- 起動時: レイアウト一覧 + アクティブセッション表示 ----
Write-Host "tmux layouts loaded." -ForegroundColor Cyan
Write-Host "  tmux-even          # 2rows x 2cols"
Write-Host "  tmux-chrome        # 2rows x 2cols  (top-left: --chrome)"
Write-Host "  tmux-left          # 1col(L) + 3rows x 1col(R)"
Write-Host "  tmux-top           # 1row(top) + 3cols(bot)"
Write-Host "  tmux-kill [nums]"

$_tmux_raw = tmux list-sessions 2>$null
if ($_tmux_raw) {
    $_tmux_list = @($_tmux_raw | ForEach-Object { ($_ -split ':')[0] })
    Write-Host ""
    for ($i = 0; $i -lt [Math]::Min(6, $_tmux_list.Count); $i++) {
        Write-Host ("  tmux-kill {0,-2}  # {1,-12}  ->  tmux attach -t {2}" -f ($i+1), $_tmux_list[$i], $_tmux_list[$i]) -ForegroundColor Cyan
    }
}

psmux はセッションをバックグラウンドで保持するため、ターミナルを閉じてもセッションは消えません。tmux attach -t chrome のように1コマンドで前回の作業を再開できます。


Claude Codeを複数ペインで動かす

レイアウト関数でセッションを起動したら、各ペインで claude を起動するだけです。

# レイアウト起動(例: 均等4分割)
tmux-even

tmux-even を実行すると、2×2の均等分割レイアウトで4つのClaude Codeが自動起動します。

tmux-evenで4ペイン均等分割したClaude Code

各ペインでそれぞれ独立したClaude Codeセッションが立ち上がり、ステータスバーには [even] 0:claude* と表示されます。

それぞれのClaude Codeは独立したプロセスとして動くため、コード生成・テスト実行・デバッグをペインごとに異なるClaude Codeに割り当て、並行実行できます。


まとめ

項目 内容
psmuxとは Rust製のネイティブWindows tmux互換ツール
必要なもの PowerShell 7+・psmux
使い方 psmuxでペイン分割 → 各ペインで claude を起動
インストール winget install psmux 一発

macOS/Linuxでtmuxを使う感覚そのままで、Windowsでも複数のClaude Codeを並列に動かせます。tmuxを知っていれば既存設定がそのまま動くため、追加の学習なしで移行できます。ぜひ試してみてください。


参考リンク

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?