「もう一度同じ作業をやり直し...」と画面を眺めながら、あの時は本当に何度もエラーに悩まされました。Gitのコミットログをたどるたびに「これ、毎回手で打つの大変だよな」と感じていた私が、ついにCLIツールに出会った瞬間、開発のスピードが劇的に変わったのを感じました。もし同じように「何か上手くいくツールがないかな」と思っている駆け出しエンジニアの皆さんに、今こそ足を運んでほしい、僕が現場で学んだCLIツール10選をご紹介します。
作業をざっくり2倍にした「fzf」――曾々たる検索の悟り
僕はもう、findやgrepの組み合わせでコードを探す日々を過ごしていました。大量のファイルの中から特定の関数名や変数を検索するたびに、ターミナルで何度も同じコマンドを打ち込んでいました。「git grep」も「ack」も「ripgrep」も...全部試してみたんですが、一つだけが足りないのが「インタラクティブに絞り込める検索」でした。
それが「fzf」の登場です。 fuzzy finder(ふuzzy finder)と呼ばれるツールで、矢印キーで候補を選びながら徐々に絞り込んでいく感覚が、まさに開発者の心を鷲掴みします。実際に使ってみると、コマンドの補完も可能で、「git checkout」の後にfzfを組み合わせるだけで、ブランチ名をタイピングせずに選べるようになりました。
具体的には、.bashrcや.zshrcにエイリアスを設定するだけでOKです。僕は以下のように設定しています。
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
https://www.youtube.com/@tech-trend-zunda-metan/featured
最新ツール・トレンド情報をずんだもん×めたんが解説するYouTubeチャンネルを運営しています!
いいね、チャンネル登録してもらえると嬉しいです🙇♂️
---
ハジメル.dev: https://hajimeru-dev.vercel.app/
「ひとりで続けるのは難しい」「何から学べばいいか分からない」という方向けに、
プログラミングのマンツーマンレッスンサービス「ハジメル.dev」も運営しています。
未経験OK・オンライン完結・月額制/違約金なしなので、気軽に無料相談してみてください🙇♂️
---
海外テックニュースを追いたいけど、英語や情報量の多さで大変…という方向けに、
Hacker News の話題を日本語でサクッと追える「HackerNews 日本語まとめ & AI要約」
を個人開発しました!
技術トレンド収集に使ってもらえると嬉しいです🔥🙇♂️
→ HackerNews 日本語まとめ & AI要約: https://hn-matome-2ht.pages.dev/
---
https://unityroom.com/games/nyampire_survivors
「ニャンパイアサバイバー」というヴァンパイアサバイバーリスペクトのゲームを作成しました!
もしよろしければ遊んで頂けると嬉しいです😭
---
習い事教室の先生向けに、SNS 投稿・生徒募集・保護者通知の文章を AI で生成する Web サービス「おしらせAI」を個人開発しました。Next.js + Supabase + LLM で構成しており、無料で月 10 回まで試用できます。よければ触ってみてください。
→ おしらせAI: https://oshirase-ai.vercel.app/
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
# fzfの設定
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
# git branch + fzfの組み合わせ
alias gco='git checkout $(git branch | fzf)'
この1行の設定で、ブランチ切り替えの作業がほぼ瞬時に完了するようになりました。最初は「これ、本当に使えるの?」と疑問を抱きましたが、数日使い続けたら本当に便利さが実感できました。開発の中で「何でもかんでもクリックで選べる」感覚が、精神的な負荷を激しく減らしてくれました。
ついに解消!「peco」でライフハックした秘密の検索術
fzfと並んで、僕のツール箱には絶対に抜かせないのが「peco」です。pecoはRubyで作られた別のfuzzy finderで、設定の柔軟性が高いのが特径です。特に僕が惹かれたのは、「プルリクエストやイシュー番号から関連するコードへシームレスにジャンプできる」ことです。
例えば、GitHubのイシュー番号を検索してその内容のコードへ行きたい時、以下のように活用しています。
# .zshrcに設定
alias issue='gh issue list | peco --prompt="ISSUES> " | cut -d" " -f1'
# 使用例
cd $(git rev-parse --show-toplevel)
open "$(issue)"
この設定を使うと、ターミナル上で「gh issue list」の結果がpecoで表示され、矢印キーで選択するだけでイシューのURLが取得できます。その後、ブラウザで自動的に開かれるわけではなく、openコマンドでURLを開くようにしていますが、これだけでも日々の作業が格段に楽になります。
もっと早く使ってよかった!「ripgrep」の地獄的デバッグ
僕の環境では、最初は「ag」や「grep」を使っていました。しかし、大規模なプロジェクトになると検索が遅く、たまに「なぜか0件になる」という謎の挙動に遭遇していました。特に、正規表現を使った検索で「.(ドット)」や「*(アスタリスク)」が原因で期待と違う結果が出ることが多く、デバッグの時間が無駄に感じられました。
それが「ripgrep(rg)」の登場です。超高速検索エンジンとして知られますが、僕が最も感じたのは「デフォルトで隠しファイルや.gitディレクトリを除外してくれる」ことです。これまで「find . -name "*.js"」と打つ必要があった作業が、たった「rg ○○」で完結するようになりました。
実践的な例を挙げますと、以下のように活用しています。
# 全プロジェクトでの検索
rg "useState"
# 特定のファイルだけ検索
rg "function hoge" -t js
# 行番号付きで出力(IDEのジャンプに便利)
rg -n "const [a-z]" src/
これだけで、検索にかかる時間が数秒から数ミリ秒へと短縮されました。特に、ブランチ切り替え前後に「検索が遅くてイライラする」という経験は、もう何度もありましたが、ripgrepを使い始めてからはその問題も完全に解消しました。
エンジニアのための「tmux」――ターミナルをフル活用する生活
「もう一つターミナルを開くの忘れてた...」と、何度も同じミスをしていました。複数のタスクを同時に進めようとすると、ウィンドウが増えてしまって「どこに何をしていたか思い出せない」という状態に陥りがちでした。
そんなときに見つけたのが「tmux」です。ターミナルマルチプレクサー(ターミナルを分割して管理するツール)で、一つのウィンドウの中で複数のペインを操作できます。僕は以下のシナリオで活用しています。
- 左側でコード編集(vim or code)
- 右上でテスト実行(npm test)
- 右下でGit操作(git status, git diff)
この構成を「セッション」として保存し、次の日に入ったら「tmux attach」だけで同じ画面が復元されます。最初は「これ、本当に必要?」と考えましたが、実際に使い始めると「ウィンドウの切り替えが瞬時に済む」「作業の継続がしやすい」という快適さが実感できました。
設定はシンプルで、.tmux.confに以下のようなエイリアスを書くだけでOKです。
# ショートカットキーの設定
unbind C-b
set -g prefix C-t
bind C-t send-prefix
# マウス操作有効化
set -g mouse on
毎日5分でOK!「task」でワークフローを自動化
僕が最も苦手だったのが「環境構築」でした。「npm install」「webpackの設定」「サーバーの立ち上げ」...それぞれに複雑なコマンドがあり、エラーが出るたびに「これ、どうやって直すんだろう」と不安になりがちでした。
そんな時に見つけたのが「task」です。Goで書かれているツールで、Makefileの代わりとして使います。タスクをYAML形式で定義し、コマンド一つで実行できます。
例えば、以下のように設定すると、プロジェクトのセットアップがとても楽になります。
# Taskfile.yml
version: '3'
tasks:
setup:
desc: 依存関係をインストール
cmds:
- npm install
- npm run build
dev:
desc: 開発サーバーを起動
cmds:
- npm run dev
test:
desc: テストを実行
cmds:
- npm test
これで「task dev」と打つだけで開発サーバーが立ち上がります。最初は「これ、シェルスクリプトと何が違うの?」と疑問を持ちましたが、エラーハンドリングや依存関係の管理がしやすく、結果的に「環境構築の不安」が激減しました。
便利すぎた「httpie」――API開発の救世主
「curlでPOSTするの、毎回JSONの構文エラーになる...」と、APIのテストで何度もつまずいていました。特に、認証トークンやヘッダーを含むリクエストは、手打ちすると必ずミスがありました。
それが「httpie」の登場です。人間の読みやすい出力と、シンプルな構文でHTTPリクエストを書けるのが最大の魅力です。僕は以下のように活用しています。
# GETリクエスト
http GET https://api.example.com/users
# POSTリクエスト(JSON自動設定)
http POST https://api.example.com/users name=太郎 age:=30
# 認証ヘッダー付き
http GET https://api.example.com/protected Authorization:"Bearer $TOKEN"
JSONの構文エラーはもうなくなり、出力も色つきで見やすくなりました。特に「レスポンスの中身が複雑になると、pretty-printしてくれる」ことが便利で、API開発者のストレスを劇的に減らしてくれました。
便利すぎた「direnv」――環境変数の管理が楽になった
「ディレクトリごとに.envファイルを読み込ませたい」という願いが、ついに「direnv」で実現しました。これまで「source .env」を毎回手で打っていましたが、ディレreshouldersが切り替わるたびに忘れがちで、結果的に「環境が合ってない」というエラーに遭遇していました。
direnvを使い始めてからは、プロジェクトのルートに .envrc を作成し、自動的に環境変数を読み込んでくれます。
# .envrcの例
layout node
export NODE_ENV=development
export DEBUG=true
この設定を行うだけで、ディレクトリに移動した瞬間に環境が自動設定されます。最初は「自動でやってくれるの?」と不審な気持ちでしたが、実際に使い続けるうちに「忘れることがなくなった」という実感に至りました。
生産性を劇的に上げた「gh」CLI――GitHubをターミナルから操作
「ブラウザでリポジトリを確認して、コミットを作って、プルリクエストを作る...」というフローは、やはり面倒でした。僕は最初、GitHub CLI(gh)を「そんなの必要ないだろう」と思っていましたが、実際に使ってみると「本当に便利だった」と感じました。
特に「pr作成」や「issue検索」がターミナルで完結するのが魅力です。
# プルリクエスト作成
gh pr create --title "機能追加" --body "〇〇の機能を追加しました"
# 自分のPR一覧表示
gh pr list --author me
# 特定のイシューへコメント
gh issue comment 123 --body "検証完了しました"
これらのコマンドを使い始めると、ブラウザに行く時間が激減します。特に「プルリクエストのレビュー依頼」や「マージ作業」が格段に楽になり、結果的に「コードレビューのサイクルが速くなった」と実感しました。
便利すぎた「delta」――git diffを見やすく変える魔法
「git diffの出力が monochrome すぎて何が変更されたかわからない...」という経験、ありませんか?僕は最初、色付けのあるdiffツールに「あんまり重iczai」と思っていましたが、「delta」のおかげでその感覚は完全に変わりました。
deltaは、gitのdiff出力を行単位で色分けし、差分のハイライトを自動で行ってくれます。設定は簡単で、.gitconfigに追加するだけです。
[core]
pager = delta
[delta]
syntax-theme = Monokai Extended
[git]
difftool = delta
これで「git diff」を実行すると、変更箇所が緑や赤でハイライトされ、どこを変更したか一目でわかります。特に「大量の変更があるファイル」では、差分を追いきれずに「何が変わったかわからない」という問題が解消されました。
作業を劇的に楽にした「http-server」――簡単静的サーバー
「ローカルでHTMLファイルを確認したいけど、npmのプラグインがうまくいかない...」と、いつもは「python -m http.server」を使っていました。しかし、npm環境だけで完結させたいという欲求があり、「http-server」というパッケージに出会いました。
インストールは npm i -g http-server、起動は単純で、「http-server」だけです。特に「ポート番号指定」や「ホスト指定」が簡単で、開発中の確認に最適です。
# デフォルトポート(8080)で起動
http-server
# ポート指定
http-server -p 3000
# 特定のディレクトリを指定
http-server ./dist --cors
この手軽さが、「ちょっとした確認」の頻度を増やし、結果的に「開発のサイクルが早くなった」と実感しました。
まとめ
今回紹介した10のCLIツールは、すべて僕が「作業が遅い」「ミスが多い」「不安が多い」と感じた瞬間に、ひとつずつ導入したものです。最初は「これ、本当に必要なの?」と戸惑うこともありましたが、実際に使い込むうちに「開発の質が向上した」「自信がついた」「ストレスが減った」という実感が得られました。
駆け出しエンジニアの皆さんも、ぜひ一つずつ試してみてください。最初は「これ、便利だな」と感じるだけでも、日々の作業が少しずつ楽になります。そして、その積み重ねが「自分らしい開発者」になる第一歩になるはずです。
CLIツールは「便利さ」だけでなく、「自分のペースで成長できる」という感覚をくれます。もっと良い方法があるはず、という常識に縛られず、「自分が快適になる方法」を見つけていくことが、やがて大きなプロフェッショナルへの道です。