tmuxとは？実務未経験者におすすめする理由と基本的な使い方

## 1. はじめに
実務未経験者が開発環境を整える際に、`tmux`というツールがとても役立ちます。`tmux`は、ターミナルマルチプレクサと呼ばれるもので、1つのターミナルで複数のセッションを管理することができます。本記事では、`tmux`の基本的な使い方と、そのメリットを紹介します。

## 2. tmuxのメリット
### 2.1 セッションの持続性
ターミナルを閉じても、セッションを保持し、再接続できるため、作業を中断してもすぐに再開できます。

### 2.2 複数ウィンドウ・ペインの管理
1つのターミナルで複数のウィンドウやペイン（分割画面）を扱えるため、効率的な作業が可能です。

### 2.3 リモート環境での作業効率向上
リモートサーバーでの作業中に、セッションが切れても作業状態を保てるため、SSHセッション中の突然の切断にも対応できます。

### 2.4 カスタマイズ可能なキーバインド
自分の作業スタイルに合わせてキーバインドをカスタマイズすることで、より効率的な操作が可能になります。

## 3. tmuxの基本操作
### 3.1 tmuxのインストール
各種OSでの`tmux`インストール方法を説明します。

```bash
# Ubuntuの場合
sudo apt-get install tmux
```

### 3.2 新しいセッションを開始する
tmuxを起動して新しいセッションを開始する方法を解説します。

```bash
tmux new -s mysession
```

### 3.3 ウィンドウとペインの管理
- ウィンドウを作成する: `Ctrl+b c`
- ペインを分割する: Ctrl+b % または `Ctrl+b`
- ペイン間の移動: `Ctrl+b o`

### 3.4 セッションの管理
- セッションをデタッチする: `Ctrl+b d`
- セッションを一覧表示する: `tmux ls`
- デタッチしたセッションに再接続する: `tmux attach -t mysession`

## 4. tmuxを使った効率的な開発環境の構築
実際にtmuxを使って効率的な開発環境を構築する手順を紹介します。例えば、複数のプロジェクトを同時に開発する際のtmuxの利用例を示します。

### 4.1 tmuxのインストール

まず、tmuxがインストールされていない場合は、以下のコマンドでインストールします。

```bash
# Ubuntu/Debianの場合
sudo apt-get install tmux

# macOS (Homebrew)の場合
brew install tmux
```

### 4.2 基本的なtmuxセッションの作成
tmuxを起動し、新しいセッションを作成します。セッションはプロジェクトごとに作成することで、効率的な開発環境を構築できます。

```
tmux new-session -s myproject1
```

このコマンドで、myproject1という名前のセッションが作成されます。tmux内では、複数のウィンドウとペインを使い分けることで、1つのセッションで複数のタスクを同時に管理できます。

### 4.3 複数プロジェクトの同時開発
例えば、`myproject1`と`myproject2`の2つのプロジェクトを同時に開発する場合、以下の手順でtmuxを使い分けます。

1. `myproject1`セッションを開き、必要なウィンドウやペインを作成する。
1. `Ctrl+b d`を押してセッションをデタッチする。
1. `myproject2`セッションを新たに作成し、同様に環境をセットアップする。

```bash
# myproject2セッションを作成
tmux new-session -s myproject2
```

これで、myproject1とmyproject2を独立して開発することができます。必要に応じて、各セッションに戻り、作業を続けることができます。

### 4.4 セッションの管理
現在のセッションを一覧表示したり、別のセッションに接続する際には、以下のコマンドを使用します。

```bash
# セッションの一覧表示
tmux ls

# 既存のセッションにアタッチ
tmux attach-session -t myproject1
```
セッションを切り替えながら作業することで、複数のプロジェクトを効率的に開発できます。

### 4.5 tmuxのカスタマイズ
tmuxは非常に柔軟で、カスタマイズも容易です。`.tmux.conf`ファイルを作成して、キーバインドやウィンドウの設定を自分好みに変更することができます。例えば、以下のようなカスタマイズが可能です。

```
# tmux.confの例
# ウィンドウやペインを作成するキーバインドをカスタマイズ
unbind C-b
set -g prefix C-a

# ウィンドウの名前を自動で設定
set -g automatic-rename on
```


## 5. tmuxをさらに便利にするプラグイン

tmuxの基本機能を理解したら、次にプラグインを導入してさらに便利に使いましょう。以下におすすめのプラグインをいくつか紹介し、それぞれのインストール方法と活用事例について解説します。

### 5.1 tmux Plugin Manager (TPM)
**TPM**は、tmuxのプラグイン管理を簡単にするためのツールです。複数のプラグインを簡単にインストール、更新、削除することができます。

#### インストール方法
1. ホームディレクトリに`.tmux/plugins/`ディレクトリを作成します。
1. 次に、以下のコマンドでTPMをインストールします。

    ```bash
    git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
    ```
1. `.tmux.conf`ファイルに以下の行を追加します。

    ```bash
    # List of plugins
    set -g @plugin 'tmux-plugins/tpm'
    
    # Initialize TMUX plugin manager
    run '~/.tmux/plugins/tpm/tpm'
    ```

1. tmuxセッション内で `prefix + I`（通常、Ctrl + b を押した後に I を押します）を実行すると、TPMがプラグインをインストールします。

#### 活用事例
TPMを利用することで、新しいプラグインを簡単に導入でき、作業環境をさらにカスタマイズすることができます。たとえば、バッテリーのステータス表示や、ウィンドウの名前変更など、さまざまな拡張機能を手軽に利用できます。

### 5.2 tmux-resurrect
**tmux-resurrect**は、セッションの状態を保存し、後で復元することができるプラグインです。作業を中断した際に、ウィンドウやペインのレイアウト、実行中のコマンドなどを保存できるため、再開時に便利です。

#### インストール方法
TPMを使用してインストールする方法を紹介します。

1. `.tmux.conf`ファイルに以下の行を追加します。

    ```bash
    set -g @plugin 'tmux-plugins/tmux-resurrect'
    ```

2. 再度、`prefix + I`を実行してインストールします。

#### 活用事例
複数のターミナルウィンドウやペインを駆使して開発を行っている場合、突然の電源オフやログアウトでも、作業環境を簡単に復元できます。これにより、作業の効率が大幅に向上します。

### 5.3 tmux-continuum
**tmux-continuum**は、tmux-resurrectと組み合わせることで、自動的にセッションの状態を定期的に保存し、システム起動時に自動的に復元できるプラグインです。

#### インストール方法
1. `.tmux.conf`に以下を追加します。

    ```bash
    set -g @plugin 'tmux-plugins/tmux-continuum'
    ```

2. 再度、`prefix + I`を実行してインストールします。

3. セッションの自動保存と自動復元を有効にするには、以下を追加します。

    ```bash
    set -g @continuum-restore 'on'
    ```

#### 活用事例
開発環境が自動的にバックアップされ、システム再起動時にすべてのセッションが復元されるため、非常にスムーズな作業再開が可能です。特に複雑な環境を構築している場合に便利です。


### 6. まとめ
tmuxは、実務未経験者にとっても簡単に使いこなせるツールであり、効率的な開発環境を作るのに非常に役立ちます。まずは基本操作を覚え、実際の作業に活用してみてください。