見出し画像

TUI ツールで快適な CLI ライフを送ろう

はじめに

こんにちは、LaKeel DX Platform Group Manager Core チームの柏木です。

IT エンジニアには、コマンドを実行する場面が非常に多くあります。
しかし、コマンドの種類は非常に多いので覚えるのに苦労したり、似たようなコマンドを何度も実行するのが煩わしく感じたりする場面も少なくありません。

今回の記事では、より楽しく快適に CLI ライフを送るためのツールを紹介いたします。


TUI とは

TUI は Text User Interface の略で、文字を使って操作するインターフェースの一種です。通常のコマンドライン操作の CUI (Character User Interface) や、マウスでクリックしてアプリケーションを操作する GUI (Graphical User Interface) とも異なる UI を指します。

CUI と GUI の中間のようなものをイメージすると分かりやすいかもしれません。ターミナルで動作する点は CUI と同じですが、見た目がもう少し視覚的である点は GUI に近いです。また、TUI はインタラクティブな操作が可能で、ユーザーはシステムやデバイスとリアルタイムでやりとりをすることができます。例えば質問に答えたり、選択肢を選んだりするようなイメージです。

ツールの紹介

Yazi

Yazi は CLI 上で動作するモダンなファイルマネージャーです。Rust で書かれており、高速に動作します。cd コマンドや ls コマンドを何度も打つ必要がないので、ファイルの管理がとても楽で気に入っています。
基本設定やキーバインド、テーマなども柔軟にカスタマイズできます。

公式サイトより引用

個人的に特に気に入っているのは、yazi を閉じたとき、閉じたディレクトリに自動で移動してくれる設定ができることです(詳細)。yazi を使って、 例えば ~/.config/yazi ディレクトリに移動して yazi を閉じると、~/.config/yazi から作業を再開することができます。ディレクトリの移動がとても早く、快適になります。

画像のプレビュー機能もあるのですが、WSL の場合は WezTerm をインストールしてそこに ssh する必要があります。WezTerm をインストールできたら PowerShell 上で以下のコマンドを実行しましょう。(詳細はこちら

wezterm ssh 127.0.0.1

※ 社用 PC など、ネットワークに制限がある場合は上手く行かないことがあります。その場合は 127.0.0.1 ではなく、WSL 上で以下のコマンドを実行して表示された IP に置き換えて試してみてください。

hostname -I | awk '{ print $1 }'

lazydocker

lazydocker は、シンプルな Docker 管理ツールです。ローカルにあるコンテナやイメージの状態が一目見て分かり、非常に使いやすいです。

公式リポジトリより引用

私は特に、Image と Volume の管理がしやすい点が気に入っています。
開発や検証をこなしていると、ローカルに Image や Volume が溜まっていきます。不要になったものを放置しておくと PC のストレージ容量を圧迫してしまうため、適宜整理しなければなりません。lazydocker の Images と Volumes のタブでは、何がどの程度溜まっているのか一目でわかるため、整理が非常に簡単です。

lazygit

lazygit は、git コマンドのシンプルなターミナルインターフェースです。リポジトリの状態が視覚化され、コマンドを打つ手間もかなり省略することができます。

公式リポジトリより引用

例えば開発時に、ファイルごとにコミットを分けたいということはよくあります。この場合、生の git コマンドだと

git add /path/to/file
git commit -m "commit message"

というコマンドを何度も打つことになり、結構な量のタイピングが要求されます。しかし lazygit を使うと、add するファイルの選択、commit、push がワンタッチで行えます。視覚的にどのブランチにいるのかも分かりやすいので、ミスも起きにくいです。

k9s

k9s は、Kubernetes クラスターを操作するためのツールです。
Pod を始めとした各種リソースの状態を素早く見られるので重宝しています。

公式リポジトリより引用

kubectl コマンドは長くなりがちなのですが、k9s では、例えばカーソルを合わせて d を押すだけで kubectl describe ~ ができたり、l で kubectl logs ~ ができたりと、よく使うコマンドを非常に簡単に呼び出すことができます。
また、リソースの依存関係を可視化したり、クラスターの脆弱性を検出したりすることもでき、とても多機能です。

私の所属するグループでは Kubernetes クラスターの管理、運用を行っているため、k9s を使って作業するメンバーが非常に多いです。

jqp

jqp は、複雑な jq コマンドを試すことの出来るツールです。

公式リポジトリより引用

jq クエリは json の形式によっては非常に複雑になるのですが、それをインタラクティブな操作で効率よく検証することができます。

実行結果の保存やクエリのクリップボードへのコピーも簡単にできるので、例えばシェルスクリプトで jq コマンドを使う必要のあるときなどには重宝します。

tmux

tmuxは、ターミナルで作業する際に複数のウィンドウやセッションを同時に管理できるツールです。

ペインを分割して作業する様子
複数のウィンドウを一覧表示する様子

例えば右側でログを見ながら左側でコマンドを打って作業して、別のウィンドウではシェルスクリプトを実行して…というように、複数のタスクを管理するのに適しています。

tmux はコマンドでの操作も可能ですが、prefix + (何かしらのキー) で操作を行うことが多いです。例えば prefix + " で上下に分割、prefix + % で左右に分割、prefix + w でウィンドウの一覧表示ができます。
キーバインドは設定ファイルでカスタマイズすることができ、自由度がとても高いです。

※ prefix はデフォルトでは Ctrl + b です。
※ 画像に出ているログ等はすべてランダム生成なので、特に意味はありません。

おわりに

今回は、私が普段使っている TUI ツールを紹介いたしました。
しかし、もちろんこれは全体のほんの一握りに過ぎません。例えば awesome-tuis など、TUI ツールリストを覗いてみてください。
今回紹介したような開発に役立つもの、カレンダーやメールのような日々の暮らしに役立つもの、中には Youtube を見られるものなども存在するようです。

様々なツールでターミナルでの作業を効率化するのはとても楽しいものです。是非、自分のスタイルに合わせたツールを探して、自分だけのターミナルを作ってみてはいかがでしょうか。