
tmuxは2007年にニコラス・マリオット(Nicholas Marriott)が公開したターミナル多重化ソフトウェアで、名称は「terminal multiplexer」の略です。OpenBSD向けに書き起こされ、後にLinuxやmacOSへ移植されました。一つの物理端末ウィンドウの中に複数のシェルセッションを同居させ、画面分割やウィンドウ切替、デタッチ(切り離し)/アタッチ(再接続)を自在に行える点が特徴で、サーバー上での長時間作業やSSH越しの開発で広く使われています。本記事ではtmuxの仕組みと位置づけを順に整理します。
この記事の目次
- tmuxを支える三層モデル
- screenの限界からの再設計
- 実務での使われ方
- screen・Zellij・WeztermPaneとの位置関係
- まとめ
tmuxを支える三層モデル

tmuxは「セッション・ウィンドウ・ペイン」という三層構造でターミナルを管理します。セッションは一連の作業環境を抱える最上位の単位で、これにアタッチしている間だけ画面が表示され、デタッチすればプロセスはサーバー側で動き続けたまま、別の場所からアタッチし直して続きを再開できます。SSH接続が切れても作業内容が失われない、という性質はサーバー作業者にとって決定的な利点です。
セッションの内側にはウィンドウが並び、ブラウザのタブのように切り替えながら複数のテーマを持てます。さらにウィンドウは縦横の分割によってペインへ細分化でき、左にエディタ、右上にログのtail、右下にビルドコマンドといった三画面構成が一つの端末内で完結します。各ペインは独立したシェルプロセスとして動くため、片方が長時間処理を回している間にもう片方で別の作業を進められる、軽量な「ターミナル版ウィンドウマネージャ」になっています。
screenの限界からの再設計

tmuxが解こうとしたのは、長年使われてきたGNU screenの設計上の制約でした。screenは1987年にOskar Schirmerらが書いた多重化ツールで、デタッチや画面分割といった基本機能はそろっていたものの、コードベースが古く、画面分割の挙動や設定ファイルの記述に分かりにくい点が多く残っていました。ニコラス・マリオットは2007年、OpenBSDの開発者として、よりシンプルで一貫性のある多重化ツールを書き直す形でtmuxを公開しました。
tmuxはBSDライセンスで配布され、OpenBSDのベースシステムにも取り込まれたため、BSD系の世界で急速に置き換えが進みました。Linux各ディストリビューションのリポジトリにも早期から登録され、Homebrew経由で簡単に入るmacOSでも普及し、「screenの代わりに最初からtmuxを入れる」という選択が新世代の開発者の間で定番化していきます。クライアント・サーバ型のアーキテクチャを採用したことで、コマンドラインから多彩な操作を行いやすくなった点も移行を後押ししました。
実務での使われ方

tmuxが最も価値を発揮するのは、SSHでサーバーに入ってからの作業です。ネットワーク不調で接続が切れても、tmuxセッションはサーバー側で動き続けているため、再接続してアタッチすれば直前の状態が完全に戻ります。数時間かかるビルドや、本番DBのバックアップ転送、長時間のログ追跡など、「途中で接続が切れたら最初からやり直し」のリスクを抱える作業を安心して仕掛けられるようになり、運用者の精神的負荷を大幅に下げてくれます。
個人の開発環境としても、Vim/Neovimユーザーを中心にtmuxを使ったレイアウトが定番化しています。左にエディタ、右にREPL、下にテストランナーといった構成を組み、Ctrl+B のプレフィックスキー一つで切り替えるスタイルです。tmuxinatorやtmuxpといったツールを使うと、プロジェクトごとのレイアウトをYAMLで保存しておき、コマンド一発で復元できるようになります。リモートペアプログラミングでも、一つのセッションに複数のクライアントが接続し、互いの画面を共有しながら作業する用途で広く使われています。
screen・Zellij・WeztermPaneとの位置関係

screenとの比較では、互換性が問われる場面(古い商用Unixや組み込み機器)以外、ほぼあらゆる観点でtmuxが優位です。設定ファイルの記述が直感的で、tmux configの教材も多く、tmux send-keysのような外部操作APIも整っており、スクリプトから自動化しやすい点も含めて、新しく学ぶ人にとってscreenを選ぶ積極的な理由はほとんど残っていません。
新興のZellijはRust製で、初期状態でモード表示やヘルプが画面に出るなどUIをモダンに作り直した路線、Tmateはtmuxをベースに「URLを共有するだけでリモートの誰かを自分のセッションへ招ける」共同作業特化の派生です。WezTermやKittyなど一部のGUIターミナルも独自にペイン分割を備えていますが、サーバー側で常駐できる多重化はtmuxの独擅場で、「ローカルはGUI分割、サーバーはtmux」という併用が現代的な落としどころになっています。
まとめ
tmuxはサーバー作業のリスクと不便さを大幅に減らしてくれる多重化ツールで、SSH越し開発の必需品として根を張っています。セッションのデタッチ・アタッチという仕組みを覚えるだけでも作業の安全性が大きく上がるため、Unix系の運用に関わるなら早めに触れておきたい定番ソフトウェアです。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント