Graphifyとは——なぜコードをナレッジグラフにするのか
大規模コードベースをAIに理解させるとき、最大のボトルネックはトークン消費だ。10万行のコードベースをAIに読ませるには膨大なトークンが必要で、コンテキストウィンドウの制限にもぶつかる。
Graphifyは、コードベース全体——ソースコード・ドキュメント・PDF・画像・ホワイトボード写真まで——をナレッジグラフに変換するOSSだ。2026年4月3日の公開からGitHub 10,000+ starsに急成長し、AIコーディングツールのエコシステムで注目を集めている。
ナレッジグラフ化の最大のメリットはトークン効率。ソースファイルを直接読む場合と比較して、クエリあたり71.5倍のトークン削減を実現する。AIは関連するサブグラフだけを参照すればよく、ファイル全体を読む必要がない。
3パスパイプライン:グラフ構築の仕組み
Graphifyは3段階のパイプラインでナレッジグラフを構築する。
(コード・ドキュメント・画像)"] --> B["Pass 1: AST解析
(Tree-sitter、LLM不要)"] A --> C["Pass 2: トランスクリプション
(音声・動画ファイル)"] A --> D["Pass 3: LLMセマンティック解析
(Claude サブエージェント並列実行)"] B --> E["NetworkX グラフ"] C --> E D --> E E --> F["Leidenクラスタリング
(コミュニティ検出)"] F --> G["graph.json
(永続化)"] G --> H["AIアシスタント
からクエリ"] G --> I["MCPサーバー
として公開"]
Pass 1: AST解析(決定論的、LLM不要)
Tree-sitterで20のプログラミング言語を解析し、シンボル・呼び出しグラフ・import関係・クラス階層を抽出する。LLMを使わないため高速かつ決定論的。
# AST解析が抽出する情報
- シンボル(関数、クラス、変数)
- 呼び出しグラフ(関数A → 関数B)
- import/依存関係
- クラス継承階層
- エクスポート/公開API
対応言語:Python、JavaScript、TypeScript、Go、Rust、Java、C、C++、Ruby、C#、Kotlin、Scala、PHP、Swift、Lua、Zig、PowerShell、Elixir、Objective-C、Julia
Pass 2: トランスクリプション
音声・動画ファイルが含まれる場合、テキストに変換してからグラフに取り込む。
Pass 3: LLMセマンティック解析
ドキュメント(Markdown、PDF)、画像(スクリーンショット、図、ホワイトボード写真)をClaudeサブエージェントが並列で解析。概念・関係性・設計意図を抽出する。画像はClaude Visionで処理される。
エッジの3種類——情報の出自を正直に記録する
Graphifyの設計で特筆すべきは、すべてのエッジ(関係)に出自ラベルが付与される点だ。
| ラベル | 意味 | 信頼度 |
|---|---|---|
EXTRACTED |
ソースコードから直接抽出(AST解析) | 確実 |
INFERRED |
LLMが推論(信頼度スコア付き) | 高 |
AMBIGUOUS |
LLMが推論したが確信度が低い(要レビュー) | 要確認 |
// graph.jsonのエッジ例
{
"source": "UserService",
"target": "DatabasePool",
"label": "EXTRACTED",
"relationship": "USES",
"confidence": 1.0
}
この透明性により、AIが「確実な事実」と「推論」を区別してユーザーに回答できる。
インストールと使い方
Claude Codeでの導入
# スキルディレクトリにSKILL.mdを配置
mkdir -p ~/.claude/skills/graphify
# GitHubリポジトリからSKILL.mdをダウンロード
curl -o ~/.claude/skills/graphify/SKILL.md \
https://raw.githubusercontent.com/safishamsi/graphify/v3/SKILL.md
PyPIからのインストール
# PyPIパッケージ名は「graphifyy」(yが2つ)
pip install graphifyy
基本コマンド
# Claude Code内で使用
/graphify # カレントフォルダのグラフを構築
/graphify query # グラフにクエリを実行
/graphify path # ノード間のパスを検索
/graphify explain # コンポーネントの説明を取得
# Git Hooksのインストール(コミット時に自動再構築)
graphify hook install
# Gemini CLI連携のセットアップ
graphify gemini install
–watchモード
# ファイル保存時にグラフを自動更新
/graphify --watch
# AST変更(コード)は即座に再構築
# ドキュメント・画像の変更はLLM再解析をトリガー
対応AIツールと統合方法
Graphifyは10以上のAIコーディングツールと統合できる。統合はIDEプラグインではなく、AIアシスタントレイヤーで行われる。
| ツール | 統合方法 |
|---|---|
| Claude Code | ~/.claude/skills/graphify/SKILL.md |
| Codex | .codex/hooks.jsonのPreToolUseフック |
| Cursor | .cursor/rules/graphify.mdc(alwaysApply: true) |
| Gemini CLI | GEMINI.mdセクション+BeforeToolフック |
| OpenCode | .opencode/plugins/のtool.execute.beforeプラグイン |
| GitHub Copilot CLI | 設定ファイルへの追記 |
| Aider | 設定ファイルへの追記 |
MCPサーバーモード
graph.jsonをMCPサーバーとして公開し、構造化されたグラフアクセスを提供することも可能。
// MCP経由で利用できるツール
{
"tools": [
"query_graph", // グラフ全体へのクエリ
"get_node", // 特定ノードの詳細取得
"get_neighbors", // 隣接ノードの取得
"shortest_path" // ノード間の最短パス検索
]
}
類似ツールとの比較
| ツール | スコープ | マルチモーダル | 設計意図の抽出 | クロスリポジトリ |
|---|---|---|---|---|
| Graphify | リポジトリ内+ドキュメント+画像 | 対応 | 対応(LLM抽出) | 非対応 |
| Sourcegraph | クロスリポジトリコード検索 | 非対応 | 非対応 | 対応 |
| CodeGraph | リポジトリ内(Claude Code専用) | 非対応 | 非対応 | 非対応 |
| Code2Vec / Neo4j | エンベディング / グラフDB | 非対応 | 非対応 | 一部対応 |
Sourcegraphはクロスリポジトリのコード検索に強く、Graphifyの補完関係にある。CodeGraphはClaude Code専用でコードのみ対応。Graphifyはマルチモーダル(コード+ドキュメント+画像)かつツール非依存という点で差別化されている。
実用パターン:どんなコードベースで効果的か
効果が高いケース
- 大規模モノレポ:数十万行のコードでコンテキストウィンドウが足りない場合、グラフからの部分クエリが威力を発揮する
- ドキュメントが散在するプロジェクト:Markdown、PDF、Confluence等のドキュメントもグラフに統合し、コードとの関連性を可視化
- 新規参画者のオンボーディング:
/graphify explain UserServiceでコンポーネントの役割と依存関係を即座に把握 - レガシーコードの理解:ドキュメントがないコードでもAST解析で構造を抽出し、LLMが設計意図を推論
効果が限定的なケース
- 小規模プロジェクト(数千行以下)——AIが直接ファイルを読む方が効率的
- 頻繁に変更されるプロトタイプ——グラフ再構築のオーバーヘッドが大きい
# Graphifyの効果を数字で見る(公式ベンチマーク)
# 10万行のPythonプロジェクトの場合
raw_file_reading = {
"tokens_per_query": 143_000, # ソースファイル直接読み
"response_time": "8-12秒",
"accuracy": "中(コンテキスト溢れ)",
}
graphify_query = {
"tokens_per_query": 2_000, # グラフからの部分クエリ
"response_time": "1-3秒",
"accuracy": "高(関連部分のみ参照)",
}
# 削減率: 143,000 / 2,000 ≈ 71.5倍
セキュリティと注意点
- MCPサーバーモードでは、パス検証が強化されている(パスの存在確認+
.json拡張子チェック) - graph.jsonにはコードの構造情報が含まれるため、公開リポジトリへのコミットに注意
.gitignoreにgraph.jsonを追加することを推奨- LLMセマンティック解析にはAPIコストが発生する(初回構築時のみ。増分更新は低コスト)
# .gitignoreに追加
echo "graph.json" >> .gitignore