バイブコーディングするならこれ入れとけ!なCLIツール

AIコーディングではなんでもAIにぶん投げればとりあえずこなしてくれますが、簡単な検索置換なんかでもいっちょまえにトークンを消費していきます。可能なかぎり前処理をCLIツールで行ってあげると、AIは思考に全力で向かうことができるようになります。AIコーディングのシステム自体がCLIツールなので、CLIツールとは相性が良いです。

今回はAIコーディングの効率をアップしてくれるCLIツールを紹介していきます。

ちな筆者はWindowsで開発してますので、インストールコマンドなどはその前提で書いています。Mac/Linuxの人は公式サイトで調べてください。

uv, uvx

これは前処理云々というよりMCPサーバを使いやすくする環境というか。Pythonをnpmっぽく使うためのツールです。前の記事でSerenaをインストールする際にも使用してますね。

システム全体にインストールするには下記で。

npm i -g uv

uvxは、npxみたいにローカルにクローンしないで実行するためのコマンドです。uvといっしょにインストールされます。直接GitHubのレポジトリURLを指定して使います。モバイル環境だと都度通信量がかかっちゃうのかも?

jq

Web系だとJSONを使わないシステムのほうが少ないと思いますが、こちらはJSONのパーサです。

sedやawkで検索抽出しなくても、JSONの構造化データをJavascriptのオブジェクトの感覚でドット区切りで取り出すことができます。

echo '{"name": "kinoko", "age": 45}' | jq '.name'
# kinoko

今製作中の音楽制作のサービスなんかだと1曲分のJSONだと500KBくらいいっちゃいます。そもそもこんなに読み込めないですし、分割してわたすにしても大量のJSONデータをAIに読み込ませるとそれだけでトークンドカ食いしちゃいます。

jqで前処理を行って、必要なデータだけ抽出して読み込ませる、というような目的で使います。これはかなり効果高いです。

rg (ripgrep)

Rust製のめちゃ速いgrep代替CLIツールです。Windows/PowerShell環境だとそもそもgrep自体ないんですけど、AIはbashのつもりでgrep試す→ない→PowerShellのSelect-Stringを試す みたいなトークンのムダ遣いを予防できますし、Select-Stringより圧倒的に速くて細かい指定ができて高性能です。

Windowsではwingetでインストールできます。

winget install BurntSushi.ripgrep.MSVC

grepよりも10~100倍速いとか、.gitignoreの内容を見て除外してgrepしてくれたり、ファイルタイプを見てバイナリは無視してくれたり、デフォで正規表現が使えたり。

要するに全文検索のツールなんですが、grepより圧倒的に書きやすい。ファイルタイプ指定での検索もオプション指定で出来るので、人間にもわかりやすいです。

rg --type rust --type toml "audio"
# .rs, .tomlのファイルから"audio"が含まれるものを検索

前後のコンテキスト表示をしたり

# 前2行・後5行も表示
rg "pattern" -B 2 -A 5

JSONで出力もできるので、他のツールにパイプで流しやすいです。

rg "pattern" --json | jq '.data.lines.text'

fd (fdfind)

bashでいうfind、PowerShellでいうGet-Child | Where の代替です。こちらは全文検索ではなく、ファイル検索のツールです。これもRust製だそうで、並列処理で高速動作・正規表現がデフォで使用可能・.gitignoreから検索候補を除外 など、rgに似た感じで高機能になっております。

winget install sharkdp.fd

Linux環境だと名前がダブっているツールがあるらしくて、fdfindっていう名前になるようです。

# 正規表現パターン
fd '^test.*\.rs$'

# 見つけたファイルに対してコマンド実行
fd -e rs -x wc -l  # 各.rsファイルの行数カウント

# 変更時刻指定
fd --changed-within 5min
fd --changed-before '2023-01-01'

などなど、パイプで頑張ってた処理がワンライナーで済みます。

PowerShellだと検索するだけで何回も失敗してプロンプト無駄打ちしてますので、トークン消費量はかなり改善できるんじゃないかと。

sd

一言でいうとめちゃくちゃ早いsedです。テキストの検索置換を行います。これもRust製で、並列処理でやってくれるみたいです。

winget install chmln.sd

複数ファイルでも一括変換できますので、改名のみのリファクタリングなど、1ファイルずつ開いて修正するような無駄はなくなると思います。

sd "old_pattern" "new_pattern" file-*.rs

インストールしたツールはAIに教えよう

基本的にAIは、自分が実行されている環境についての情報を持っていません。

たまーにインストールしていないツールも存在確認して「無いからこっちをつかいます」みたいな判断をしてくれたりしますが、基本的にはClaudeCodeはBash、JunieはPowerShell標準のコマンドで処理しようとします。

〇〇というCLIツールをインストールしました。
積極的に使用するように記憶してください

こんな感じでプロンプト打っておくとCLAUDE.mdや.junie/guidelines.mdに書き込んで優先的に使ってくれるようになります。おためしあれ。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です