ケンシロウ級の速さ!ソフトウェア開発の生産性を爆上げするripgrep活用法
「北斗の拳」の世界で、ケンシロウが強敵を打ち破り、道を切り開くように、ソフトウェア開発の世界で、我々エンジニアが日々直面する「どこだ!あのコードはどこにいる!?」という混沌を、このripgrep(通称rg)が一瞬で制圧してくれるんだ。
このツールは、昔ながらの「grep」の進化系であり、Rustという超高速な言語で書かれているから、そのスピードはまさに「お前はもう検索している!」ってレベルだよ。
ソフトウェアエンジニアにとって、ripgrepは以下の点で「北斗神拳」のような絶大な力を発揮するよ。
高速性
ripgrepは、従来のgrepやack、The Silver Searcher (ag)といったツールよりも桁違いに速いことが多いんだ。プロジェクトの規模が大きくなればなるほど、この検索速度の差は開発効率に直結する。
Rustによる安定性
基盤となるRust言語の恩恵を受け、高速ながらもメモリ安全性に優れているため、大規模なコードベースでも安定して動作するよ。
これが一番の肝!ripgrepはデフォルトで、プロジェクトのルートにある.gitignoreファイルを自動で読み込んでくれるんだ。
つまり、node_modulesやdist、ログファイルなど、バージョン管理から除外されている、検索する意味のないファイルやディレクトリを最初から無視してくれる。
これにより、検索結果が本当に必要なコードに絞り込まれ、ノイズのないクリーンな結果が得られるんだ。
強力な正規表現エンジン(Rustのregexクレート)を使って検索できるから、「特定の値を持つ変数の定義箇所」や「特定の関数呼び出しパターン」など、複雑な条件での検索もバッチリだ。
ripgrepの導入は非常に簡単だよ。君がどのOSを使っていようと、主要なパッケージマネージャで一瞬で導入できる。
| OS | パッケージマネージャ | コマンド例 |
| macOS | Homebrew | brew install ripgrep |
| Linux (Debian/Ubuntu) | apt | sudo apt install ripgrep |
| Windows | Scoop または winget | scoop install ripgrep または winget install BurntSushi.ripgrep |
インストール後、ターミナルでrg --versionと打ってバージョンが表示されれば、導入完了だ!
基本的な使い方は、grepとほぼ同じ。コマンド名はripgrepだけど、実行ファイル名は一般的にrgと短縮されるよ。
カレントディレクトリ(./)以下の全ファイルから、「currentUser」という文字列を探す。
# 探し求めるコードを見つける!
rg currentUser
特徴
grep -r currentUser . と似ているけど、圧倒的に速く、.gitignoreで無視されたファイルは検索対象外になる。
「特定の変数名や関数名だけど、命名規則が揺れているかも…」というときに便利だ。
# 「loginButton」を大文字・小文字を区別せず探す
rg -i loginButton
ケンシロウの指一本で秘孔を突くように、特定のコード行をピンポイントで特定したいときに。
# 行番号 (-n) と共に「async function」の定義を探す
rg -n "async function"
「JavaScriptファイル(*.jsや*.jsx)の中だけ」など、検索対象を絞り込むことで、さらに高速かつ正確な結果を得る。
# JavaScriptやTypeScriptファイル (.js, .ts, .jsx, .tsx) のみ検索する
rg -t js "fetchData"
# または、タイプを明示的に指定することもできる
rg -t typescript "interface User"
「この設定値を使っている箇所は見た、じゃあ使っていない箇所はどこだ?」といった、逆の確認をしたい時に。
# 「secretKey」という文字列が含まれていない行を表示する(grepの -v と同じ)
rg -v secretKey app.config.js
「どのファイルにTODOが残っているか」をサッと確認したいときに。
# 「TODO」コメントが含まれているファイル名だけをリストアップする
rg -l TODO