Code-Graph-RAG 多言語コードベースを自然言語で操作
マルチ言語コードベースをTree-sitterで解析し、Memgraphにナレッジグラフを構築。自然言語でコードの問い合わせ、編集、最適化が可能になる。
AFFILIATE_PRODUCTS:
Code-Graph-RAGは、Tree-sitterとMemgraphを組み合わせ、マルチ言語のコードベースを解析してナレッジグラフを構築するツールだ。GitHub Trendingのvitali87氏による開発プロジェクトで、ユーザーは自然言語でそのグラフを問い合わせ、コードの編集や最適化を行うことができる。モノレポ内に複数のプログラミング言語が混在する環境でも、統一されたグラフスキーマで扱える点が特徴である。
複雑なコードベースの構造化
同ツールが行うのは、リポジトリ内のすべてのソースファイルを読み、関数、クラス、メソッド、モジュールとそれらの関係性を抽出し、相互接続されたグラフとしてMemgraphに格納することだ。これにより、コードベース全体の構造がデータとして把握可能になる。
一度グラフが構築されれば、ユーザーは自然言語で質問を投げかけることができる。例えば、「このプロジェクトのエントリーポイントから呼び出されている関数の一覧は何か」といった質問に対して、実際のコード構造に基づいた回答が得られる。特定の関数やクラスのソースコードを意図や名前で取得したり、不要なデッドコードを見つけたりするのにも利用できる。
最新機能と多言語対応
2026年8月時点で、同プロジェクトはいくつかの注目すべき新機能を追加している。まず、Ruby言語への構造的対応が挙げられる。ast-grepを用いたプラグイン可能な階層により、YAMLパターンファイル一つで言語を追加でき、手書きパーサーなしでModule、Function、Classノードとimportエッジを生成する。
また、構造的な検索と置換機能も実装された。ast-grepを使い、テキストや正規表現ではなく抽象構文木パターンでコードを検索し、リプレースメントを行う。これはエージェントツールとして公開されており、コードベース全体を対象に構造的な変換を可能にする。
さらに、データフロー追跡機能がC#、Java、C、Goの4言語で利用可能になった。FLOWS_TOという不正データフローのエッジを追加し、代入、関数呼び出し、I/Oシンクを介した値の伝播を追跡する。これはセキュリティ監査やバグ特定に有効な機能となる。
アーキテクチャと導入
システムは二つの主要コンポーネントから構成される。一個是Tree-sitterベースのマルチ言語パーサーで、コードベースを解析し、言語に依存しないスキーマでMemgraphに取り込む。もう一個是RAGシステム(codebase_rag/)で、インタラクティブCLIを通じて自然言語をCypherクエリに変換し、コードを取得してAIによる編集や最適化を実行する。
現在対応しているのはPython、TypeScript、JavaScript、Rust、Go、Java、C、C++、C#、PHP、Lua、Dartだ。Scalaは開発中、Rubyは構造的サポートが提供されている。PyPIから「cgr」パッケージとしてインストールでき、uvやpipxを使った導入が推奨されている。併せてDocker(Memgraph用)、cmake、ripgrepが必要となる。
編集部の見解
短期的には、Code-Graph-RAGがデバッグやコードレビューの効率向上に寄与する可能性がある。特に大規模なレガシーコードベースの理解や、クロスファンクショナルなチームでの意図の共有において、自然言語インターフェースはハードルを下げそうだ。導入の際は、Memgraphの運用環境構築やグラフの更新ストラテジーが新たな課題になるだろう。
長期的に見れば、これは「コードと対話する」という開発パラダイムの変化を示唆している。AI駆動の開発支援ツールが単なる補助から、コードベースの意味的構造を理解し操作するパートナーへと進化する過程の一歩と言えそうだ。將來には、CI/CDパイプラインに組み込まれ、リリース前のリスク分析を自動化するなど、より統合的な開発ワークフローへの展開も視野に入る。
しかし、グラフの構築精度と自然言語クエリの解釈精度に依存するこのアプローチは、あらゆるコードパターンや意図を正しくカバーできるのか。特に、暗黙的な知識やビジネスロジックといった、構造だけでは捉えきれない要素をどのように扱うかが、この種のツールの実用性を左右するだろう。
参考
-
「vitali87 /
code-graph-rag」, by **vitali87** — GitHub Trending, 2026-08-10 (ARR)
コメント