Skip to content
Published on

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

Authors

プロローグ — ターミナルがふたたび面白くなった

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/configfont-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_grepclipboardなど。
  • タブ・スプリット内蔵。 マルチプレクサなしでも実用に足る。
  • 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が示すもの:

  1. シェル自身をRustで書き直す流れの号砲。 Nushellは最初からRustだったが、「既存シェルをRustへ移した」最初の大型ケースがFish 4。
  2. C++→Rust移行のケーススタディ。 段階的なports、相互運用レイヤ、ビルドシステム刷新まで、パターンが公開されている。
  3. ユーザに大きな変化なし。 よく実行されたマイグレーションの定義 — ユーザが気づかずに使い続ける。

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。

比較表:

項目tmuxZellij
成熟度非常に高い
学習曲線緩やか
デフォルトUXprefixキー発見しやすいヒント
設定形式tmux DSLKDL
プラグインTPMWASM
メモリ非常に軽い軽い
リモート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 — 新規ユーザ

項目推奨代替
エミュレータGhosttyWezterm
シェルzshfish 4
マルチプレクサtmuxZellij
プロンプトStarshipp10k
ユーティリティbat + eza + zoxide + fd + rg + fzf + atuin

macOS — AI/デザイン重視

項目推奨代替
エミュレータWarpGhostty
シェル(Warp内蔵)
プロンプト(Warp内蔵)Starship

Linuxデスクトップ

項目推奨代替
エミュレータGhosttyWezterm・Alacritty・Kitty
シェルzsh または fish 4bash
マルチプレクサtmuxZellij
プロンプトStarship

LinuxサーバSSH

項目推奨備考
シェルbashどこにでも入っている
マルチプレクサtmuxほぼどこにでも入っている
ユーティリティapt-getでripgrep・fd・batだけ入れすぎは運用負担

Windows

項目推奨代替
エミュレータWindows TerminalWezterm・Tabby
シェルPowerShell 7WSL + bash/zsh
プロンプトoh-my-poshStarship

速度優先

  • エミュレータ: 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つの流れだ:

  1. Rust書き直し。 システムソフトウェアをRustで書き直す波が、シェル・ユーティリティ・マルチプレクサのすべてに到達した。
  2. 個人フルタイム作品の復活。 Mitchell HashimotoのGhosttyのように、「会社を離れて2年フルタイム」が可能な時代になった。
  3. AI統合。 Warpがもっとも野心的だが、Cursor・Claude Code・Clineといった道具もシェルとターミナルの境界を曖昧にしつつある。

この記事が、あなたの環境を一度見直すきっかけになれば。すべてを変える必要はない。エミュレータ一つ、プロンプト一つ、そしてripgrep・fzf・zoxide・atuinあたりを入れるだけで、日常のシェル作業は別次元になる。

14項目チェックリスト

  1. エミュレータをGhostty/Wezterm/Warpのいずれかに切り替える。
  2. シェルrcを整理し、Starshipを入れる。
  3. Powerlevel10kからStarshipへ移行(p10kが既に気に入っていれば任意)。
  4. ripgrepを入れ、grepを忘れる。
  5. fdを入れ、findを忘れる。
  6. fzfを入れてシェル統合を有効化(Ctrl-Rの意味が変わる)。
  7. zoxideを入れ、cdにalias。
  8. batを入れ、catにalias。
  9. ezaを入れ、lsにalias。
  10. atuinを入れる(必要ならsyncはセルフホスト)。
  11. tmuxまたはZellijでひとつだけ自分のフローを決める。
  12. dotfilesリポジトリを作り、chezmoiまたはgit bare repoで管理。
  13. フォントをNerd Font系に切り替える(Starshipのアイコンが出る)。
  14. WSLやコンテナにも同じ環境を入れる — どこでも同じ感触に。

アンチパターン10選

  1. 今からHyperを新規導入する — 遅い。他に選択肢がある。
  2. oh-my-zshを全プラグイン有効で入れる — シェル起動が遅くなる。
  3. tmux設定を1000行にする — 半年後に自分が読めない。
  4. p10kを新規導入する — Starshipへ。
  5. Nushellをサーバ自動化スクリプトに使う — 0.x由来の破壊的変更リスク。
  6. Warpだけ入れて他の選択肢を見ない — クラウド依存のコストが年々増し得る。
  7. zsh・bash・fishを並行してメインで使う — rcファイルが3本になる。ひとつに絞る。
  8. dotfilesなしで新マシンをセットアップ — 30分の仕事が3時間に。
  9. atuinを入れてsyncを検討しない — 履歴がクラウドへ送られる。
  10. 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