ast-grepとは?
ast-grep は、テキストではなく構造でコードを探します。`$A && $A()` のような普通のコードに見えるパターンを、変わる部分をプレースホルダーにして書くと、空白や変数名に関係なく、その形を持つ箇所をコードベース全体から見つけます。同じパターンで YAML の lint ルール(`ast-grep scan`)、ルールのテスト、書き換えを動かせ、書き換えは一括でも `--interactive` で一件ずつでも適用できます。解析には tree-sitter を使い、Bash や C から TypeScript、Zig まで 28 言語に標準で対応します。
Herrington Darkholme が率いるこのプロジェクトは MIT ライセンスで、Rust で書かれ、GitHub のスターは約 16,600 です。リリース 0.51.2 は 2026 年 11 月 11 日に出ました。Homebrew、npm、pip、cargo、MacPorts、Nix からインストールでき、JavaScript、Python、WebAssembly の API、エディター向けの言語サーバー、JSON 出力モードも備えます。コーディングエージェント向けには `outline` コマンド(0.44.0 からのアルファプレビュー)、公式のエージェント用スキル、実験的な MCP サーバーがあります。
ast-grepは使う価値があるか?
ほとんどのリファクタリングにとって、テキスト検索は不向きな道具です。しかもエージェントは人より速くその失敗をします。関数呼び出しを書き換える正規表現は、コメントや文字列、たまたま同じ名前の変数の中の同じ単語まで書き換えてしまいます。ast-grep はまずファイルを解析するので、パターンはその形の本物のコードにしか一致しません。そのためエージェント環境でよく使われる依存先になりました。npm では 2026 年 11 月 12 日までの 30 日間に @ast-grep/cli が約 960 万回ダウンロードされています。この数字には CI や推移的なインストールも含まれ、人がコマンドを打った回数だけではありません。
設計はパターンを読みやすく保ちます。クエリ言語を覚える代わりにメタ変数入りのコードを書き、パターンだけでは足りないときに YAML ルール(inside、has、not、any)を加えます。ルールには修正、重大度、テストを持たせられるので、一回きりの検索がプロジェクトの linter になります。リリースは安定したペースで、0.51.1 が 11 月 2 日、0.51.2 がその 9 日後に出ており、履歴には 100 人を超えるコントリビューターがいます。
注意点:見えるのは構文だけです。FAQ は、スコープ、型、制御フロー、データフロー、taint の解析がないと明言しています。特定の型の変数を探したり、ユーザー入力をデータベース呼び出しまで追ったりはできません。その種のセキュリティルールなら Semgrep や CodeQL のほうが踏み込めます。パターンは tree-sitter が解析できるコードである必要があり、単独の JSON キーのような断片でつまずきます。また Linux では短い別名 `sg` がシステムの setgroups コマンドと衝突します。MCP サーバーは実験的と明記され、Python と uv で動くため、多くのエージェントには CLI とスキルのほうが向いています。
結論:ast-grep は、関数呼び出しがどこで始まりどこで終わるかを知っている grep だと考えてください。形のある検索と書き換えはすべてエージェントに任せ、意味に関する問いには型を理解するツールを残しておくのが妥当です。
真価を発揮する場面
大規模な TypeScript モノレポを担当するプラットフォームエンジニア
コメントや文字列には触れずに、非推奨のログ呼び出しをすべて置き換える
修正付きのパターンを一つ書き、`ast-grep run --interactive` で確認してからツリー全体に適用します。ほとんどのリポジトリでローカルに数秒で終わり、費用はかかりません。型に依存する部分は引き続きコンパイラーが必要です。
CI で社内ルールを徹底したいテックリード
社内 API を誤った方法で呼ぶ新しいコードを止める
sgconfig.yml のプロジェクトに YAML ルールを加え、それぞれにテストケースを付けて、パイプラインで `ast-grep scan` を実行します。ルールはリポジトリに置かれ、コードと同じようにレビューされ、ライセンス料はかかりません。
見慣れないコードベースで Claude Code を使う開発者
エージェントに正規表現ではなく構造でコードを探させ、編集させる
CLI と公式スキルを入れてエージェントに ast-grep のルールを書かせ、ファイル全体を読む前に `ast-grep outline` でシンボルを一覧させま す。余計な編集が減ります。outline はまだアルファプレビューです。
導入前に確認すること
- 導入
- `brew install ast-grep`、`npm i @ast-grep/cli -g`、`pip install ast-grep-cli`、`cargo install ast-grep --locked` のいずれかで入り、最初の検索まで 1 分ほどです。`ast-grep new` でルールプロジェクトの雛形を作れます。
- 連携
- 28 の組み込み言語と tree-sitter による独自言語、VS Code などのエディター向け言語サーバー、JSON 出力、JavaScript(napi)、Python、WebAssembly の API、オンラインの playground、ast-grep/agent-skill プラグイン、実験的な ast-grep-mcp サーバー。
- データとプライバシー
- すべて手元のマシンでローカルファイルに対して動き、アカウントやネットワークサービスは関与しません。MIT ライセンスです。
- 大規模利用時のコスト
- 無料で、有料プランはありません。メンテナーは GitHub Sponsors を受け付けています。大規模での実際のコストは、ルールを書いてテストする手間です。
- 制限
- 構文のみで、型、スコープ、制御フロー、データフロー、taint の解析はありません。パターンは解析可能なコードである必要があります。`outline` はアルファプレビューで、対応言語は変わる可能性があります。前回確認時点で未解決の issue と pull request は約 46 件です。
良い点
- パターンをプレースホルダー付きの普通のコードとして書ける
- tree-sitter による 28 の組み込み言語
- 検索、テスト付き lint ルール、書き換えが一つのバイナリに
- JavaScript、Python、WebAssembly の API と言語サーバー
気になる点
- 型、スコープ、データフローの解析がない
- パターンが有効なコードである必要があり、初心者が戸惑う
- 別名 `sg` が Linux のシステムコマンドと衝突する
- MCP サーバーはまだ実験的
おすすめの人
コン パイラープラグインを書かずに、大きなコードベースで正確で再現性のある検索と codemod を行いたい開発者とコーディングエージェント。
ast-grepの代替
ast-grep:よくある質問
- ast-grepは使う価値があるか?
- ast-grep は、コーディングエージェントが sed に手を伸ばす前に渡すべき構造検索ツールです。ただし、構文の一致を意味解析と取り違えないことが条件です。 評価は5点満点中4.5点です。
- ast-grepの料金は?
- 無料のオープンソース(MIT)です。
- ast-grepの欠点は?
- 型、スコープ、データフローの解析がない; パターンが有効なコードである必要があり、初心者が戸惑う; 別名 `sg` が Linux のシステムコマンドと衝突する; MCP サーバーはまだ実験的.
- ast-grepは誰に向いているか?
- コンパイラープラグインを書かずに、大きなコードベースで正確で再現性のある検索と codemod を行いたい開発者とコーディングエージェント。
- チームや本番環境でast-grepを使うと費用はいくらか?
- 無料で、有料プランはありません。メンテナーは GitHub Sponsors を受け付けています。大規模での実際のコストは、ルールを書いてテストする手間です。
- ast-grepは企業データを扱っても安全か?
- すべて手元のマシンでローカルファイルに対して動き、アカウントやネットワークサービスは関与しません。MIT ライセンスです。
- ast-grepの代わりになるものは?
- 当サイトでレビューした中で最も近い代替はgrepai, Repowise 、 jevgrepです。
回答確認日:2026年11月13日