ブログ記事

モダンなCLIツール5選 - 2024年版ターミナル環境改善ガイド

ripgrep、fd、bat、eza、fzfなど、開発効率を劇的に向上させる最新CLIツールを徹底解説。インストール方法から実践的な使い方まで、今すぐ使えるTips満載!

ツール
CLI ターミナル 開発ツール 生産性
モダンなCLIツール5選 - 2024年版ターミナル環境改善ガイドのヒーロー画像

開発者のみなさん、まだ grepfind で消耗していませんか?

2024 年、私たちにはもっと速く、もっと使いやすい CLI ツールがあります。今回は、私が実際に使って「これは手放せない!」と感じたモダンな CLI ツール 5 選を紹介します。

この記事で得られること

  • 従来のツールより高速・高機能な代替ツール
  • 実践的な使用例とカスタマイズ方法
  • 生産性を向上させる設定ファイル

1. ripgrep (rg) - 爆速grep

grep の 100 倍速い(体感)検索ツール。.gitignore を自動で認識してくれるのも最高です。

インストール

# Mac
brew install ripgrep

# Ubuntu/Debian
sudo apt install ripgrep

# Arch Linux
sudo pacman -S ripgrep

基本的な使い方

# 基本検索
rg "TODO"

# ファイルタイプ指定
rg "console.log" --type js

# 大文字小文字を無視
rg -i "error"

# 正規表現を使う
rg "func\s+\w+\(" --type go

# 検索結果のコンテキストを表示
rg "bug" -C 3

実践的な使い方

# 特定のディレクトリを除外
rg "password" --glob '!{node_modules,dist}/*'

# ファイル名のみ表示
rg -l "deprecated"

# 統計情報を表示
rg --stats "TODO" | tail -n 20

# 置換プレビュー(実際には置換しない)
rg "old_function" --replace "new_function"

# JSONファイルから特定のキーを探す
rg '"api_key":\s*"[^"]+"' --type json
# 遅い、.gitignoreを無視
grep -r "TODO" . | grep -v node_modules

# 複雑なコマンド
find . -name "*.js" -exec grep -l "console.log" {} \;
# 高速、.gitignore自動認識
rg "TODO"

# シンプル
rg -t js "console.log" -l
従来のgrep
# 遅い、.gitignoreを無視
grep -r "TODO" . | grep -v node_modules

# 複雑なコマンド
find . -name "*.js" -exec grep -l "console.log" {} \;
ripgrep
# 高速、.gitignore自動認識
rg "TODO"

# シンプル
rg -t js "console.log" -l

2. fd - findの代替

ファイル検索が直感的で高速に。正規表現もサポート!

インストール

# Mac
brew install fd

# Ubuntu/Debian
sudo apt install fd-find
# ※Ubuntuでは'fdfind'コマンドになるので注意

# Arch Linux
sudo pacman -S fd

基本的な使い方

# ファイル名で検索
fd "test"

# 拡張子で絞り込み
fd -e py

# 正規表現
fd "^test.*\.js$"

# 大文字小文字を無視
fd -i readme

# ディレクトリのみ
fd -t d src

実践的な使い方

# 最近変更されたファイル
fd --changed-within 1d

# 特定サイズ以上のファイル
fd --size +1M

# 隠しファイルも含める
fd -H .env

# 実行可能ファイルのみ
fd -t x

# 検索結果に対してコマンド実行
fd -e jpg -x convert {} {.}.png

# Git管理下のファイルのみ
fd --type f --exec git ls-files {} \;

3. bat - catの進化系

シンタックスハイライト付きでファイルを表示。行番号や git 差分も!

インストール

# Mac
brew install bat

# Ubuntu/Debian
sudo apt install bat
# ※Ubuntuでは'batcat'コマンドになる場合があるので注意

# Arch Linux
sudo pacman -S bat

基本的な使い方

# ファイル表示
bat README.md

# 行番号なし
bat -p file.txt

# 言語を指定
bat --language=json data.txt

# 複数ファイルを連結
bat file1.txt file2.txt

# 特定の行範囲のみ
bat --line-range 10:20 script.py

実践的な使い方

# Git差分を表示
bat --diff file.txt

# テーマを変更
bat --theme="Dracula" code.js

# 利用可能なテーマ一覧
bat --list-themes

# ページャーなしで表示
bat --paging=never large_file.log

# プレーンテキストとして表示(色なし)
bat --plain file.txt

# 環境変数で設定
export BAT_THEME="TwoDark"

4. eza (exa) - モダンなls

ls の出力、もっとカラフルで見やすくできます!

インストール

# Mac
brew install eza

# Ubuntu/Debian (cargo経由)
cargo install eza

# Arch Linux
sudo pacman -S eza

基本的な使い方

# 基本表示(アイコン付き)
eza --icons

# 詳細表示
eza -la

# ツリー表示
eza --tree

# Gitステータス付き
eza --git -la

# ファイルサイズを見やすく
eza -lh --bytes

実践的な使い方

# 更新日時でソート
eza -la --sort=modified

# ディレクトリを先に表示
eza --group-directories-first

# 特定の深さまでツリー表示
eza --tree --level=2

# 拡張属性も表示(Mac)
eza -la@

# カスタムエイリアス
alias ll='eza -la --icons --git'
alias lt='eza --tree --level=2 --icons'

5. fzf - 最強のファジーファインダー

これは本当に革命的。一度使うと手放せません!

インストール

# Mac
brew install fzf

# インストール後、キーバインド設定
$(brew --prefix)/opt/fzf/install

# Ubuntu/Debian
sudo apt install fzf

基本的な使い方

# ファイルを選んで開く
vim $(fzf)

# プレビュー付き
fzf --preview 'bat --style=numbers --color=always {}'

# 複数選択
fzf -m

# 履歴から検索(Ctrl+R)
# .bashrc/.zshrcに自動設定される

実践的な使い方

# Gitのブランチ切り替え
git checkout $(git branch -a | fzf | sed 's/^[ *]*//')

# プロセスをkill
kill -9 $(ps aux | fzf | awk '{print $2}')

# Dockerコンテナに入る
docker exec -it $(docker ps | fzf | awk '{print $1}') bash

# npm scriptsを実行
npm run $(cat package.json | jq -r '.scripts | keys[]' | fzf)

# 最近編集したファイルを開く
vim $(fd -t f --changed-within 1w | fzf --preview 'bat {}')

6. その他の便利ツール

tldr - マニュアルの要約版

# インストール
brew install tldr

# 使い方
tldr tar  # tarコマンドの実用例を表示

httpie - curlの代替

# インストール
brew install httpie

# 使い方
http GET api.github.com/users/github
http POST httpbin.org/post name=John email=john@example.com

jq - JSONプロセッサ

# APIレスポンスを整形
curl -s api.example.com/data | jq '.'

# 特定のフィールドを抽出
echo '{"name":"John","age":30}' | jq '.name'

私の設定ファイル

最後に、私の .zshrc/.bashrc の設定を共有します:

# エイリアス設定
alias ls='eza --icons'
alias ll='eza -la --icons --git'
alias lt='eza --tree --level=2 --icons'
alias cat='bat'
alias find='fd'
alias grep='rg'

# fzfの設定
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow'
export FZF_DEFAULT_OPTS='--preview "bat --style=numbers --color=always {}"'

# ripgrepの設定(.rgignore)
echo "node_modules
.git
dist
build
*.min.js" > ~/.rgignore

# 便利な関数
# ファイルを探して編集
fe() {
    local file
    file=$(fzf --query="$1" --select-1 --exit-0)
    [ -n "$file" ] && ${EDITOR:-vim} "$file"
}

# ディレクトリを探して移動
fd() {
    local dir
    dir=$(find ${1:-.} -type d | fzf)
    [ -n "$dir" ] && cd "$dir"
}

まとめ

これらのツールを使い始めてから、ターミナルでの作業効率が劇的に向上しました。特に:

  • ripgrep: コードベース全体の検索が一瞬
  • fd: ファイル探しのストレスから解放
  • fzf: あいまい検索で「だいたい」で見つかる
  • bat: ログファイルも読みやすく
  • eza: 毎日使う ls が楽しくなる

最初は新しいコマンドを覚えるのが面倒かもしれませんが、1 週間も使えば手に馴染みます。そして気づいたら「これなしでは仕事できない」状態に…!

ぜひ 1 つずつ試してみてください。きっと開発体験が変わるはずです!

Happy Hacking! 🚀

この記事は役に立ちましたか?

Daily Hackでは、開発者の皆様に役立つ情報を毎日発信しています。