- Published on
ターミナル & シェル ツール 2026 — Ghostty / Wezterm / Alacritty / Kitty / Warp / Fish 4 / Nushell / Zellij / Starship 徹底ガイド
- Authors

- Name
- Youngju Kim
- @fjvbn20031
プロローグ — ターミナルがふたたび面白くなった
10年間、ターミナルは「退屈な道具」だった。1990年代に固まったxtermモデルの上に、iTerm2(2008)・GNU screen(1987)・tmux(2007)がほぼすべてを整理してくれていた。その後の変化と言えば「少し綺麗なフォント」と「少し速い描画」くらい。
2024年から2026年にかけて、その風景がまるごと揺らいだ。
- 2024年12月、Ghostty 1.0がGAした。Mitchell HashimotoがHashiCorpを離れ、2年間フルタイムで書き上げたZigベースのターミナル。private beta時代から話題で、GA初週でGitHubスター2万超。
- Fish 4(2024)が登場し、シェル自体がRustで書き直される時代の幕が開いた。C++コードベースをRustへ段階的に移行した、史上最大規模のシェルプロジェクトだ。
- WarpはAIネイティブターミナルとしての立ち位置を確立した。Rust + Apple Metalの基盤に、LLM統合を最初から一級市民として載せている。
- Nushellはもう実験ではない。0.xではあるものの、データエンジニアやSREの一部が「Pythonの代わりにシェル」として使い始めている。
- Zellijはtmuxの実用的な代替に育ち、Starshipは事実上すべてのシェルの標準プロンプトになった。
- bat / eza / zoxide / fd / ripgrep / fzf / atuin — UnixユーティリティのRust書き直しの流れは、もはやデフォルト。AppleもmacOS Sequoia以降の開発者向けガイドで、BSD grepの代替としてripgrepを推奨し始めた。
本稿では、2026年のターミナル・シェル・マルチプレクサ・CLIユーティリティの風景を エミュレータ → シェル → マルチプレクサ → プロンプト → ユーティリティ → dotfiles の順で一気にまとめる。最後にmacOS・Linux・Windows・デザイン重視・速度重視それぞれのシナリオで、誰がどれを選ぶべきかのマトリクスを置く。
1章 · 2026年のターミナル地図 — 4つのレイヤ
まず一枚の図から。「ターミナル」という一語の中には、実は4つの違うものが入っている。
[あなたのキーボード]
|
v
+----------------------+
| ターミナル | <- ピクセルを描画するGUI
| エミュレータ | Ghostty / Wezterm / Alacritty / Kitty
| (Ghostty,...) | Warp / iTerm2 / Windows Terminal
+----------+-----------+
|
| pty (仮想ターミナル)
v
+----------------------+
| シェル | <- コマンドを解釈する
| (bash, zsh, fish, | bash / zsh / fish / nushell
| nushell, ...) | elvish / xonsh / Oils sh
+----------+-----------+
|
| fork / exec
v
+----------------------+
| マルチプレクサ | <- セッション・ウィンドウ・ペイン
| (tmux, zellij, | tmux / zellij / screen / dvtm
| screen, ...) |
+----------+-----------+
|
v
+----------------------+
| CLIユーティリティ | <- bat / eza / zoxide / fd / rg / fzf / atuin
| + prompt | <- starship / p10k / oh-my-zsh / oh-my-posh
+----------------------+
この4レイヤを切り分けて見ないと、ツール選びがすぐに絡まる。「Warpが良い」という発言は、エミュレータ + シェル + マルチプレクサ + プロンプトの一部を束ねた製品が良いという意味であって、「tmuxより速い」という意味ではない。逆に「Ghostty + zsh + tmux + starship + atuin」は4レイヤを明確に分離したクラシックな構成だ。
覚えておくべき一行: エミュレータ=ピクセル、シェル=意味、マルチプレクサ=セッション、プロンプト=情報。
2章 · Ghostty — Mitchell Hashimotoの2年仕事、2024年12月GA
もっとも興味深い新参者から。
Ghosttyは、HashiCorp(Terraform・Vault・Consulの会社)の共同創業者Mitchell Hashimotoが、フルタイムを離れて2年かけて書いたターミナルだ。Zigで実装され、長いprivate betaを経て2024年12月に1.0をリリース。GA初週でGitHubスターが20,000を超えた。
主な特徴:
- Zigで書かれている。 RustでもC++でもない。Zigは「Rustより複雑さを抑えたメモリ安全システム言語」を目指す。Mitchellは「Zigコンパイラ自体に頻繁にパッチを当てながら作った」とインタビューで語っている。
- ネイティブGUI。 macOSはSwiftUI、LinuxはGTK4。Electronではない。中核はlibghosttyというCライブラリで、各プラットフォームが自分のGUIを被せる。
- xterm 100%互換。 ECMA-48・ISO 2022・DEC private modes・xterm拡張までまじめに実装。Mitchellは「ターミナルプロトコルそのものが面白くて始めた」と公言。
- GPU描画。 Metal(macOS)/ OpenGL(Linux)。Alacritty級の速度。
- Kitty graphics protocol + Sixel 対応 — インライン画像が出る。
- ほぼすべての設定がkey-valueファイル。
~/.config/ghostty/configにfont-size = 14のように書くだけ。LuaもPythonもない。
設定例(シンプルさが売り):
# ~/.config/ghostty/config
font-family = "JetBrains Mono"
font-size = 14
theme = "GruvboxDarkHard"
background-opacity = 0.95
window-padding-x = 12
window-padding-y = 12
macos-titlebar-style = "tabs"
keybind = cmd+t=new_tab
keybind = cmd+shift+enter=toggle_fullscreen
Ghosttyが話題になった理由は「また新しいターミナル」だからではない。「一人がフルタイム2年を投入すれば、これだけの品質のシステムソフトウェアが作れる」という証明だった。 xterm互換性・GPU描画・2プラットフォームのネイティブGUIを同時に満たしたターミナルは、それ以前には存在しなかった。
限界も明確だ。
- Windows未対応。 2026年5月時点でmacOS・Linuxのみ。WSLは可。
- 拡張性は低い。 LuaやPythonのようなスクリプティングがない。キーバインド設定が事実上の限界。
- テーマ生態系はまだ小さい。 iTerm2のようにコミュニティ作の数千テーマが揃ってはいない。
一行で覚えるなら: Ghosttyは「ただ速くて綺麗なターミナル」。それが最大の長所。
3章 · Wezterm — Luaでスクリプト可能なRustターミナル
Wezterm(Wez Furlong作)は2020年から活発に開発が続いているRustベースのターミナル。一行要約: 「Luaコンフィグ + 内蔵マルチプレクサ + マルチOS」。
特徴:
- Rust。 wgpu経由でMetal・Vulkan・DX12・OpenGLをすべて使う。
- Lua設定。
~/.wezterm.lua。キーバインド・自動化・イベントフックをフルスクリプティング言語で書く。意図された強力さ。 - 内蔵マルチプレクサ。
wezterm cliコマンドで外側からtmuxのような操作ができる。リモートホストのwezterm-mux-serverに接続すれば永続セッションも作れる。 - Linux・macOS・Windowsネイティブ。 3OS全てでGPU加速。
- SSHドメイン。 Wezterm内部でSSH先のペインをローカルのように扱える。
設定例:
-- ~/.wezterm.lua
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
config.font = wezterm.font 'JetBrains Mono'
config.font_size = 14
config.color_scheme = 'GruvboxDark'
config.window_background_opacity = 0.95
config.hide_tab_bar_if_only_one_tab = true
-- キーバインド
config.keys = {
{ key = 't', mods = 'CMD', action = wezterm.action.SpawnTab 'CurrentPaneDomain' },
{ key = 'd', mods = 'CMD', action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' } },
{ key = 'D', mods = 'CMD|SHIFT', action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' } },
}
-- イベントフック
wezterm.on('update-right-status', function(window, pane)
window:set_right_status(wezterm.strftime '%H:%M:%S')
end)
return config
Weztermを選ぶ理由は明快だ: すべての設定をコードで管理したく、ひとつの道具でマルチプレクサまで完結させたいとき。 Ghosttyのシンプルさよりも、Weztermの表現力を取る人々。
4章 · Alacritty — もっともシンプルなRustターミナル
Alacritty(2017–)はRustターミナルの始祖。哲学は一行: 「描画は速く、それ以外はやらない」。
- GPU描画 — OpenGL ES2ベース。ベンチマークでは最速クラス。
- YAML→TOML設定 —
alacritty.tomlにフォント・色・キーバインドのみ。 - タブなし、分割なし。 わざと作らない。「それはtmuxの仕事」という立場。
- すべてのOS — macOS・Linux・Windows・BSD。
設定例:
# ~/.config/alacritty/alacritty.toml
[font]
normal = { family = "JetBrains Mono", style = "Regular" }
size = 14
[colors.primary]
background = '#1d2021'
foreground = '#d4be98'
[window]
opacity = 0.95
padding = { x = 12, y = 12 }
decorations = "buttonless"
[keyboard]
bindings = [
{ key = "T", mods = "Command", action = "SpawnNewInstance" },
]
Alacrittyの魅力はシンプルさ。「ターミナルは文字を描くことだけに集中し、セッション管理はtmuxに任せろ」。この哲学が好きならAlacrittyが答え。2026年はGhosttyが同じシンプルさにSwiftUIネイティブGUIを乗せて強力な競合となったが、純粋なクロスプラットフォーム互換性ではAlacrittyが依然優位。
5章 · Kitty — GPU加速 + Python設定
Kitty(Kovid Goyal、2017–)はCとPythonを混ぜたターミナル。Alacrittyと同時期に登場したが、哲学は正反対: 「機能を盛り込もう」。
- GPU描画 — OpenGL。
- Kitty graphics protocol — 画像・アイコン・プレビューをインラインで表示。今やGhosttyもWeztermもこのプロトコルを話す(Kittyが事実上の標準化を成し遂げた格好)。
- kittens — Pythonで書かれた小さなアプリ群。
icat(画像ビューア)、hyperlinked_grep、clipboardなど。 - タブ・スプリット内蔵。 マルチプレクサなしでも実用に足る。
- confスタイル設定 —
~/.config/kitty/kitty.conf。主にkey-value。
設定例:
# ~/.config/kitty/kitty.conf
font_family JetBrains Mono
font_size 14.0
background_opacity 0.95
window_padding_width 12
# タブ
map cmd+t new_tab
map cmd+shift+enter toggle_fullscreen
# スプリット
enabled_layouts splits,stack
map cmd+d launch --location=vsplit
map cmd+shift+d launch --location=hsplit
Kittyは 「ひとつの道具で全部終わらせたいが、LuaやJSはイヤで、Pythonが好き」 という人向けの選択。科学計算・研究・MLの界隈でよく見る。
6章 · Warp — AIファーストの大博打
Warp(2020–)は、新興ターミナルの中でもっとも大胆な賭けをした製品。Y Combinator卒、シリーズBまで調達済み。スローガンは「ターミナルを30年ぶりに再設計する」。
差別化ポイント:
- Rust + Apple Metal — macOSの4Kディスプレイでも60fps滑らかに描画。
- ブロックベースUI — 各コマンドとその出力をひとつの「ブロック」にまとめ、スクロール・検索・共有・再実行できる。
- AI統合 — Warp AIが自然言語からコマンドを生成し、出力を解説し、エラーを解釈する。当初は自社LLM統合のみ、その後Claude・GPTもオプションに追加。
- Warp Drive — チームでコマンドワークフローを共有するクラウド機能。SaaSの面。
- Workflows — パラメータ化されたコマンドテンプレート。シェルエイリアスの発展形。
- Notebooks — JupyterのようにMarkdownとコマンドを混ぜるドキュメント形式。
トレードオフ:
- クラウド依存 — 長らくログイン必須だった(2024年末に部分的な匿名モードを追加)。SREやセキュリティチームに敬遠されることも。
- macOSファースト — Linuxは2023年ベータ、2025年に安定。Windowsは依然未対応。
- シェル互換性 — Warpはシェルをラップして動く。zsh・bash・fishはほぼ動くが、Powerlevel10kのinstant promptなど一部のプロンプト設定と衝突する場合がある。
Warpを選ぶ人々:
- AIアシストが日常業務の一部となり、自然言語→コマンド変換を頻繁に行うエンジニア。
- チームでワークフローを共有したいSRE / DevOpsチーム。
- 「ターミナルはゼロから再設計すべき」という哲学に同意する層。
避ける人々:
- クラウド依存とテレメトリに過敏なセキュリティチーム。
- 「ターミナルは小さくあるべき」というUnix純血主義派。
- Windowsユーザ。
一行で覚えるなら: Warpは「エディタの進化がVS Codeなら、ターミナルの進化はうちだ」という賭けだ。
7章 · iTerm2 / Windows Terminal / Tabby / Hyper — 既存勢の現在地
iTerm2 — macOSのクラシック(2008–)
George NachmanのObjC作品。17年間macOSターミナルの標準であり続けた。
- 機能が豊富 — 分割ペイン、トリガー、自動補完、ホットキーウィンドウ、Shell Integrationまで。
- 欠点 — Apple Silicon上ではGPU加速の他ターミナルに比べて遅いという評が定着。
- 2026年の現状 — 安定した保守モード。iTerm2からGhosttyへの移行が加速中。
Windows Terminal — Microsoft公式(2019–)
- Windows 11標準 — cmd・PowerShell・WSLを一つのウィンドウで扱う。
- DirectX 11 + DirectWrite描画 — 速い。
- JSON設定 —
settings.jsonに集約。 - 2026年の現状 — Windowsでは事実上の標準。WSLユーザもそのまま使う。
Tabby(旧Terminus) — Electronベースのクロスプラットフォーム(2017–)
- Electron — 軽くはないが、macOS・Linux・Windowsで同一挙動。
- プラグイン生態系 — npmのようなノリでプラグインを入れる。
- SSH・Telnet・シリアルクライアント内蔵 — PuTTY代替として使う層が一定数。
Hyper — JS/HTML/CSSのElectronターミナル(2016–)
- Vercel(旧Zeit)製 — テーマをJSとCSSで書く。
- 2026年の現状 — 停滞気味。Electronの重さと性能上限により、新規採用がほぼ止まった。
一行: 2026年にmacOSで新たに始めるならGhosttyかWezterm。WindowsならWindows Terminalが正解。
8章 · Fish 4(2024) — Rust書き直し
シェルレイヤへ。最大の事件はFish 4だ。
Fish(Friendly Interactive Shell)は2005年からあるが、長らくC++で書かれていた。2024年公開のFish 4は、C++コードベースのほぼ全体をRustへ移行したメジャーリリース。PostgreSQLやCPythonなど大型OSSがRust移行を検討するときに引用される代表例だ。
Fishの魅力(Fish 1から続くもの):
- POSIX非互換 — わざと外している。
if / then / fiの代わりにif / end。好き嫌いが分かれる。 - オートサジェスト — 入力中にグレーで補完候補が見える。
- シンタックスハイライト — コマンドが存在すれば色が変わる。
- 関数とabbreviation — エイリアスより豊かな仕組み。
Fish 4の中身:
- Rustで書き直し — 起動が速く、メモリが安全で、バイナリも小さい。
- CMake → Cargo — ビルドシステム自体が刷新された。
- 互換性は維持 — ユーザ視点ではほぼ違いを感じない。関数・エイリアス・キーバインドはそのまま。
設定例:
# ~/.config/fish/config.fish
set -gx EDITOR nvim
set -gx PATH $HOME/.cargo/bin $PATH
# abbreviation — 入力時に展開される
abbr -a gst git status
abbr -a gco git checkout
abbr -a k kubectl
# starshipプロンプト
starship init fish | source
# zoxide
zoxide init fish | source
# キーバインド
bind \cr 'atuin search'
Fish 4が示すもの:
- シェル自身をRustで書き直す流れの号砲。 Nushellは最初からRustだったが、「既存シェルをRustへ移した」最初の大型ケースがFish 4。
- C++→Rust移行のケーススタディ。 段階的なports、相互運用レイヤ、ビルドシステム刷新まで、パターンが公開されている。
- ユーザに大きな変化なし。 よく実行されたマイグレーションの定義 — ユーザが気づかずに使い続ける。
9章 · Nushell — 構造化データが流れるシェル
Nushell(2019–、Jonathan Turner・Yehuda Katz他)は、シェルのパラダイムを変えようという試み。
既存シェルの前提: 「パイプを流れるのはテキストだ」。bashでもzshでも、コマンド間を流れるのは改行で区切られた文字列。ls | grep foo | awk '{print $1}'のように。
Nushellの前提: 「パイプを流れるのは構造化されたテーブルだ」。lsの出力は行と列を持つテーブルで、次のコマンドはそれを列名で参照できる。
比較:
# bash: テキストパース
ls -la | awk '{print $5, $9}' | sort -n
# nushell: 構造化データ
ls | select name size | sort-by size
# JSON・CSV・TOML・YAML・SQLiteすべて同じ書き方
open data.csv | where age > 30 | select name email
open package.json | get dependencies | columns
# HTTPも同じモデル
http get https://api.github.com/repos/nushell/nushell | get stargazers_count
# SQLライクな問い合わせも可能
ls | where modified > (date now) - 7day | sort-by modified
Nushellの魅力:
- 構造化データの一貫処理 — JSON・CSV・SQLを同一文法で扱う。
- 型と補完 — 列名をシェルが知っている。
- クロスプラットフォーム — Windowsでも一級市民。
- 拡張性 — プラグインをRustで書く。
限界:
- POSIX非互換 — 既存シェルスクリプトはそのまま動かない。
bash -c '...'で回避。 - 0.xバージョン — 文法がいまだ時々壊れる(2026年は安定化フェーズに入ったが、メジャー変更は残っている)。
- エコシステムが小さい — Fishやzshほどのプラグイン層はない。
Nushellが最も活きる場面: データ処理・ops自動化・SREの日常業務。 「Pythonスクリプトには大げさで、jq/awkパイプラインでは複雑すぎるとき」。その空白に入る。
10章 · Elvish / Murex / xonsh / Oils sh — その他の新興シェル
Nushell以外にも、シェルを再考するプロジェクトはいくつかある。
Elvish
- Goで書かれている。 並行性モデルが良い。
- 構造化データ — list・mapが一級市民。
useによるモジュール — 関数ライブラリをimport。
Murex
- POSIX互換 + 型システム — bashスクリプトとの互換性を保ちながらJSON・YAML一級市民。
- イベント駆動 —
eventキーワードでシェルイベントにフック。
xonsh
- Python + シェルのハイブリッド — Python式とシェルコマンドを同一行で混ぜる。
$(...)内のシェルコマンド結果がPythonオブジェクト — データ分析向き。
Oils sh(旧Oil)
- Andy Chuのライフワーク — POSIX互換 + YSH(新文法)の2モード。
- bash互換 + データ構造 + より良いエラーメッセージ — bashユーザが「そのまま移れる、より良いシェル」を目指す。
この4シェルはどれも5,000〜20,000スター級。Nushellが圧倒的1位だが、それぞれ異なる哲学を見せている。 ElvishはGoユーザ、MurexはPOSIX互換を捨てられない人、xonshはデータサイエンティスト、Oilsは「より良いbash」を求める人向け。
11章 · tmux vs Zellij — マルチプレクサ比較
セッション・ウィンドウ・ペインを管理するマルチプレクサ市場は、長らくtmux(2007–)の独占だった。GNU screen(1987–)は生きてはいるが事実上の保守モード、dvtmはミニマリスト向け。
2026年の挑戦者はZellij(2020–、Rust)。
tmux — 標準
- Cで書かれている — 軽くて速い。
- すべてのLinux/macOSにほぼ標準で入っている — どこでも動く。
- prefixキーモデル —
Ctrl-Bのようなprefixを押してから次のキー。 - 豊富な設定 —
.tmux.confでほぼすべてを変えられる。 - TPM(Tmux Plugin Manager) — プラグイン生態系。
設定例:
# ~/.tmux.conf
set -g prefix C-a
unbind C-b
bind C-a send-prefix
set -g mouse on
set -g history-limit 10000
set -g base-index 1
set -g renumber-windows on
# 分割
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# ペイン移動
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# ステータス
set -g status-style 'bg=#1d2021 fg=#d4be98'
Zellij — モダンな挑戦者
- Rustで書かれている。
- 発見しやすいUI — 画面下に常にキーバインドのヒントが出る。初見でも迷わない。
- YAML/KDL設定 —
~/.config/zellij/config.kdl。 - WASMプラグイン — Rust・Go他からWASMにコンパイル。
- レイアウト — よく使うペイン配置をファイルに保存。
- フローティングパネル・タブ — tmuxにはないUX。
比較表:
| 項目 | tmux | Zellij |
|---|---|---|
| 成熟度 | 非常に高い | 中 |
| 学習曲線 | 急 | 緩やか |
| デフォルトUX | prefixキー | 発見しやすいヒント |
| 設定形式 | tmux DSL | KDL |
| プラグイン | TPM | WASM |
| メモリ | 非常に軽い | 軽い |
| リモートSSH | 一級市民 | 可能 |
| どこにでも入っている | はい | いいえ |
tmuxを選ぶ: リモートSSHで生活し、全サーバに入っている必要があり、キーバインドが頭に染み付いているシニア。
Zellijを選ぶ: ローカル作業がメインで、新たに始める人、「キーを覚えたくない」人。
12章 · Starship — 事実上すべてのシェルの標準プロンプト
プロンプトレイヤ。この市場はStarship(2019–、Matt Knox)が事実上統一した。
Starshipの強み:
- シェル非依存 — bash・zsh・fish・nushell・elvish・xonshすべて対応。
- Rust — 高速。Powerlevel10kのinstant prompt技法に頼らずとも十分。
- TOML一枚 —
~/.config/starship.toml。 - 120以上のモジュール — git・node・python・rust・docker・kubernetes・terraform・aws・gcp・azure……
- カスタムモジュール が簡単。
インストール:
# インストール
curl -sS https://starship.rs/install.sh | sh
# シェルに登録(各シェルのrcに1行)
# bash: eval "$(starship init bash)"
# zsh: eval "$(starship init zsh)"
# fish: starship init fish | source
設定例:
# ~/.config/starship.toml
add_newline = true
format = """
$username\
$hostname\
$directory\
$git_branch\
$git_status\
$nodejs\
$python\
$rust\
$kubernetes\
$character"""
[character]
success_symbol = "[➜](bold green)"
error_symbol = "[➜](bold red)"
[directory]
truncation_length = 3
truncate_to_repo = true
[git_branch]
symbol = " "
format = "[$symbol$branch]($style) "
[kubernetes]
disabled = false
format = '[⛵ $context \($namespace\)](dimmed green) '
その他の選択肢:
- oh-my-zsh — zshプラグインフレームワーク。プロンプト + 数百のプラグイン。Starshipより重い。zsh限定。
- oh-my-posh — PowerShell・zsh・bash対応。Starshipに最も近い競合。Windowsで人気。
- Powerlevel10k(p10k) — zsh専用。もっとも美しく、もっとも速い(instant prompt)zshプロンプト。ただし2022年以降は事実上の保守モード。Starshipへの移行組が多い。
一行で覚えるなら: 2026年に新規で始めるならStarshipが答え。zsh + oh-my-zsh + p10k は今も有効だが、新たに作る理由はない。
13章 · Rust CLIシリーズ — bat / eza / zoxide / fd / ripgrep / fzf / atuin
Unix標準ユーティリティをRustで書き直した一群。いずれもGitHubスター1万超。
bat — より良いcat
bat README.md
# シンタックスハイライト + git diff表示 + 自動pager
alias cat=batが定石。
eza(旧exa) — より良いls
eza -la --git --icons
eza -T --level=2 # ツリービュー
オリジナルのexaが保守停止したため、ezaがforkして引き継いだ。類似品にlsd。
zoxide — より良いcd
# 最初は普通にcd
cd ~/work/yj-next-blog2
# 以降はどこからでも
z next-blog2 # フル名
z blog2 # 部分一致
zi # fzfインタラクティブモード
よく行くディレクトリをスコアで学習し、名前の一部だけでジャンプできる。一度馴染むとcd ../../../fooに戻れない。
fd — より良いfind
fd README # 名前にREADMEを含むファイル
fd -e mdx # 拡張子mdx
fd -t f --changed-within 1d # 1日以内に変更されたファイル
findの難解な構文(-name '*foo*' -type f)を、人間が書ける形に。
ripgrep(rg) — より良いgrep
rg "fn main" # カレントディレクトリ全体を再帰検索
rg -t rust "TODO" # Rustファイルのみ
rg -i -A 3 "error" # 大文字小文字無視 + マッチ後3行
GitHubのコード検索エンジンの土台。.gitignoreを自動で尊重し、マルチスレッド+SIMDでgrepより一桁速い。
fzf — ファジーファインダ
# ファイル選択
vim "$(fzf)"
# Ctrl-Rでシェル履歴
# Ctrl-Tでカレントディレクトリのファイル
# Alt-Cでcd
# 任意のパイプに繋ぐ
ls | fzf | xargs cat
インストール後にシェル統合を有効化すると、Ctrl-R(履歴)、Ctrl-T(ファイル)、Alt-C(cd)が即座に書き換わる。1週間で離れられなくなる。
atuin — より良いシェル履歴
# インストール後
atuin init zsh | source
atuin import auto
# Ctrl-RがatuinのUIに切り替わる
# 終了コード・実行時間・ディレクトリ・セッション・ホストで検索
# オプション: 同期(セルフホスト可)
従来の.zsh_historyよりはるかに強力な検索。複数マシンで履歴を共有したいときはAtuinのクラウド(またはセルフホスト)に同期する。
まとめてインストール(Homebrew):
brew install bat eza zoxide fd ripgrep fzf atuin starship
zshに一括登録:
# ~/.zshrcの末尾に
eval "$(starship init zsh)"
eval "$(zoxide init zsh --cmd cd)"
eval "$(atuin init zsh)"
source <(fzf --zsh)
alias ls='eza --icons --git'
alias cat='bat --plain'
alias find='fd'
alias grep='rg'
一行で覚えるなら: この7本を全部入れるとシェルが別物になる。 最初の1週間は違和感、その後はGNU coreutilsの一部コマンドを忘れる。
14章 · 韓国・日本 — トスのdotfiles、メルカリのシェル
韓国 — トス・ネイバー・カカオの風景
トス(Viva Republica)のようなモダンスタートアップのシニア開発者のdotfilesリポジトリを覗くと、パターンが見える。
典型的なトス・シニアのmacOSセットアップ:
- エミュレータ: Ghostty(2025年以降増加)またはiTerm2
- シェル: zsh + oh-my-zsh、またはzsh + zinit(軽量)
- プロンプト: Starship(Powerlevel10kからの移行組が多い)
- マルチプレクサ: tmux
- ユーティリティ: ripgrep + fzf + zoxide + bat + eza + atuin
ネイバーのバックエンドチームのサーバ作業は別風景: Linux + bash + tmux + ripgrep + fzf。Starshipは時々。**「サーバでは、どのマシンにもある道具しか使わない」**が事実上のルール。
カカオはサイロごとの差が大きい。AIチームはzsh + Starship + Nushellを試し、保守的なバックエンドはbash + tmuxのまま。
韓国OSS: GitHubのkarpathyのスクリプトやgleitz/howdoiのようなグローバルなツールが韓国開発者のdotfilesに頻出。それ以外はグローバル動向とほぼ同じ。
日本 — メルカリ・LINE・サイバーエージェント
メルカリのSREチームが公開しているdotfilesは、ちょっとした模範解答になっている。
メルカリ流のmacOSセットアップ:
- エミュレータ: iTerm2 → Weztermへ移行する流れ。Ghosttyは2025年後半から。
- シェル: zsh + zinit + chezmoi(dotfiles管理)
- マルチプレクサ: tmux(リモートEC2に常時attach)
- プロンプト: Starship
- ユーティリティ: ripgrep + fd + fzf + bat + eza + atuin + direnv
- 追加: kubectx + kubens(k8sコンテキスト切替)、pet(スニペット管理、日本人作)
LINEヤフーは大規模インフラ特有の保守性: Linux + bash + tmux。SREの一部でNushellを実験中。
サイバーエージェントのAI Labはもっとも先鋭的: WarpでAIを積極活用、Nushellでデータ作業、Zellijも試行。
押さえておきたい日本OSS:
- pet — knqyf263作のスニペット/スクラッチマネージャ。fzfと組み合わせてよく使うコマンドを検索する。
- peco — fzfに似たインタラクティブフィルタ。日本人作で、古めの日本のdotfilesによく登場する。
- ghq — motemen作。GitHubリポジトリを構造化ディレクトリツリーで管理。
一行で覚えるなら: 韓国・日本のシニアdotfilesはグローバル動向の早期採用層。ただし日本は自国OSS(pet・peco・ghq)をより積極的に混ぜる。
15章 · 誰が何を選ぶべきか — シナリオ別マトリクス
最後の章。「どこで何を使うか」を決める助けになるマトリクス。
macOS — 新規ユーザ
| 項目 | 推奨 | 代替 |
|---|---|---|
| エミュレータ | Ghostty | Wezterm |
| シェル | zsh | fish 4 |
| マルチプレクサ | tmux | Zellij |
| プロンプト | Starship | p10k |
| ユーティリティ | bat + eza + zoxide + fd + rg + fzf + atuin | — |
macOS — AI/デザイン重視
| 項目 | 推奨 | 代替 |
|---|---|---|
| エミュレータ | Warp | Ghostty |
| シェル | (Warp内蔵) | — |
| プロンプト | (Warp内蔵) | Starship |
Linuxデスクトップ
| 項目 | 推奨 | 代替 |
|---|---|---|
| エミュレータ | Ghostty | Wezterm・Alacritty・Kitty |
| シェル | zsh または fish 4 | bash |
| マルチプレクサ | tmux | Zellij |
| プロンプト | Starship | — |
LinuxサーバSSH
| 項目 | 推奨 | 備考 |
|---|---|---|
| シェル | bash | どこにでも入っている |
| マルチプレクサ | tmux | ほぼどこにでも入っている |
| ユーティリティ | apt-getでripgrep・fd・batだけ | 入れすぎは運用負担 |
Windows
| 項目 | 推奨 | 代替 |
|---|---|---|
| エミュレータ | Windows Terminal | Wezterm・Tabby |
| シェル | PowerShell 7 | WSL + bash/zsh |
| プロンプト | oh-my-posh | Starship |
速度優先
- エミュレータ: AlacrittyまたはGhostty
- シェル: zsh(簡素な設定)またはfish 4
- プロンプト: Starship(あるいは素のPS1)
- 避ける: Electronベースのターミナル(Hyper・Tabby) — 入力遅延。
デザイン優先
- エミュレータ: Ghostty(ネイティブGUI)、Warp(もっとも洗練されたUI)
- フォント: JetBrains Mono / Fira Code / IBM Plex Mono / Berkeley Mono(有料)
- テーマ: Gruvbox / Catppuccin / Tokyo Night / Rose Pine
エピローグ — ターミナルはもう一度、面白くなった
2014年に「ターミナル何使ってる?」と訊けば答えは2つだった — iTerm2かGNOME Terminal。シェルはbashかzsh。マルチプレクサはtmux。プロンプトはoh-my-zshのテーマのどれか。
2026年の同じ質問には、各レイヤごとに5つの答えが返ってくる。Ghostty・Wezterm・Alacritty・Kitty・Warp。zsh・fish 4・Nushell・bash・Elvish。tmux・Zellij。Starship・p10k・oh-my-posh。
その多様性を生んだのは3つの流れだ:
- Rust書き直し。 システムソフトウェアをRustで書き直す波が、シェル・ユーティリティ・マルチプレクサのすべてに到達した。
- 個人フルタイム作品の復活。 Mitchell HashimotoのGhosttyのように、「会社を離れて2年フルタイム」が可能な時代になった。
- AI統合。 Warpがもっとも野心的だが、Cursor・Claude Code・Clineといった道具もシェルとターミナルの境界を曖昧にしつつある。
この記事が、あなたの環境を一度見直すきっかけになれば。すべてを変える必要はない。エミュレータ一つ、プロンプト一つ、そしてripgrep・fzf・zoxide・atuinあたりを入れるだけで、日常のシェル作業は別次元になる。
14項目チェックリスト
- エミュレータをGhostty/Wezterm/Warpのいずれかに切り替える。
- シェルrcを整理し、Starshipを入れる。
- Powerlevel10kからStarshipへ移行(p10kが既に気に入っていれば任意)。
- ripgrepを入れ、
grepを忘れる。 - fdを入れ、
findを忘れる。 - fzfを入れてシェル統合を有効化(Ctrl-Rの意味が変わる)。
- zoxideを入れ、
cdにalias。 - batを入れ、
catにalias。 - ezaを入れ、
lsにalias。 - atuinを入れる(必要ならsyncはセルフホスト)。
- tmuxまたはZellijでひとつだけ自分のフローを決める。
- dotfilesリポジトリを作り、chezmoiまたはgit bare repoで管理。
- フォントをNerd Font系に切り替える(Starshipのアイコンが出る)。
- WSLやコンテナにも同じ環境を入れる — どこでも同じ感触に。
アンチパターン10選
- 今からHyperを新規導入する — 遅い。他に選択肢がある。
- oh-my-zshを全プラグイン有効で入れる — シェル起動が遅くなる。
- tmux設定を1000行にする — 半年後に自分が読めない。
- p10kを新規導入する — Starshipへ。
- Nushellをサーバ自動化スクリプトに使う — 0.x由来の破壊的変更リスク。
- Warpだけ入れて他の選択肢を見ない — クラウド依存のコストが年々増し得る。
- zsh・bash・fishを並行してメインで使う — rcファイルが3本になる。ひとつに絞る。
- dotfilesなしで新マシンをセットアップ — 30分の仕事が3時間に。
- atuinを入れてsyncを検討しない — 履歴がクラウドへ送られる。
- Ghosttyがリリースされた直後に会社全体の標準として強制する — 1年待ち、自分のマシンで十分検証してから。
次回予告
- 「dotfiles管理 — chezmoi vs Nix vs git bare repo vs Stow比較」
- 「Nerd Fonts・プログラミングフォント 2026 — JetBrains Mono・Berkeley Mono・MonoLisa・Comic Code比較」
- 「tmux 30分マスター — 新規ユーザのための最小構成」
参考 / References
- Ghostty 公式サイト
- Ghostty GitHub
- Mitchell HashimotoのGhostty 1.0発表
- Wezterm 公式サイト
- Wezterm GitHub
- Alacritty 公式
- Alacritty GitHub
- Kitty 公式
- Kitty GitHub
- Warp 公式
- iTerm2 公式
- Windows Terminal GitHub
- Tabby 公式
- Hyper 公式
- Fish 4 リリースノート
- Fish 公式
- Nushell 公式
- Nushell GitHub
- Elvish 公式
- Murex 公式
- xonsh 公式
- Oils sh 公式
- tmux GitHub
- Zellij 公式
- Zellij GitHub
- Starship 公式
- oh-my-zsh
- oh-my-posh
- Powerlevel10k GitHub
- bat GitHub
- eza 公式
- zoxide GitHub
- fd GitHub
- ripgrep GitHub
- fzf GitHub
- atuin 公式
- chezmoi 公式
- pet (スニペット管理)
- peco (fzf的なフィルタ)
- ghq
- メルカリ エンジニアリングブログ