コマンドラインでの作業効率が上がる！CLIツール20選

# はじめに
開発者として働き始めてよく見るようになった黒い画面... コマンドライン...
使い方はなんとなくわかってきたけどもう少し便利に使いたいと思っている方も多いのではないでしょうか。
この記事では、コマンドラインでの作業効率を上げるCLIツールをたくさん紹介していきます。マスターすれば、作業効率が爆上がりすること間違いなしです。


弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています！興味をお持ちいただける方は、[こちら](https://www.recruit.nuco.co.jp/?qiita_item_id=2b0f17b6859e88b4f7ca)まで。

# そもそもCLIツールとは？
### CLI(CUI)
コマンドラインインターフェース（キャラクターユーザーインターフェース）の略です。
文字列（コマンド）を入力してコンピュータと指令を送る方法です。Macであればターミナル、Windowsであればコマンドプロンプトを開いて操作をします。コマンドを覚える必要があり、知識も必要なため一般にはあまり使われませんが、大量のデータを処理したり、複雑な操作を行ったりできるため、開発を行う際などはよく使われます。

### GUI
グラフィカルユーザーインターフェースの略です。
ウィンドウやアイコンなどをマウスで操作してコンピュータに指令を送る方法です。視覚的にわかりやすく簡単に操作ができるので、一般的にPCを操作する際にはGUIを使う機会が多いと思います。

:::note info
**ユーザーインターフェース**
ユーザーインターフェース（UI）とは、コンピュータを使用する人（ユーザー）とコンピュータを結びつける接点のことです。
接点という言い方だとピンとこないかもしれませんが、簡単に言うとユーザーがコンピュータを操作する方法のことを指します。
:::

# いつもの操作をより便利にしてくれるツール
### the fuck
コマンドを打ち間違えてエラーになった時やインストールしていないコマンドを使おうとした時などに自動修正をしてくれるコマンドです。
github:https://github.com/nvbn/thefuck
開発言語：Python
スター数：76.7k

f⚫︎⚫︎kとタイプするだけで修正してくれてめちゃくちゃ便利です
<script async id="asciicast-a8QgK5fwdjXEykQIm2e0CP48k" src="https://asciinema.org/a/a8QgK5fwdjXEykQIm2e0CP48k.js"></script>

### zoxide
cdの改良版です。よく使うディレクトリを登録しておくことによって、フルパスを覚えることなく使いたいディレクトリにダイレクトで移動できます。
github:https://github.com/ajeetdsouza/zoxide
開発言語：Rust
スター数：10.2k
代替コマンド：cd

<script async id="asciicast-NyNvUwvBClV2HjQBfSlO2p4KD" src="https://asciinema.org/a/NyNvUwvBClV2HjQBfSlO2p4KD.js"></script>

### bat
catコマンドの改良版です。catと同じようにファイルの中身を見たり、ファイルの内容を連結したりすることができます。
catと違い、シンタックスハイライトとgitの連携を備えています。
github:https://github.com/sharkdp/bat
開発言語：Rust
スター数：40.7k
代替コマンド：cat

bat
<script async id="asciicast-Y8s01CwW8jLnsGZ4y8zwkwhXB" src="https://asciinema.org/a/Y8s01CwW8jLnsGZ4y8zwkwhXB.js"></script>

cat
<script async id="asciicast-vgme87tVPt2UWvfnliRs6iVZl" src="https://asciinema.org/a/vgme87tVPt2UWvfnliRs6iVZl.js"></script>

見比べてみるとbatの方が圧倒的にわかりやすいですね

### tldr
manページをよりわかりやすく表示してくれるツールです。使い方が曖昧なコマンドがある場合に重宝します。
github:https://github.com/tldr-pages/tldr
スター数：43.9k
代替コマンド：man

色付けされてるかつ簡潔に書いてあるので、manよりも格段にみやすいことがわかります
<script async id="asciicast-I5wWU9rCPUTtOBhsuCK3lPcG1" src="https://asciinema.org/a/I5wWU9rCPUTtOBhsuCK3lPcG1.js"></script>

### aria2
webサーバ等からファイルをダウンロードする際に使用するツールです。並列ダウンロードで高速なダウンロードを可能にしているので、同じ機能を備えているwgetより数倍速くダウンロードをすることができます。
github:https://github.com/aria2/aria2
開発言語：C
スター数：30k
代替コマンド：wget

### exa
ファイルを一覧表示するためのコマンドで、lsの改良版です。カラフルな見た目でとても見やすく、アイコン表示も可能です。また、ツリーやグリッド、リストなど複数の出力形式に対応しています。
gitfub:https://github.com/ogham/exa
開発言語：Rust
スター数：21.4k
代替コマンド：ls

<script async id="asciicast-Kgocd5csobvBfKO0X0Yxlx8i0" src="https://asciinema.org/a/Kgocd5csobvBfKO0X0Yxlx8i0.js"></script>

### hyperfine
コマンドラインやスクリプトをベンチマークし、比較をすることができます。キャッシュのクリアや他プログラムからの干渉を防ぐことができ、正確な結果を得ることができます。
github:https://github.com/sharkdp/hyperfine
開発言語：Rust
スター数：15.5k

lsとexaを比べてみました
<script async id="asciicast-G3eHlHTm1BCOBwsUv5CEDHojm" src="https://asciinema.org/a/G3eHlHTm1BCOBwsUv5CEDHojm.js"></script>

### duf
ディスクの使用量や空き容量をカラフルな表形式で出力できるコマンドです。結果をソートしたり、JSON出力をしたりすることも可能です。
github:https://github.com/muesli/duf
開発言語：Go
スター数：10.9k
代替コマンド：df

カラフルで見やすいですね
<script async id="asciicast-dWJRvXq8gnZzsQrEf4zzRGBqK" src="https://asciinema.org/a/dWJRvXq8gnZzsQrEf4zzRGBqK.js"></script>

### fzf
コマンドライン上で曖昧検索を行うことができるコマンドです。gitやVimとの連携もでき、非常に便利です。
github:https://github.com/junegunn/fzf
開発言語：Go
スター数：51.6k
代替コマンド：fd

<script async id="asciicast-OH8hRpiN9rgs391SxOC1tXIyq" src="https://asciinema.org/a/OH8hRpiN9rgs391SxOC1tXIyq.js"></script>

### ripgrep
正規表現を用いて、ディレクトリを再帰的に検索できるツールです。grepよりも高速で結果も見やすく使いやすくなっています。
github:https://github.com/BurntSushi/ripgrep
開発言語：Rust
スター数：37.2k
代替コマンド：grep

<script async id="asciicast-qsscYxo2lnjPy0MZniCqEoVe1" src="https://asciinema.org/a/qsscYxo2lnjPy0MZniCqEoVe1.js"></script>

### jq
JSONからの値の抽出、集計、整形などができるツールです。
github:https://github.com/stedolan/jq
開発言語：C
スター数：24.7k

こちらのJSONデータを使ってjqでデータをいじってみます。
![samplejson.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033130/f6ae6abf-2f2d-2114-2a8c-12f23488b02b.png)

簡単に必要な情報を抽出したり、整形したりできます。
<script async id="asciicast-W2iDrpMysCw0asp2Lt7seVi27" src="https://asciinema.org/a/W2iDrpMysCw0asp2Lt7seVi27.js"></script>

### diff-so-fancy
diffの改良版です。ファイルの差分を強調して表示してくれるため、よりわかりやすくなっています。
github:https://github.com/so-fancy/diff-so-fancy
開発言語：C
スター数：16.4k
代替コマンド：diff

<script async id="asciicast-P6hA4iHlSx2aM635MaFU1xq6A" src="https://asciinema.org/a/P6hA4iHlSx2aM635MaFU1xq6A.js"></script>

# モニタリングとパフォーマンス評価ができるツール
### bandwhich
ネットワーク帯域幅の使用状況をリアルタイムで監視できるツールです。プロセス、接続情報、発信ホストごとに見れるため便利です。
github:https://github.com/imsnif/bandwhich
開発言語：Rust
スター数：7.8k

<script async id="asciicast-6zstgnbp3Zw8AiwbpNdUEy5B6" src="https://asciinema.org/a/6zstgnbp3Zw8AiwbpNdUEy5B6.js"></script>

### glances
様々な情報を一目で見ることができるモニタリングツールです。CPU情報、CPU負荷、メモリ情報、ネットワーク、プロセスの総数などたくさんの情報を見ることができます。
github:https://github.com/nicolargo/glances
開発言語：Python
スター数：22.6k
代替コマンド：top

<script async id="asciicast-uTG1NT6oDY3MWtauv2hDDZBCc" src="https://asciinema.org/a/uTG1NT6oDY3MWtauv2hDDZBCc.js"></script>

### gping
複数のホストに対してPingテストを実行し、その結果をリアルタイムにグラフ表示することができます。
github:https://github.com/orf/gping
開発言語：Rust
スター数:7.3k
代替コマンド:ping

<script async id="asciicast-HeeNUsf1t0ZMlmWTL8hPcgUqZ" src="https://asciinema.org/a/HeeNUsf1t0ZMlmWTL8hPcgUqZ.js"></script>

### speedtest-cli
インターネットのスピードテストをターミナルから直接実行できます。
github:https://github.com/sivel/speedtest-cli
開発言語：Python
スター数:12.7k

<script async id="asciicast-6LQEZShLKFasZQtof05Lou5V7" src="https://asciinema.org/a/6LQEZShLKFasZQtof05Lou5V7.js"></script>

# 開発の時に重宝するツール
### httpie
HTTPクライアントツールです。HTTPやAPIサーバーへのリクエストをわかりやすく表示してくれます。curlと異なり、http/httpsに特化していますが、シンタックスされたわかりやすい色付きの出力を提供します。
github:https://github.com/httpie/httpie
開発言語；Python
スター数：27.3k
代替コマンド：curl

<script async id="asciicast-LyBv9eKXON0VmBs5wGPPuf2lY" src="https://asciinema.org/a/LyBv9eKXON0VmBs5wGPPuf2lY.js"></script>

### lazygit
コマンドライン上で操作できるgitクライアントです。すでに存在しているリポジトリに対して、コミットやブランチ操作をコマンドライン上で行うことができます。
github:https://github.com/jesseduffield/lazygit
開発言語：Go
スター数：34.1k

![スクリーンショット 2023-04-29 16.03.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033130/51aac073-83c3-3f67-82de-051f1e8c5872.png)


### lagydocker
コマンドライン上で操作できるDocker管理ツールです。コンテナやイメージの操作、ログの表示、リソース使用状況の確認など多くのことをコマンドライン上で行うことができます。
github:https://github.com/jesseduffield/lazydocker
開発言語：Go
スター数：26.3k

### ngroc
ローカルホストで動いているサーバーを、LANの外からアクセスできるようにできるツールです。
ローカル環境を簡単に一時的に外部に公開できるため、リモートで作業している人と簡単に作業内容を共有できます。
github:https://github.com/inconshreveable/ngrok
開発言語：Go
スター数：22.8k

:::note warn
ngrokを使用する際は[こちら](https://dashboard.ngrok.com/login)からngrokのサインアップが必要になります
:::

# おもしろ機能
### figlet
文字やテキストのASCIIアートを出力することができます。フォントを変えることで様々なASCIIアートを生成できます。
github:https://github.com/cmatsuoka/figlet
開発言語：C
スター数：1.1k

フォントも変えることができます。
<script async id="asciicast-eHrOc74nUAINWnl9jpiu64d2v" src="https://asciinema.org/a/eHrOc74nUAINWnl9jpiu64d2v.js"></script>

### lolcat
テキストを虹色にします。
github:https://github.com/busyloop/lolcat
開発言語：Ruby
スター数：5.5k

色の変化の度合いを変えることもできます。
<script async id="asciicast-s5g3O4MKupKZLh9eQmZjA9VrI" src="https://asciinema.org/a/s5g3O4MKupKZLh9eQmZjA9VrI.js"></script>

# 参考サイト
* [CLI tools you won't be able to live without](https://dev.to/lissy93/cli-tools-you-cant-live-without-57f6#cli-monitoring-and-performance-apps)
* [もっと使いやすいコマンドラインツール10選](https://zenn.dev/the_exile/articles/5176b7a5c29bce#9.-ripgrep%EF%BC%88grep%EF%BC%89)
* [便利コマンド・ツール - もた日記](https://wonderwall.hatenablog.com/tools)

# 最後に
CLIツールをマスターして、より快適なコマンドライン生活を送りましょう！！