17
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

開発効率が上がったCLIツール・コマンド10選

17
Posted at

「もう一度同じ作業をやり直し...」と画面を眺めながら、あの時は本当に何度もエラーに悩まされました。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」です。ターミナルマルチプレクサー(ターミナルを分割して管理するツール)で、一つのウィンドウの中で複数のペインを操作できます。僕は以下のシナリオで活用しています。

  1. 左側でコード編集(vim or code)
  2. 右上でテスト実行(npm test)
  3. 右下で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ツールは「便利さ」だけでなく、「自分のペースで成長できる」という感覚をくれます。もっと良い方法があるはず、という常識に縛られず、「自分が快適になる方法」を見つけていくことが、やがて大きなプロフェッショナルへの道です。

17
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?