- Claude Codeのコード検索がめちゃくちゃ速い理由を調べたら、ripgrepとsed、awkなどを動的に組み合わせてるからでした。
- AIエージェントとコマンドラインの相性がよく、専用ツールのコードインデックスよりも柔軟で高速になっているみたい。
- UNIX哲学の「小さなツールの組み合わせ」ですね。
- 参考:Claude Code: Anthropic’s Agent in Your Terminal(May 08, 2025)
はじめに
Claude Codeというツールを使ってコード検索をしていたら、不思議なことに気づきました。WindsurfやVSCodeのような統合開発環境が持つコードインデックス1を使っていないのに、検索性能が驚くほど高いのです。
その謎を解く鍵は、意外にも1970年代に生まれたUNIX哲学2にありました。
UNIX哲学とは何か
UNIX哲学とは、「小さなツールを組み合わせて大きな仕事を成し遂げる」という考え方です3。料理に例えると、一台で何でもできる多機能調理器を使うのではなく、包丁、まな板、フライパンといった専用の道具を組み合わせて料理を作るのと似ています。
この考え方には3つの基本原則があります。一つのプログラムは一つのことを上手にやること。プログラム同士は簡単に連携できること。そして、テキストデータを共通の形式として使うことです。
「Claude CodeはUNIXユーティリティ」
50年前に確立されたUNIX哲学が、最新のAI技術で再び脚光を浴びています。Claude CodeチームのBoris Chernyは、「Claude Codeは製品というより、Unixユーティリティです」と答えているのです。
If you only take one thing away from this episode, it’s this piece from Boris: Claude Code is not a product as much as it’s a Unix utility.
This fits very well with Anthropic’s product principle: “do the simple thing first.” Whether it’s the memory implementation (a markdown file that gets auto-loaded) or the approach to prompt summarization (just ask Claude to summarize), they always pick the smallest building blocks that are useful, understandable, and extensible. Even major features like planning (“/think”) and memory (#tags in markdown) fit the same idea of having text I/O as the core interface. This is very similar to the original UNIX design philosophy:
Claude Code: Anthropic’s Agent in Your Terminal(May 08, 2025)
Claude Codeは、Anthropicが開発したターミナル上で動作するAIコーディングツールです。元々はAnthropic内の実験的なプロジェクトから始まり、bashコマンドの実行、ファイル読み取りによってAIエージェント的な動作ができます。
シンプルなツールを組み合わせるという考え方は、本質的に柔軟で拡張性があります。新しい要求が生まれても、既存のツールを新しい方法で組み合わせることで対応できます。AIはこの組み合わせを人間よりもはるかに効率的に実行できるのです。
Claude Codeの検索メカニズム(エージェント的検索)
Claude Codeがコード検索で使っているのは、まさにこのUNIX哲学の実践です4。
具体的には次のような流れで動作します。
- まず、ripgrepという超高速な文字列検索ツールでディレクトリ全体を検索します56。ripgrepは従来のgrepコマンドの進化版で、大量のファイルを瞬時に検索できます7。
- 次に、検索結果をsedやawkといった文字列処理ツールで加工します8。sedは文字列の置換や抽出を行い、awkは構造化されたテキストデータの処理を得意とします。uniqコマンドで重複を除去したり、sortで並び替えたりもします。
- コードベースが大きくなると、PythonやTypeScriptのコードを即座に生成して、より複雑な検索処理を実行します9。
これらのツールを組み合わせることで、必要な情報だけを効率的に抽出できるのです。
なぜ従来のコード検索ツールより優れているのか
従来のコード検索ツールは、事前にインデックス(索引)を作成します。本の巻末にある索引のように、どの単語がどのページにあるかを記録しておく仕組みです。しかし、この方法には限界があります。
インデックスは作成に時間がかかり、コードが変更されるたびに更新する必要があります。また、意味的に似ているけれど文脈が異なるコードも検索結果に含まれるため、ノイズが多くなりがちです。
一方、Claude Codeのアプローチは動的です。検索のたびに最新の状態で、必要な情報だけを取得します。開発者がコマンド+シフト+Fで検索するのと同じ感覚で、より高度な処理を自動化しているのです。
大規模コードベースでの適応と信頼性
コードベースが巨大になると、Claude Codeは一時的な索引を作成することもあります。しかし、これは従来の静的なインデックスとは異なります。
必要に応じてその場で作成し、使い終わったら破棄する動的なインデックスです。ディレクトリツリーを展開したり、特定のパターンでファイルを分類したりして、検索効率を最適化します。これもUNIX哲学の「必要な時に必要な処理をする」という考え方の実践です。
ただし、AIによるコード検索を使っていると、「本当に全体を見ているのか」という不安を感じることがあります。そのため、重要な作業では従来のgrepコマンドで確認したくなります。この感覚は自然なものです。AIの判断を完全に信頼するには、まだ時間が必要でしょう。しかし、適切に使えば、AIによる検索は人間の作業を大幅に効率化します。
AIはコマンドラインと相性がよい
AIがUNIX哲学と相性が良い理由は明確です。それは、AIは複数のコマンドを瞬時に組み合わせられるからです。
例えば、「この関数を使っているファイルを探して、その中で特定の条件に合うものだけを抽出する」といった複雑な検索を、ripgrep、awk、sedを組み合わせたワンライナー(一行のコマンド)で実現します。人間が複数のコマンドを組み合わせる場合には、どのオプションを使うか、どの順番で実行するかをいったん考える必要があります。しかし、AIはその場で必要なスクリプトを生成できます。
専用ツールの終わりの始まり
この現象はコード検索だけに限りません。AIの進歩により、多くの専用ツールが汎用的なAIツールに置き換わりつつあります10。
翻訳ツール、画像編集ソフト、文書作成アプリケーション。これらの専用ツールが持つ機能の多くを、AIが汎用的に処理できるようになっています。特定の用途に特化したツールよりも、柔軟性のある汎用ツールの方が、多様な要求に対応できるからです。
grep-abilityという新しい品質指標
コードの品質を測る新しい指標として「grep-ability(検索しやすさ)11」が注目されています。これは、コードがどれだけ検索しやすく書かれているかを表す概念です。
一意性の高い命名規則を使い、意味のある単語でクラスや関数に名前をつけることで、AIの検索性能が大幅に向上します。従来の「可読性の高いコード」という概念に、新しい価値が加わったのです。
まとめ
Claude CodeがコードインデックスなしでWhiptopのような専用ツールを上回る性能を示すのは、UNIX哲学の実践によるものです。ripgrep、sed、awk等の基本ツールを動的に組み合わせ、必要に応じてPythonやTypeScriptコードを生成することで、柔軟かつ高速な検索を実現しています。この手法は静的インデックスの限界を克服し、grep-abilityという新しいコード品質指標の重要性を示しています。
- Claude Code: Deep Coding at Terminal Velocity – Anthropic – Claude Codeの公式紹介ページ、コードベース検索の仕組みと性能について詳細説明
- Claude Code overview – Anthropic Documentation – Claude Codeの技術仕様と動作原理の公式ドキュメント
- Claude Code Best Practices – Anthropic – Anthropicエンジニアによる実践的な使用方法とワークフロー
- ripgrep GitHub Repository – 高速検索ツールripgrepの公式リポジトリとドキュメント
- Unix philosophy – Wikipedia – UNIX哲学の歴史的背景と基本原則の包括的解説
- The Unix Programming Environment – Wikipedia – UNIX哲学を体系化したKernighan・Pikeの著書について
- Text Processing in Linux: Understanding Grep, sed, and AWK – Linode – grep、sed、awkの違いと使い分けの実践的ガイド
- CLI text processing with GNU grep and ripgrep – ripgrepとGNU grepの詳細比較とコマンド例
- The Unix Philosophy – ratfactor – Bell Labs技術誌に記載されたUNIX哲学の原典引用
- The Unix Philosophy Explained and Extended – CrystalLabs – UNIX哲学の現代的解釈と実践への応用
- 中嶋 謙互さん: 「Claude CodeはWindsurf等のようなコードインデクサを持たないのに、なぜコード検索がかなり強力なのだろうと観察していたけど ディレクトリ丸ごと超高速なripgrepからの、 sed, awk, uniq あたりを様々なオプションを生成してその場で必要な検索をやっているからだとわかってきた。」 / X(2025年6月4日)
- コードインデックスとは、コードの内容を事前に整理して検索しやすくした仕組み。Windsurfは高度なインデクシングエンジンを持ち、コードベース全体の文脈理解に活用している – Windsurf AI Agentic Code Editor: Features, Setup, and Use Cases | DataCamp
- UNIX哲学は1969年から始まったUNIX開発の過程で生まれ、初期の開発者らが「ソフトウェアツール運動」を推進。モジュラリティと再利用性の概念をソフトウェア工学に持ち込んだ – Unix – Wikipedia
- UNIX哲学は1970年代のAT&T Bell Labsで確立された。Doug McIlroyが1978年のBell System Technical Journalで「各プログラムは一つのことを上手にやる」など9つの原則として文書化した – Unix philosophy – Wikipedia
- Claude CodeはUnixユーティリティのように動作し、基本的なUnixツールを組み合わせて複雑なタスクを実行する設計思想を持つ – Claude Code: Anthropic’s Agent in Your Terminal
- Claude Codeがripgrepを使用することは確認されているが、実際の使用は一貫していない場合がある。ユーザーがCLAUDE.mdでripgrepの使用を明示的に指定しても、通常のgrepが使用されることがある – Claude Code: Inconsistent Ripgrep Usage Despite Documentation Recommendation
- Claude Codeは内部的にripgrepを使用してファイルやディレクトリの検索を行う。ripgrepは従来のgrepよりも高速で、並列処理に対応している。ただし、ユーザーからは「Claude Codeがgrepを使うことが多く、ripgrepを使っているかが不明」という指摘もある – Poking Around Claude Code
- ripgrepは2016年にリリースされたRust製の文字列検索ツール。GNU grepよりも高速で、大量のファイルを瞬時に検索できる性能を持つ – ripgrep GitHub Repository
- Claude Codeは基本的にcat、grep、sed、findなどの標準的なUnixツールを使用してファイルシステムを操作する。ユーザーのCLAUDE.mdファイルに従って動作する – Claude Code
- Claude Codeは小規模プロジェクトではUnixツールを使用し、大規模プロジェクトではより複雑な処理のためにスクリプトを生成する機能を持つ。ただし、具体的な生成プロセスについては公式文書に明確な記載がない – Claude Code Best Practices
- この現象は「ソフトウェアツール運動」の現代版とも言える。1970年代のUNIX開発者らが推進した小さなツールの組み合わせという思想が、AIによって新たな形で実現されている – Software Tools Users Group – Wikipedia
- この概念は従来の「可読性の高いコード」に新しい次元を加えるもの。一意性の高い命名規則やトークンの特徴的な使用により、AIツールの検索性能が大幅に向上する – Understanding Cursor and WindSurf’s Code Indexing Logic | PixelsTech