こんにちは、Legalscape コンテンツバリューチームでエンジニアをしている清水です。
みなさんは開発するときにエディタは何を使っていますか?
自分は昔からVim(またはNeovim)を愛用しておりターミナルの中で開発することにこだわりがあるのですが、最近はVS Codeを使っている人が多く、エディタに付属するAIによる開発支援ツールの発展にともなってVim使いたちが減っているのを感じています。
一方で、ターミナルで使用できるコマンドとして動くClaude Codeが出たことで、それならとターミナルで開発することに関心をもってくれている人もいました。LegalscapeはエンジニアにAIを活用した開発を支援してくれており、自分自身でもClaude Codeを使ってターミナル上でスムーズに開発できています。
この記事では自分が使っているおすすめのツールを紹介しつつ、デフォルト状態のターミナルを使って不便だなと思ってる人にも、ターミナルではいろんなことができ、ツール同士がシナジーする拡張性が高い開発環境であることを宣伝したいと思っています。

ツール
Ghostty
Mac環境で開発している人はOS標準のTerminalやiTerm2を使っている人が多いかと思いますが、2024年12月にリリースされたGhosttyがおすすめです。
何が違うのかと思う人もいるかと思いますが、アプリによってレンダリング速度が体感できるぐらい違うため、個人的にはなるべく軽快に動くターミナルを使いたいと思っています。
GhosttyはmacOSではMetalを使用したGPUアクセラレーションを利用していて高速に描画されます。
また、Zero Configuration Philosophyを謳っていて実際自分も以下の設定だけで不便なく使っています。
font-family = "HackGen35 Console NFJ" theme = "Builtin Solarized Light"
iTerm2と同様マウスでURLを開く機能もあります。

この操作をする際は、仕様上の制約でcmd + shiftを押した状態でマウス操作する必要があります。
fish
shellをこだわっている人はzshを使っている人が多いと思いますが、fishというShellがおすすめです。
このshellもデフォルトの状態でいい感じになっていて、oh-my-zshのような重厚な設定ファイルを利用しなくても快適に使えます。
インタラクティブなコマンドの補完が効くのが使っていて便利です。

fishは独自の構文やコマンド体系を持っておりbash, zshといったシェルと異なりPOSIX非互換となり、bashやzshで動くシェルスクリプトが動かないこともあり不便なこともあります。そういったときはbashを起動したり bash script.sh で実行したりしていますね。
一方でわかりやすい構文になっており、自分でスクリプトを書きやすいので自分で書くときはスムーズです。
自分が普段使っているコマンドの完了通知用のスクリプトも自分で書きました。
tig
gitの履歴を確認したりファイルをステージしたり、commitを作ったりrebaseしたりとgit操作の多くを行うことができます。
Claude Codeを使っていると差分をどのアプリを使って確認するのか?という話題があるかと思いますが自分がtigのstatusからvimでファイルを開いて確認していることが多いです。

peco
pecoは受け取った標準入力をインタラクティブに選択し標準出力するコマンドです。

これだけだと特別便利ではないようですが、他のツールと組み合わせて使うことで強力な効果を発揮します。
ghq
どこのディレクトリに git clone しようかなという悩みを解決するツールです。
ghq get https://github.com/x-motemen/ghq # `git clone https://github.com/x-motemen/ghq $GHQ_ROOT/github.com/x-motemen/ghq` が実行されます
$GHQ_ROOT はgit-configが使用され git config --global ghq.root '~/src' のようなコマンドで好きなディレクトリを指定できます。
ghq list を使用することで今までcloneしたディレクトリの一覧を出すことができます。
peco, ghqを組み合わせることでインタラクティブにディレクトリを検索してレポジトリの移動をするコマンドを作ることができます。
ghq list -p | peco | read line; cd $line
それをfish上のキーバインドに割り当ててターミナル操作中にシームレスに実行できるように設定しています。
function peco_select_repository
ghq list -p | peco $peco_flags | read line; builtin cd $line
end
function fish_user_key_bindings
fish_vi_key_bindings
bind -M default -m insert sr peco_select_repository
end
最後に
以上のは一例で、ターミナルを使った開発ではマウスを使った操作ができないんじゃないか? インタラクティブな操作が不自由だったりするんじゃないか?みたいな疑問があるかと思いますが、やりたいことが様々な技術を使って実現されています。
Claude Codeのようなコマンド型のAIエージェントとも相性がよく、ちょっとだけエージェントをさっと使いたいときにターミナルにいるのは便利です。自分はよくターミナル上で claude -p "create pr in japanese" と実行してPRの作成だけお任せしています。
Legalscapeでは自分以外も開発環境にこだわりがあるエンジニアが在籍しており、こういった開発環境のトークでも盛り上がれるかと思います。
弊社について興味が湧いた方がいればお気軽にご連絡ください: https://x.com/legalscape