知っておくと便利な開発者ツール - CLIエディション
概要
最高のアプリを紹介した前回の記事に続いて、Command Line Interface(以下CLI)のおすすめツールを見ていきます。今回紹介するツールは全て、筆者が最低6ヶ月以上使用しており、新しい環境をセットアップする際に必ず導入しているものです。
zoxide
GitHub - ajeetdsouza/zoxide: A smarter cd command. Supports all major shells.
一度でも訪れたディレクトリのパスを覚える必要がなくなるツールです。例えば以下のような場合です:
cd ~/.config/somewhere/longlong/path
# 次回からは以下のコマンドで直接アクセス可能
z path
これは非常に便利で、特定の設定ファイルがどこにあるかを覚えておく必要がなくなります。zi
を使用すると優先順位リストが表示され、ファジー検索も可能です。
一度使うと、このツールを使用する前には戻れなくなるでしょう。
mise
GitHub - jdx/mise: dev tools, env vars, task runner
各種環境変数や言語、パッケージのバージョンマネージャーです。構造的に非常に安定性が高く、Rustで実装されているため速度も速いです。直感的なコマンドにより、学習曲線が大幅に緩和されています。
既に本ブログで記事として紹介するほど、非常に愛用しているツールです。miseの役割を果たす類似ツールは他にもありますが、個人的にはその中で最もおすすめできると考えています。例えば、direnvはmiseで完全に代替可能で、nixは過度に複雑で汎用性が低いです。
様々な言語を扱うプログラミングマルチリンガルであれば、ぜひ試してみてください。
chezmoi
複数のデバイスを使用している場合、開発環境の同期は非常に面倒です。特にCLIを頻繁に使用する開発者にとってはなおさらです。
完全に同期を諦めるつもりでなければ、どのように同期できるか悩んでいる場合はchezmoiを試してみてください。新しい機器を購入しても、初期設定に時間を費やす必要がなくなります。
miseと同様に、本ブログに使用方法に関する記事がありますので参考にしてください。
fzf
GitHub - junegunn/fzf: :cherry_blossom: A command-line fuzzy finder
GitHubスター約70k、これ以上の説明が必要でしょうか(参考までに、spring-frameworkは57kです)。
韓国人開発者のjunegunn氏が管理するオープンソースのファジーファインダーで、標準入出力パイプラインを通じて驚異的な汎用性を誇ります。
**検索が必要な場合、種類に関係なくfzfを使えば良いです。**様々なパッケージが利用しているため、fzfの存在を知らなくても、既に間接的に使用していた可能性があります。
fd
GitHub - sharkdp/fd: A simple, fast and user-friendly alternative to 'find'
find
コマンドを代替します。
Rustで作成されており、find
と比べて最大50%速いとされています。ハイライトも綺麗で、コマンドオプションもfind
よりもはるかに直感的です。
ripgrep
grep
コマンドを代替します。名前はripgrepですが、コマンドはrg
を使用します。
fd
と同様に、Rustで作成されています。grep
と比べて、出力からより多様な情報を得ることができます。コマンドも直感的で使いやすく、速度も速いため、使わない理由がありません。
まさに'RIP, grep'です。
lsd
GitHub - lsd-rs/lsd: The next gen ls command
ls
コマンドを代替します。
ls
コマンドは非常によく使用されるコマンドです。コマンド自体は古いものですが、出力から得られる情報は多くありません。lsd
を使用すると、既存のls
を完全に代替することができます。
bat
GitHub - sharkdp/bat: A cat(1) clone with wings.
cat
コマンドを代替します。
cat
コマンドは単純な出力ですが、bat
を使用するとコードハイライトを楽しむことができます。
ある程度目の利く開発者なら、行出力がシェルパイプラインを妨げるのではないかと心配するかもしれませんが、
全く妨げません。心配せずに新しい技術を楽しみましょう。
筆者はbat
コマンドのエイリアスをcat
に設定して使用しています。
HTTPie
HTTPie – API testing client that flows with you
curl
を代替します。
アプリ版もあるためどちらの記事に含めるべきか悩みましたが、個人的にはCLIでのみ使用しているため、こちらの記事に含めました。
なぜcurl
の代わりにHTTPieを好むかというと、非常に直感的だからです。簡単なGETリクエストは以下のように送信できます:
https httpie.io/hello
レスポンスは以下のようにフォーマットされて返ってきます:
curl
のレスポンスを思い出してみてください。開発者も綺麗なものが好きです。
Orbstack
OrbStack · Fast, light, simple Docker & Linux
Docker Desktopを代替します。
Dockerコンテナを使用する際に少し速くなり、いくつかのバグも解消されます。しかし、本当の真価はVMを使用する際に発揮されます。従来VMの使用が難しかったMacでも、非常に軽量にVMを実行できます。UbuntuやKali Linuxなどのテストが必要な場合、orbstackを使用すると非常に高速で便利に管理できますので、試してみてください。個人的に非常に面白い経験でした。
atuin
GitHub - atuinsh/atuin: ✨ Magical shell history
chezmoiを使用すると使用するツールの設定は同期できましたが、atuinを使用すると会社で使用したコマンド履歴を同期できます。もう会社で使用したコマンドが何だったか思い出そうと苦労する必要はありません。
一つ残念な点は、ターミナルとしてWarpを使用している場合、atuinを完全に活用することが難しいという点です。Warpは独自の履歴機能を提供しており、atuinと干渉があります。以下のコマンドを使用すると履歴からコマンドを検索できるため、暫定的な対処として使用しています:
atuin history list | fzf
trash-cli
ターミナルに「ゴミ箱」機能を実装します。したがって、もうrm -rf /
を恐れる必要はありません。いつでも復元が可能だからです。
開発者最大の敵であるrm -rf /
から解放されるというのに、それ以上の理由が必要でしょうか?
まとめ
ここまで、個人的に非常に気に入っている様々なツールを紹介してきました。
実際、これ以外にもおすすめできるツールはいくらでもありますが、誰かが何をおすすめしても、自分の手に馴染んだものが一番良いものです。残りは自分の環境に合わせて探して使ってみましょう。
使用中の全てのツールはこちらで確認できます。