シリーズ: Cmux (4/7)
Workspace・Pane・Surface:CMUXの3層構造を理解する
多くの人はCMUXをインストールし、開いて「tmuxとそんなに変わらないな」と思い — 結局機能の30%しか使わない。問題はほぼ常に同じだ:3層構造を内面化していない。理解すれば、全ての設計判断が意味をなし始め、タスクごとに画面スペースを実際に分割できるようになる。
まず視覚的な概観から
CMUXのインターフェースはこのような形をしている:
┌──────────────────────────────────────────────────────┐
│ ┌──────────┐ ┌─────────────────────────────────────┐ │
│ │ サイドバー│ │ Workspace "dev" │ │
│ │ │ │ │ │
│ │ │ │ ┌───────────────┬─────────────────┐ │ │
│ │ > dev │ │ │ Pane 1 │ Pane 2 │ │ │
│ │ server │ │ │ [S1] [S2] │ [S1] │ │ │
│ │ logs │ │ │ │ │ │ │
│ │ │ │ │ ターミナル │ ターミナル │ │ │
│ │ │ │ │ │ │ │ │
│ └──────────┘ └───────────────┴─────────────────┘ │ │
└──────────────────────────────────────────────────────┘
左のサイドバーに3つのworkspace(dev、server、logs)がリスト表示されている。「dev」が現在選択されており、右側に2つの横並びのペインが表示され、Pane 1には2つのsurface(S1とS2)が含まれている。
これが3層だ:Workspace → Pane → Surface、そして下部のPanel。
レイヤー1:Window
最外層はmacOSウィンドウで、⌘⇧Nで作成する。実際にはこのレイヤーを管理することはほとんどない — 複数ウィンドウが必要になるのは、十分なモニタースペースがある場合だけだ。
レイヤー2:Workspace
WorkspaceはサイドバーのアイテムでI、⌘Nで作成する。
このレイヤーがタスクの整理方法だ — 1エージェント、1フィーチャーブランチ、1タスクがそれぞれ独自のworkspaceを持つ。各workspaceには固有の名前があり、色付けができ、CMUX_WORKSPACE_IDという環境変数を公開するのでスクリプトがどのworkspaceで実行されているかを把握できる。
実際の使用例:
feature-auth:認証機能開発、エージェントがここで実行されるtest-runner:テスト実行専用のworkspacelogs:ログ監視、常時実行したまま
3つは完全に独立していて、サイドバーでステータスを一目でスキャンできる。
レイヤー3:Pane
Workspace内で、⌘D(水平)または⌘⇧D(垂直)を使って複数のペインに分割できる。
ペインは画面スペースの割り当て単位で、同じタスク内で複数の出力を同時に見ることができる。例えば:左にエージェントの出力、右にブラウザプレビュー — 同じ「タスク」の一部だが、両方を同時に見る必要がある。
レイヤー4:Surface
各ペインは複数のSurfaceを含めることができる — ブラウザのタブに似ており、⌘Tで作成する。各Surfaceには固有の識別子(CMUX_SURFACE_ID)があり、ソケットAPIで自動化する際に使用する。
Panel
下部レイヤー。各Surfaceが1つのPanelを実行し、ターミナルまたはブラウザのどちらかになれる。そう — Chromeに切り替えて戻ることなく、ペイン内で直接ブラウザを開けるのだ。
レイヤーサマリー
| レイヤー | 説明 | 作成 | 識別子 |
|---|---|---|---|
| Window | macOSウィンドウ | ⌘⇧N |
— |
| Workspace | サイドバーのアイテム | ⌘N |
CMUX_WORKSPACE_ID |
| Pane | 分割領域 | ⌘D / ⌘⇧D |
Pane ID(ソケットAPI) |
| Surface | ペイン内のタブ | ⌘T |
CMUX_SURFACE_ID |
| Panel | ターミナルまたはブラウザ | 自動 | Panel ID(内部) |
この構造を使って複数エージェントを管理する方法
一般的な設定:
Workspace = エージェント(またはタスク)
エージェントごとに1つのworkspaceを作り、何をしているかで名前をつける — claude-feature、claude-test、monitoring。
Pane = 同じタスク内の異なる視点
フィーチャーworkspace内で、左にエージェントの出力、右にブラウザプレビュー — どちらもこのタスクに属するが、同時に見る必要がある。
Surface = スペースの確保
ペインに予備のシェルSurfaceを残しておくと、メインエージェントの出力を妨げることなく、いつでも手動で操作できる。
このレイアウトで画面が整理される — 各ペインに役割があり、どこを見ればいいか常にわかる。
3層構造はカバーした。次の記事:設定の調整 — フォント、カラー、スクロールバック、CMUXを使いやすくするその他の詳細:CMUX設定完全ガイド。