ag コマンド(The Silver Searcher)は、ソースコード検索に特化した非常に高速なテキスト検索ツールです。ack を参考に開発され、デフォルトで .gitignore などを考慮し、不要なファイルを除外して効率的に検索できます。
agコマンドのインストール方法
ag は標準では入っていないため、パッケージマネージャーで個別にインストールします。
| 環境 | インストールコマンド |
|---|---|
| macOS(Homebrew) | brew install the_silver_searcher |
| Ubuntu / Debian | sudo apt install silversearcher-ag |
| CentOS / RHEL / Fedora | sudo dnf install the_silver_searcher |
| Windows(WSL) | WSL内のUbuntuで sudo apt install silversearcher-ag |
| Windows(Scoop) | scoop install ag |
インストール後は ag --version でバージョンを確認できます。
ag --version
構文(Syntax)
ag [オプション] <パターン> [パス...]
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
<パターン> | 正規表現で検索 | ag TODO |
<パス> | 検索対象ディレクトリやファイルを指定 | ag error ./logs |
-i | 大文字小文字を無視 | ag -i error |
-w | 単語単位で検索 | ag -w main |
-l | マッチしたファイル名のみ表示 | ag -l FIXME |
-c | ファイルごとのマッチ数を表示 | ag -c TODO |
--stats | 検索の統計情報を表示 | ag --stats foo |
--hidden | 隠しファイル・ディレクトリも対象にする | ag --hidden secret |
--ignore DIR/PATTERN | 特定のディレクトリやパターンを無視 | ag --ignore node_modules |
--depth N | ディレクトリ探索の深さを制限 | ag --depth 2 TODO |
--follow | シンボリックリンクをたどる | ag --follow pattern |
実行例
“TODO” を含む行を検索
ag TODO
出力例:
src/main.py:12: # TODO: implement login
tests/test_app.py:5: # TODO: write unit tests
大文字小文字を無視して検索
ag -i error ./logs
ファイル名だけを表示
ag -l FIXME
出力例:
src/lib.rs
src/utils.rs
マッチ数を表示
ag -c def
出力例:
src/main.py:3
src/utils.py:1
隠しファイルも検索対象にする
ag --hidden password
特定のディレクトリを無視
ag --ignore node_modules foo
ディレクトリ深さを制限
ag --depth 1 TODO
検索統計を表示
ag --stats function
出力例:
matches found: 42
files searched: 10
time taken: 0.012s
エラー例(パターン未指定)
ag
出力例:
Usage: ag [FILE-TYPE] [OPTIONS] PATTERN [PATH]
grep・ripgrep・ackとの違い(比較表)
ag はどの立ち位置のツールなのか、代表的な検索コマンドと比較します。
| ツール | 実装言語 | 速度 | .gitignore対応 | 現状の立ち位置 |
|---|---|---|---|---|
grep | C(標準コマンド) | 標準 | 非対応 | 環境を問わず必ず使える最終手段 |
ack | Perl | やや速い | 対応 | ag の設計に影響を与えたが近年は利用減 |
ag(The Silver Searcher) | C | 高速 | 対応 | 軽量・シンプルで根強い人気。ただしメンテナンスは緩やか |
| ripgrep(rg) | Rust | 最速クラス | 対応 | 活発に開発中で現在の主流。VS Codeなどにも採用 |
迷ったら ripgrep(rg) を使うのが現在は無難です。ag はインストールサイズが小さく依存関係もシンプルなため、軽量な環境や既存のスクリプトで ag 前提の運用がある場合に選ぶ価値があります。標準コマンドだけで完結させたい場合は grep の正規表現・除外オプションだけでも十分なケースが多いです。
よくある質問(FAQ)
Q1. agコマンドのインストール方法は?
macOSは brew install the_silver_searcher、Ubuntu/Debianは sudo apt install silversearcher-ag でインストールできます。詳しくは記事冒頭の「agコマンドのインストール方法」を参照してください。
Q2. agとripgrep(rg)はどちらを使うべき?
速度・開発の活発さでは ripgrep(rg) が優位です。新規に導入するなら ripgrep を推奨しますが、既存環境で ag が使われている場合や、依存関係を増やしたくない場合は ag のままで問題ありません。
Q3. agとgrepの違いは?
ag はデフォルトで .gitignore を尊重し、バイナリファイルや node_modules などを自動的に除外するため、コード検索では体感速度・ノイズの少なさともに grep より扱いやすいです。ただし ag は追加インストールが必要なのに対し、grep はどの環境にも標準搭載されている点が異なります。
Q4. ag コマンドが見つからない(command not found)場合は?
ag は標準ではインストールされていないため、パッケージ名が異なる点に注意してください。Ubuntu/Debian系ではコマンド名は ag でもパッケージ名は silversearcher-ag です。sudo apt install silversearcher-ag のように、パッケージ名とコマンド名の違いを意識してインストールしてください。
まとめ
ag(The Silver Searcher)は、.gitignore を自動的に考慮しながら高速にソースコードを検索できるコマンドです。パッケージマネージャーで簡単に導入でき、-i(大文字小文字無視)・-w(単語単位)・--ignore(除外指定)などのオプションを組み合わせることで、目的のコードやTODOコメントを素早く見つけられます。より高速な検索ツールを求める場合は ripgrep(rg)、標準コマンドだけで完結させたい場合は grep も合わせて検討してください。
関連コマンド
- grep : 標準的なテキスト検索コマンド。正規表現や除外オプションの詳細はこちら。
ack:agの設計に影響を与えた検索ツール。- ripgrep(rg) :
agよりさらに高速で現在主流の検索ツール。インストール〜実務オプションまで解説。
備考
agは C で実装されており、速度が非常に速いのが特徴です。- デフォルトで
.gitignore、.hgignore、.agignoreを尊重します。 - 近年では
ripgrep (rg)のほうが推奨されるケースが多いですが、agは軽量でシンプルなため依然として利用されています。

コメント