「ターミナルだけで開発なんて、IDEがないと不便でしょ」と思っていた時期が私にもありました。
ある日、Xで「Zellij + Yazi + Claude Code + Lazygit」という構成を紹介した投稿を見かけて、そのスクリーンショットに一目惚れしました。ファイラー、AIアシスタント、Git操作がすべてターミナル上で完結している美しいレイアウト。これは試してみるしかない!
そんなわけで、投稿を参考に自分の環境で再現してみたところ...想像以上に快適でした。この記事では、私が構築した開発環境のセットアップ方法を、ターミナル操作に不慣れな方にも分かりやすく解説します。
完成形のイメージ
今回構築する開発環境の画面構成はこちらです。
┌─────────────────────────┬─────────────────────────┐
│ │ │
│ Yazi │ Claude Code │
│ ファイラー │ (60%) │
│ (50%) │ │
│ ├─────────────────────────┤
│ │ │
│ │ Lazygit │
│ │ (40%) │
│ │ │
└─────────────────────────┴─────────────────────────┘
左半分でファイルを探して、右上でClaude Codeと対話しながらコーディング、右下でGit操作。この3つがすべてターミナル内で完結します。
対象読者
- ターミナルベースの開発環境に興味がある方
- Claude Codeを導入したけど、周辺ツールとの連携方法を知りたい方
- tmuxの代替を探している方
- Rust製ツールが好きな方
使用ツール紹介
今回使用する4つのツールを紹介します。すべてRust製(Claude Code除く)で、高速かつモダンな設計が特徴です。
| ツール | バージョン | 用途 | 特徴 |
|---|---|---|---|
| Zellij | v0.42.0 | ターミナルマルチプレクサ | tmux代替、レイアウト定義が直感的 |
| Yazi | v25.2.7 | ファイルマネージャー | 超高速、プレビュー機能が優秀 |
| Claude Code | 最新 | AIコーディングアシスタント | ターミナルネイティブなAI |
| Lazygit | 最新 | Git TUI | Git操作をビジュアルに |
選定理由
- Rust製で統一感: Zellij、Yazi、LazygitはすべてRust製で高速
- Unix哲学: 各ツールが単一責務を担い、組み合わせて使う設計
- ターミナルネイティブ: GUIを使わず、すべてがCLI/TUIで完結
準備: ツールのインストール
まずは必要なツールをインストールしましょう。macOSユーザーはHomebrewで一括インストールできます。
Brewfile
以下の内容で Brewfile を作成します(すでに持っている場合は追記)。
# === Terminal Dev Tools ===
# Zellij: ターミナルを分割して複数のペインを管理
brew "zellij"
# Yazi: 超高速なターミナルファイルマネージャー
brew "yazi"
# Lazygit: Git操作をTUIで直感的に
brew "lazygit"
# fzf: あいまい検索(ディレクトリ移動などに使用)
brew "fzf"
# ripgrep: 高速grep(fzfと組み合わせて使用)
brew "ripgrep"
一括インストール
# Brewfileがあるディレクトリで実行
brew bundle
# または個別にインストール
brew install zellij yazi lazygit fzf ripgrep
インストール確認
正しくインストールされたか確認しましょう。
# 各ツールのバージョンを表示
zellij --version # zellij 0.42.0
yazi --version # yazi 25.2.7
lazygit --version # lazygit version=...
Claude Codeについて: Claude Codeは Anthropic の公式CLIツールです。まだインストールしていない場合は、公式サイトからインストールしてください。
Step 1: Zellijの基本設定
Zellijは「ターミナルマルチプレクサ」です。1つのターミナルウィンドウを複数のペインに分割して、それぞれで別のプログラムを実行できます。tmuxと同じ役割ですが、設定がより直感的です。
設定ファイルの作成
まず設定ディレクトリを作成します。
mkdir -p ~/.config/zellij/layouts
次に、~/.config/zellij/config.kdl を作成して以下の内容を記述します。
// Zellij設定ファイル
// Vim風のキーバインドを設定
keybinds {
// Ctrl+w をペイン操作のプレフィックスに(Vim風)
shared {
bind "Ctrl w" { SwitchToMode "Pane"; }
}
// Paneモードでh,j,k,lで移動
pane {
bind "h" { MoveFocus "Left"; SwitchToMode "Normal"; }
bind "j" { MoveFocus "Down"; SwitchToMode "Normal"; }
bind "k" { MoveFocus "Up"; SwitchToMode "Normal"; }
bind "l" { MoveFocus "Right"; SwitchToMode "Normal"; }
// 分割もVim風に
bind "v" { NewPane "Right"; SwitchToMode "Normal"; }
bind "s" { NewPane "Down"; SwitchToMode "Normal"; }
// ペインを閉じる
bind "q" { CloseFocus; SwitchToMode "Normal"; }
// キャンセル
bind "Esc" { SwitchToMode "Normal"; }
}
}
キーバインド一覧
この設定で使えるキーバインドをまとめました。
| キー | 動作 |
|---|---|
Ctrl+w h |
左のペインに移動 |
Ctrl+w j |
下のペインに移動 |
Ctrl+w k |
上のペインに移動 |
Ctrl+w l |
右のペインに移動 |
Ctrl+w v |
右に分割(vertical) |
Ctrl+w s |
下に分割(split) |
Ctrl+w q |
ペインを閉じる |
Vimユーザーにはお馴染みの Ctrl+w プレフィックスです。Vimと同じ感覚でペイン間を移動できます。
Step 2: 開発用レイアウトファイルの作成
Zellijの強力な機能の1つが「レイアウト定義」です。KDL(Kubernetes Definition Language)形式でペイン構成を定義しておくと、コマンド一発で複数のツールを起動できます。
レイアウトファイルの作成
~/.config/zellij/layouts/dev.kdl を作成して以下の内容を記述します。
// 開発用レイアウト
// 使い方: cd ~/project/xxx && zellij --layout dev
layout {
// cwd を起動時のディレクトリに設定
// 空文字列にすると、zellij起動時のカレントディレクトリを使用
cwd ""
pane split_direction="vertical" {
// 左: Yazi ファイラー (50%)
pane size="50%" {
command "yazi"
args "."
}
// 右: Claude Code + Lazygit (50%)
pane size="50%" split_direction="horizontal" {
// 右上: Claude Code (60%)
// focus=true で起動時にこのペインにフォーカス
pane size="60%" focus=true {
command "claude"
}
// 右下: Lazygit (40%)
pane size="40%" {
command "lazygit"
}
}
}
}
設定項目の解説
| 設定項目 | 説明 |
|---|---|
cwd "" |
起動時のカレントディレクトリをそのまま使用 |
split_direction |
vertical(左右分割)or horizontal(上下分割) |
size |
ペインのサイズをパーセントで指定 |
focus=true |
起動時にこのペインにフォーカスを当てる |
command |
ペインで実行するコマンド |
args |
コマンドの引数 |
図解: ペイン構成
┌─────────────────────────┬─────────────────────────┐
│ │ │
│ pane (50%) │ pane (60%) [focus] │
│ command: yazi │ command: claude │
│ args: "." │ │
│ ├─────────────────────────┤
│ │ │
│ │ pane (40%) │
│ │ command: lazygit │
│ │ │
└─────────────────────────┴─────────────────────────┘
Step 2.5: 4ペインレイアウト(おまけ)
複数のタスクを並列で進めたいとき用に、4つのClaude Codeを2x2グリッドで起動するレイアウトも用意しました。
画面構成
┌─────────────────┬─────────────────┐
│ Claude Code │ Claude Code │
│ (フォーカス) │ │
├─────────────────┼─────────────────┤
│ Claude Code │ Claude Code │
│ │ │
└─────────────────┴─────────────────┘
レイアウトファイル
~/.config/zellij/layouts/quad.kdl を作成して以下の内容を記述します。
// 4ペインClaude Codeレイアウト
// 使い方: zellij --layout quad
// エイリアス: cc4
layout {
// cwd を起動時のディレクトリに設定
cwd ""
pane split_direction="horizontal" {
// 上段 (50%)
pane size="50%" split_direction="vertical" {
// 左上: Claude Code
pane size="50%" focus=true {
command "claude"
}
// 右上: Claude Code
pane size="50%" {
command "claude"
}
}
// 下段 (50%)
pane size="50%" split_direction="vertical" {
// 左下: Claude Code
pane size="50%" {
command "claude"
}
// 右下: Claude Code
pane size="50%" {
command "claude"
}
}
}
}
用途
- 複数のClaude Codeを同時起動して並列作業
- 異なるプロジェクトやタスクを同時に進行
- コードレビューと実装を同時に行う
Step 3: Yaziの設定
YaziはRust製の超高速ファイルマネージャーです。デフォルトでも使いやすいですが、少しカスタマイズするとさらに快適になります。
設定ファイルの作成
mkdir -p ~/.config/yazi
~/.config/yazi/yazi.toml を作成して以下の内容を記述します。
# Yazi設定ファイル
# レイアウト設定
# ratio = [親ディレクトリ, カレント, プレビュー]
# 親を0にすると非表示(VSCode風の2カラムレイアウト)
[mgr]
ratio = [0, 1, 2]
show_hidden = true
設定の意味
| 設定項目 | 説明 |
|---|---|
ratio = [0, 1, 2] |
親ディレクトリ非表示、カレント:プレビュー = 1:2 |
show_hidden = true |
.zshrc などの隠しファイルを常に表示 |
デフォルトのYaziは3カラム(親・カレント・プレビュー)ですが、この設定で2カラムになりプレビューが広くなります。
Yaziの便利なキーバインド
Yaziはデフォルトでも便利なキーバインドが揃っています。
| キー | 動作 |
|---|---|
. |
隠しファイル表示切り替え |
h |
親ディレクトリへ |
l / Enter
|
ディレクトリに入る / ファイルを開く |
j / k
|
上下移動 |
y |
ヤンク(コピー) |
p |
ペースト |
d |
削除 |
r |
リネーム |
Space |
選択 |
/ |
検索 |
z |
fzfでディレクトリ移動 |
特に z キーが便利です。fzfと連携して、どこからでも目的のディレクトリにジャンプできます。
Step 4: シェル統合設定
最後に、シェルの設定を行います。.zshrc に以下を追加してください。
# === Terminal Dev Tools ===
# yazi: シェル統合(終了時にカレントディレクトリを変更)
# Yaziで移動したディレクトリを、終了後もシェルに反映させる
function y() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
yazi "$@" --cwd-file="$tmp"
if cwd="$(command cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
builtin cd -- "$cwd"
fi
rm -f -- "$tmp"
}
# lazygit: エイリアス(短縮コマンド)
alias lg="lazygit"
# zellij: 開発レイアウトで起動
alias zdev="zellij --layout dev"
alias cc4="zellij --layout quad"
# fzf + ripgrep: 検索設定
# fzfのデフォルト検索にripgrepを使用(.gitを除外、隠しファイルは含む)
export FZF_DEFAULT_COMMAND='rg --files --hidden --glob "!.git"'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
alias ff='fzf --preview "cat {}"'
# fzf: キーバインド設定(fzf installで生成)
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
エイリアス一覧
| エイリアス | 展開 | 用途 |
|---|---|---|
y |
yazi関数 | ファイラー起動(終了後にcdも反映) |
lg |
lazygit | Git操作 |
zdev |
zellij --layout dev | 3ペイン開発環境起動 |
cc4 |
zellij --layout quad | 4ペインClaude Code起動 |
ff |
fzf --preview "cat {}" | プレビュー付きファジー検索 |
設定を反映
source ~/.zshrc
実際に使ってみる
設定が完了したら、実際に使ってみましょう。
zdevコマンドでの起動
# プロジェクトディレクトリに移動して開発環境を起動
cd ~/project/my-project && zdev
たったこれだけで、Yazi + Claude Code + Lazygitの3ペイン構成が起動します!
基本的な操作フロー
- 左ペイン(Yazi): ファイルを探して確認
- 右上ペイン(Claude Code): AIにコーディングを依頼
- 右下ペイン(Lazygit): 変更をコミット・プッシュ
ペイン間の移動は Ctrl+w h/j/k/l です。
Zellijの基本操作
| キー | 動作 |
|---|---|
Ctrl+w h/j/k/l |
ペイン移動 |
Ctrl+n → h/l
|
ペインサイズ変更(Resizeモード) |
Ctrl+t |
新しいタブ |
Ctrl+q |
Zellij終了 |
セッション管理
Zellijにはセッション機能があり、作業を中断しても後から再開できます。
# 名前付きセッションで起動
zellij --session my-project --layout dev
# セッション一覧
zellij list-sessions
# セッションに再接続
zellij attach my-project
# セッションを終了せずに離脱
# Ctrl+o d(デフォルト)
他のPCへの展開
「この環境を別のMacにも入れたい!」という方向けに、dotfilesとして管理する方法を紹介します。
ディレクトリ構成
dotfiles/
├── .config/
│ ├── zellij/
│ │ ├── config.kdl # キーバインド設定
│ │ └── layouts/
│ │ ├── dev.kdl # 開発用レイアウト
│ │ └── quad.kdl # 4ペインClaude Code
│ └── yazi/
│ └── yazi.toml # Yaziレイアウト設定
├── .zshrc # シェル設定
├── Brewfile # Homebrewパッケージ
└── setup.sh # セットアップスクリプト
セットアップスクリプト
setup.sh を作成して以下の内容を記述します。
#!/bin/bash
# dotfiles セットアップスクリプト
# 使い方: ./setup.sh
set -e
DOTFILES_DIR="$(cd "$(dirname "$0")" && pwd)"
echo "=== dotfiles セットアップ ==="
echo "dotfiles ディレクトリ: $DOTFILES_DIR"
# シンボリックリンクを作成する関数
link_file() {
local src="$1"
local dest="$2"
# 既存のシンボリックリンクがあれば削除
if [ -L "$dest" ]; then
echo " 既存のリンクを削除: $dest"
rm "$dest"
# 既存のファイルがあればバックアップ
elif [ -e "$dest" ]; then
echo " バックアップ: $dest -> ${dest}.backup"
mv "$dest" "${dest}.backup"
fi
# 親ディレクトリを作成してリンク
mkdir -p "$(dirname "$dest")"
ln -s "$src" "$dest"
echo " リンク作成: $dest -> $src"
}
echo ""
echo "=== シェル設定 ==="
link_file "$DOTFILES_DIR/.zshrc" "$HOME/.zshrc"
echo ""
echo "=== Zellij 設定 ==="
link_file "$DOTFILES_DIR/.config/zellij/config.kdl" "$HOME/.config/zellij/config.kdl"
link_file "$DOTFILES_DIR/.config/zellij/layouts/dev.kdl" "$HOME/.config/zellij/layouts/dev.kdl"
link_file "$DOTFILES_DIR/.config/zellij/layouts/quad.kdl" "$HOME/.config/zellij/layouts/quad.kdl"
echo ""
echo "=== Yazi 設定 ==="
link_file "$DOTFILES_DIR/.config/yazi/yazi.toml" "$HOME/.config/yazi/yazi.toml"
echo ""
echo "=== Homebrew パッケージ ==="
if command -v brew &> /dev/null; then
echo " brew bundle でパッケージをインストール..."
brew bundle --file="$DOTFILES_DIR/Brewfile"
else
echo " Homebrew がインストールされていません。先にインストールしてください:"
echo " /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\""
fi
echo ""
echo "=== セットアップ完了 ==="
echo "シェルを再起動してください: source ~/.zshrc"
セットアップ手順
別のPCでこの環境を再現する手順です。
# 1. リポジトリをクローン
git clone git@github.com:yourname/dotfiles.git ~/project/dotfiles
# 2. セットアップ実行
cd ~/project/dotfiles
chmod +x setup.sh
./setup.sh
# 3. シェル再起動
source ~/.zshrc
# 4. fzfのキーバインド設定(初回のみ)
$(brew --prefix)/opt/fzf/install
まとめ
この構成のメリット
-
起動が一瞬:
zdevコマンドで3つのツールが同時起動 - Rust製で統一: 高速でリソース消費が少ない
- カスタマイズ性: レイアウトを自由に定義できる
- 再現性: dotfilesで管理すればどこでも同じ環境
この記事で紹介した設定ファイル
| ファイル | 役割 |
|---|---|
~/.config/zellij/config.kdl |
Zellijキーバインド |
~/.config/zellij/layouts/dev.kdl |
3ペインレイアウト |
~/.config/zellij/layouts/quad.kdl |
4ペインレイアウト |
~/.config/yazi/yazi.toml |
Yaziレイアウト |
~/.zshrc |
シェル設定・エイリアス |