depwire について
Depwire は、tree-sitter でソースコードを解析してシンボル単位の依存グラフを作成し、AI コーディングアシスタントにアーキテクチャのコンテキストを提供します。削除、移動、名前変更などの変更をシミュレーションし、影響を受けるインポート、ヘルススコア、セキュリティ検出結果を報告します。AI ツールでコードを編集する開発者を対象としています。
主な機能
- 0116 言語と Angular テンプレートに対応するシンボル単位の依存グラフ
- 02削除、移動、名前変更、分割、統合の What If シミュレーション
- 03グラフを利用したセキュリティスキャン
- 04変更前検証による破損したインポートとヘルス変化の報告
- 05git 参照間の依存グラフの構造的差分
活用シーン
- 01ファイルを削除または移動する前に影響を受ける呼び出し元を確認する
- 02CI でプルリクエストの変更影響分析を実行する
- 03AI コーディングアシスタントに絞り込んだ依存関係のコンテキストを渡す
MCP 対応
MCP サーバーとして、security_scan や verify_change を含む 24 の MCP ツールを公開し、依存グラフの参照と変更分析を MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
24掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| source | string | はい | ローカルディレクトリパス(例:'/Users/me/project')または GitHub URL(例:'https://github.com/vercel/next.js') |
| subdirectory | string | いいえ | 分析するリポジトリ内のサブディレクトリ(任意。例:'packages/core/src') |
詳細
Depwire
あなたの AI はアーキテクチャを知りません。Depwire は知っています。
Depwire の特徴
16 のプログラミング言語と Angular テンプレートに対応しています。Depwire はシンボルを解析し、対応する構文要素間の依存関係を構築します。解決できない関係も記録し、存在しない依存関係を捏造することはありません。
Depwire は、埋め込みや類似性検索を使わず、ソースコードの解析から決定論的な依存関係グラフを構築します。変更案に対して、グラフに存在する関係をたどり、既知の依存先、インポートチェーン、健全性の変化を示します。結果は、パーサーが解析できる言語構文とファイルに依存します。
ビルドグラフでもありません。 Depwire はシンボルレベルの関係を追跡し、What If シミュレーション、グラフを考慮したセキュリティスキャン、影響範囲分析に活用します。
目次
- Depwireの特長
- パフォーマンスに関する根拠
- 課題
- まずはこちら
- インフラストラクチャレイヤー
- 実際のプロジェクトでのテスト
- What If シミュレーション
- セキュリティスキャナー
- アクション実行前の検証
- コミット間の構造的な差分
- 可視化
- 時系列グラフ
- すべてのコマンド
- MCP サーバー — AI 統合
- 言語をまたぐエッジ検出
- アーキテクチャ健全性スコア
- 言語サポート
- SDK
- クラウドダッシュボード
- VSCode 拡張機能
- GitHub Action — PR 影響分析
- pre-commit / prek フック
- Depwire Action Token (DAT)
- ロードマップ
- セキュリティ体制
- パスとファイル数
Depwire は、AI コーディングアシスタントにグラフコンテキストを提供します。プロジェクトを解析して記録済みの関係を調べ、健全性を評価し、変更案をシミュレーションできます。

⭐ Depwire がビルドの失敗を防いでくれたら、リポジトリにスターを付けてください — このプロジェクトの成長につながります。
パフォーマンスに関する根拠
以前公開していたエージェントのベンチマークは、監査の結果、タスクのプロンプトに答えが含まれていたこと、採点対象のファイル群がモノレポで必要な変更よりも狭かったこと、また一方の実行環境だけ異なる作業ディレクトリから開始していたことが判明したため、撤回しました。その後、修正した環境で探索的なセッションを3回実施しましたが、パフォーマンスや正確性の優位性を立証するものではありません。撤回した実行結果から導いた結論は、引用しないでください。
課題
AI コーディングツールはますます賢くなっています。しかし、根本的な盲点は残っています。コードに手を加える前に、アーキテクチャを把握していないのです。
たとえば、AI アシスタントにユーティリティファイルの削除を頼むと、警告もなく削除します。
その後、ビルド時になって、そのファイルをまだインポートしている下流の利用箇所が明らかになります。
アシスタントは、その利用箇所を調べずに1つのファイルだけを見ていました。
これはモデルの問題ではありません。コンテキストの問題です。AI は状況が見えないまま作業しています。
インフラストラクチャレイヤー
Depwire は、AI が生成したコードのためのコンテキストおよび安全性レイヤーです。
Depwire は tree-sitter を使って、サポート対象のソース構文から依存関係グラフを構築し、24個の MCP ツールを通じて AI アシスタントに提供します。
仕組み:
- ローカル — CLI はお使いのマシン上でソースコードを解析し、利用状況のテレメトリーを収集しません。ソースコード、ファイル名、グラフデータ、解析結果をアップロードすることはありません。該当する
securityスキャンは、依存関係の脆弱性とサプライチェーンのチェックをデフォルトで実行します。これらのチェックでは、パッケージレジストリや公開アドバイザリデータベースに接続する場合があります。GitHub URLを指定すると、connect_repoは GitHub にアクセスします。What If のブラウザーページは、CDN から D3 を読み込みます。Cloud は別のサービスです。 - セキュリティスキャナー — ローカルのコードチェックと該当する依存関係監査をデフォルトで実行します。Depwire API キーは不要です。
- トークン効率 — Depwire は事前計算済みのグラフデータを提供するため、エージェントはファイル全体を広く出力する代わりに、対象を絞った依存関係のコンテキストを要求できます。
- 決定論的 — tree-sitter によって、モデルの推論に頼らず、一貫した構造解析を実現します。
まずはこちら
npm install -g depwire-cli
対応するコードベースで実行する3つのコマンド:
depwire whatif # simulate a proposed change
depwire security # scan for supported finding patterns
depwire viz # view the recorded dependency graph
実際のプロジェクトでのテスト結果
| プロジェクト | 言語 | ファイル数 | シンボル数 | エッジ数 | 健全性 |
|---|---|---|---|---|---|
| google/guice | Java(マルチモジュール、13モジュール) | 647 | 30,592 | 10,081 | 31/100 |
| honojs/hono | TypeScript | 352 | 6,462 | 2,194 | 41/100 |
| apache/commons-lang | Java(シングルモジュール) | 624 | 29,723 | 9,037 | — |
| pallets/flask | Python | 79 | 2,005 | 851 | — |
| dart-lang/shelf | Dart | 108 | 1,639 | 219 | — |
| rstudio/plumber | R | 197 | 1,194 | 219 | — |
| payloadcms/payload | TypeScript | 645 | 9,292 | 3,511 | — |
公開リポジトリでの過去の
depwire parse実行結果です。最後に検証したバージョンは v1.8.2(2026年6月)です。v1.9.0より前の測定値です。 v1.9.0では、シンボル数、エッジ数、健全性スコアに直接影響するパーサーのバグ(二重に出力されるシンボル、型のみのインポートエッジの欠落、誤った孤立ノード)を修正しました。その後のリリースでは、グラフの内容と健全性の算出方法が再び変更されています。これらの数値は再測定されておらず、現在の結果ではありません。
What If シミュレーション
変更を加える前に、影響範囲を把握できます。
depwire whatif . --simulate delete --target src/utils/encode.ts
honojs/hono での実際の出力 — 352ファイル、6,245シンボル:
Health Score: 41 → 41 (+0 → unchanged)
Affected Nodes: 29
Broken Imports: 30
• src/utils/jwt/jwt.ts imports decodeBase64Url
• src/adapter/aws-lambda/handler.ts imports encodeBase64
• src/utils/basic-auth.ts imports decodeBase64
[27 more...]
Removed Edges: 32
v1.9.0より前の測定値です。v1.9.0のパーサー修正前に取得したもので、再測定されていません。
シミュレーションは、ソースファイルを変更せずに読み込み済みのグラフ上で実行されます。グラフの読み込みや解析にはファイルI/Oが必要です。
5つの操作:
depwire whatif . --simulate delete --target src/utils/encode.ts
depwire whatif . --simulate move --target src/utils/encode.ts --destination src/core/encode.ts
depwire whatif . --simulate rename --target src/utils/encode.ts --destination src/utils/encoder.ts
depwire whatif . --simulate split --target src/services/auth.ts --symbols "validateToken,refreshToken"
depwire whatif . --simulate merge --target src/utils/helpers.ts --merge-target src/utils/formatters.ts
--simulate を付けずに実行すると、ブラウザーUIが開き、現在の状態とシミュレーション後の状態を並べて表示するアーク図が表示されます。
モジュールをまたぐ依存関係の分析
複数モジュールのMavenおよびGradleプロジェクトでは、Depwireは単一モジュール内だけでなく、モジュール境界をまたいでインポートを解決します。
例:google/guice(13モジュールのJava製DIフレームワーク)で Injector.java の削除をシミュレーションする場合:
$ depwire whatif . --simulate delete --target core/src/com/google/inject/Injector.java
Action: DELETE core/src/com/google/inject/Injector.java
Affected Nodes: 128
Broken Imports: 124 (cross-module: 106 across 10 extension modules)
v1.9.0より前の測定値です。google/guiceはJavaプロジェクトであり、Javaパーサーの二重出力バグ(v1.9.0で修正)がこの数値に影響します。再測定されていません。
モジュールをまたぐ解決により、影響分析でモジュール境界を越えた対応関係を報告できます。
対応しているビルドシステム:
- Maven(
<modules>宣言を含むpom.xml、再帰的なネストモジュール) - Gradle(
include()宣言を含むsettings.gradle/settings.gradle.kts)
標準(src/main/java)と非標準(src/)の両方のソース配置に対応しています。
セキュリティスキャナー
Depwire のセキュリティスキャナーは、ローカルで検出結果を報告し、設定された CI ゲートを失敗させることができます。
depwire security . # full repo scan
depwire security . --target src/auth.ts # single file
depwire security . --format sarif # GitHub Security tab integration
depwire security . --fail-on high # CI gate — exit 1 if HIGH or above
depwire security . --class secrets # specific check only
depwire security . --no-dependency-audit # skip dependency checks and their network requests
10 のチェックカテゴリ — 依存関係の CVE、プロセスの安全性、認証情報の管理、パスの安全性、認証の安全性、入力検証、情報漏えい、暗号の脆弱性、出力エンコーディングの安全性、アーキテクチャレベルのリスク。
該当するセキュリティスキャンでは、デフォルトで依存関係の脆弱性とサプライチェーンのチェックが実行されます。これらのチェックでは、パッケージレジストリや公開アドバイザリデータベースに接続する場合があります。これらのチェックとネットワークリクエストをスキップするには、--no-dependency-audit を使用してください。それ以外のチェックは引き続き実行されます。security_scan MCP ツールと SDK では、同じ動作を dependencyAudit: false で指定できます。--class secrets のように依存関係チェックを除外するクラスを選択した場合も、監査リクエストはスキップされます。
グラフを考慮した重大度判定では、検出結果の分類時に、MCP ツールと HTTP ルートから記録された到達可能性が使用されます。
MCP ツール security_scan および depwire-cli/sdk から利用できます。
変更適用前の検証
提案された変更を適用する前に分析します。解決済みの変更後グラフがある場合は、インポートの破損、循環グループの変更、健全性の変化、セキュリティ上の検出結果を報告します。編集したコンテンツのみ、または unified diff のみを使ったエクスポート比較では、循環グループの安全性を判定できません。この場合は cyclicGroupChanges.status: not_comparable が返され、変更が安全であるとは認定されません。
depwire verify-change --file src/auth.ts --content-from new-auth.ts
depwire verify-change --diff changes.patch
depwire verify-change --file src/auth.ts --content-from new-auth.ts --json
cat new-auth.ts | depwire verify-change --file src/auth.ts
CI との統合:
depwire verify-change --diff pr.patch --fail-on-warnings --quiet
# exits 1 for medium risk, 2 for high risk
MCP ツール verify_change および CLI コマンド depwire verify-change から利用できます。
コミット間の構造差分
ブランチ、タグ、コミットハッシュ、HEAD~N など、任意の 2 つの git ref 間で依存関係グラフを比較します。
depwire diff main feature/auth-refactor
depwire diff HEAD~5 HEAD --verbose
depwire diff v1.5.0 v1.6.0 --json | jq
この差分では、LLM を使わずにグラフ比較を行います。未コミットの変更を一時的に退避し、分析後に復元を試みます。復元に失敗した場合は、手動での復旧が必要であることが報告されます。
オプション:--json(機械可読形式)、--verbose(すべてのシンボル/エッジを名前付きで表示)、--no-security/--no-health(実行を高速化)。
可視化

depwire viz
グラフに含まれるファイルと関係を示すインタラクティブなアーク図です。ホバーして詳細を確認し、クリックして絞り込み、PNG または SVG としてエクスポートできます。
時系列グラフ

depwire temporal
git の履歴に記録されたアーキテクチャの変化を確認できます。タイムラインスライダーでコミットを移動すると、アーク図が更新されます。
すべてのコマンド
| コマンド | 説明 |
|---|---|
depwire viz | ブラウザーでインタラクティブなアーク図を表示 |
depwire whatif | コードに手を加える前に変更をシミュレーション |
depwire verify-change | 提案された変更を分析 — インポートの破損、健全性の差分、セキュリティ、比較の制限 |
depwire security | 脆弱性をスキャン — グラフを考慮した重大度判定 |
depwire health | 6 つの観点からアーキテクチャの健全性を 0~100 で評価 |
depwire dead-code | 信頼度付きでデッドコード候補を検出。JSON 出力には reasonCode が含まれます |
depwire docs | 13 件のアーキテクチャドキュメントを生成 |
depwire temporal | git の履歴に沿ったアーキテクチャの変化を可視化 |
depwire parse | 依存関係グラフを解析し、JSON としてエクスポート |
depwire prompt | AI エージェント向けに、グラフ優先のワークフロープロンプトを取得 |
depwire diff | 2 つの git コミット間の構造差分 — シンボル、エッジ、健全性、セキュリティ |
depwire mcp | AI コーディングアシスタント向けの MCP サーバーを起動 |
各コマンドにはプロジェクトパスを指定できます。depwire parse では、指定されたディレクトリを使用します。省略した場合は現在のディレクトリが使用されます。
depwire prompt — AI エージェント向けのグラフ優先ワークフロー
# Get the graph-first workflow prompt for your agent
depwire prompt # generic
depwire prompt --tool claude # Claude Code optimized
depwire prompt --tool cline # Cline optimized
depwire prompt --tool codex # Codex optimized
複雑なタスクを開始する前に、出力をエージェントのシステムコンテキストとして貼り付けてください。
MCP サーバー — AI 統合
Depwire を MCP 対応の任意の AI ツールに接続できます。AI は自律的に呼び出せる 24 個のツールを利用できます。
Claude Desktop — ~/Library/Application Support/Claude/claude_desktop_config.json に追加します。
{
"mcpServers": {
"depwire": {
"command": "npx",
"args": ["-y", "depwire-cli", "mcp"]
}
}
}
保存済みのグラフを使って MCP を起動する場合:
# Parse once (writes depwire-output.json)
depwire parse .
# Output defaults to the parsed project directory; --output takes precedence
depwire parse ./services/api --output ./artifacts
# MCP starts from the saved graph
depwire mcp .
# Flags:
depwire mcp . --from-cache # error if no cache found
depwire mcp . --no-cache # force full re-parse
depwire parse [directory] は、指定したディレクトリを読み込みます。省略した場合は cwd を読み込みます
(親ディレクトリにさかのぼってプロジェクトを探すことはありません)。--output <dir> を指定すると
depwire-output.json をそのディレクトリに書き込みます。指定がない場合は [directory]、それもなければ cwd に書き込みます。
相対パスは cwd を基準に解決されます。--output はディレクトリです。
| 解析結果 | 終了コード | 結果 |
|---|---|---|
| 1 つ以上のファイルの解析に成功 | 0 | グラフをエクスポート |
| 一部のファイルの解析に成功し、一部に失敗 | 0 | 部分的なグラフをエクスポート。致命的でない警告を stderr に出力 |
| 解析されたファイルがない(空、非対応、除外対象、サイズ超過、またはすべて失敗) | 2 | 明確なメッセージを stderr に出力。グラフはエクスポートされません |
| ディレクトリの走査、グラフの構築、または出力の書き込みに失敗 | 1 | エラーを stderr に出力 |
SDK の呼び出し元は、parseProject(...).errorFiles でファイルごとの失敗を受け取ります。
length と errorFiles の両方を確認する必要があります。エクスポートされるグラフ形式に変更はありません。
部分的な解析に関する診断情報は、JSON グラフに含まれません。解析に失敗しても、以前の出力ファイルが置き換えられたり削除されたりすることはありません。そのため、CI ではそのファイルを利用する前に終了コードを確認する必要があります。
Cursor — Settings → Features → Experimental → Enable MCP → Add Server:
- コマンド:
npx - 引数:
-y depwire-cli mcp
自動生成されるプロジェクトコンテキスト
depwire parse . を実行すると、Depwire はモジュール構成、主要なファイル、健全性の概要、MCP クイックスタートコマンドを含む、プロジェクト固有のコンテキストファイル .depwire/AGENTS.md を生成します。
生成されたコンテキストを Claude Code に読み込ませるには、CLAUDE.md から参照します。
# In your project root CLAUDE.md:
echo "## Depwire Context" >> CLAUDE.md
echo "Read .depwire/AGENTS.md for codebase architecture." >> CLAUDE.md
この参照により、MCP ツールを呼び出さなくても、生成されたプロジェクトコンテキストを利用できます。

24 個の MCP ツール
| ツール | 説明 |
|---|---|
connect_repo | 任意のローカルプロジェクトまたは GitHub リポジトリに接続します |
get_architecture_summary | プロジェクトの概要を簡潔に表示します |
get_file_context | インポート、エクスポート、依存元を含む完全なコンテキストを表示します。言語をまたぐ接続も含まれます。 |
get_dependencies | シンボルが依存しているものを確認します |
get_dependents | このシンボルに依存しているものを確認します |
get_symbol_info | 任意のシンボルの詳細を調べます |
search_symbols | コードベース全体から名前でシンボルを検索します |
list_files | 統計情報とともにすべてのファイルを一覧表示します |
impact_analysis | シンボルを変更すると何が壊れるかを確認します。言語をまたぐ依存関係も含まれます。 |
visualize_graph | インタラクティブなアーク図を生成します |
get_health_score | 推奨事項付きの 0~100 の健全性スコアを表示します |
find_dead_code | 信頼度と reasonCode の根拠を含む、デッドコードの候補を表示します |
get_project_docs | 自動生成されたコードベースのドキュメントを取得します |
update_project_docs | 必要に応じてドキュメントを再生成します |
get_temporal_graph | Git 履歴に基づくアーキテクチャの変遷を表示します |
simulate_change | コードを変更する前に、移動/削除/名前変更/分割/統合をシミュレーションします。健全性の変化、壊れるインポート、影響を受けるノードを返します。言語をまたぐ依存関係も含まれます。 |
security_scan | グラフを考慮して深刻度を引き上げながら、脆弱性をスキャンします。API キーは不要です。 |
verify_change | コード変更を適用する前に、安全性レポートを表示します。壊れるインポート、循環グループの変化(または明示的な利用不可の理由)、健全性の変化、影響を受けるファイルを返します。depwire verify-change CLI としても利用できます。 |
claim_files | マルチエージェント連携:変更するファイルを宣言し、ほかのクライアントが競合を避けられるようにします。 |
release_files | 以前に行ったファイルの確保を解除します。 |
get_active_claims | 現在、誰が何に取り組んでいるかを確認します。 |
record_decision | 今後のセッションで参照できるよう、構造化された決定を保存します。 |
get_decisions | クエリ、セッション、ファイル、またはタグで過去の決定を取得します。 |
affected_files | ファイルまたはシンボルの変更によって影響を受けるファイルとテストを検索します。 |
.depwire/ のランタイム状態
連携ツール(claim_files、release_files、get_active_claims、record_decision、get_decisions)は、ランタイム状態を .depwire/claims.jsonl と .depwire/decisions.jsonl に書き込みます。これらをプロジェクトの .gitignore に追加してください。
.depwire/claims.jsonl
.depwire/decisions.jsonl
言語をまたぐ依存関係の検出
Depwire は、異なる言語で記述されたファイル間の接続を検出します。
たとえば、対応している TypeScript の fetch('/api/users') 呼び出しと、Python の @app.get('/api/users') ルート定義をパスによって照合できます。記録された依存関係は、ルートを変更した場合の影響分析に利用できます。
対応するパターン:
- REST API の依存関係 — fetch/axios の呼び出しを、Express、FastAPI、Flask、Gin のルート定義と照合します
- サブプロセスの依存関係 — execSync/subprocess.run の呼び出しを、グラフ内の対象ファイルと照合します
記録された言語をまたぐ依存関係は、What If シミュレーション、影響分析、セキュリティスキャン、可視化に使用されます。
アーキテクチャ健全性スコア
cyclicGroups ディメンションは、相互依存グループに属するグラフを持つファイルの割合と、最大グループのサイズを測定します。グループ数、循環ファイル数、カバレッジ、最大グループサイズをそれぞれ報告します。グループ数はスコアに影響しません。グループには既存の健全性エッジポリシーを適用します。通常の型参照は除外し、従来の型のみのインポートの正規化は維持します。証拠パスは、すべての循環を列挙せずに各グループを示します。
従来の循環数は不完全で、走査順序に依存していました。この数値は再定義せず、削除されました。健全性の結果には
dimensions_v の手法マーカーが含まれます。手法の異なる結果間では、傾向の改善・悪化の差分は表示されず、変更内容が説明されます。グラフ形式は 2 のままです。この修正は、古い数値がすべて誤っていたことを意味するものではありません。非循環グラフの数値は正しくゼロであり、一部の数値は一致していました。
シミュレーションでは、新たに循環したファイル、循環から解放されたファイル、追加・削除された循環ファイル、グループの結合・分割、グループ内部のエッジ変更をそれぞれ個別に報告します。既存の 2 つのグループを結合しても解決とはなりません。また、循環ファイルを削除しても、残存ファイルが解放されたことにはなりません。
depwire health .
レポートでは、結合度、凝集度、循環依存グループ、ゴッドファイル、孤立ファイルとデッドコード、依存の深さの 6 つのディメンションを採点します。成績、推奨事項、比較可能な実行間の傾向も含まれます。
v1.6.1 のスコア変更に関する注意: v1.6.1 では、デッドコードのスコアリング手法を修正し、デッドコードの候補として、依存元が 0 のエクスポートシンボルのみを数えるようにしました。以前は、ローカル変数やクラス内部の要素も誤って含まれていたため、内部構造が複雑なモジュールを持つコードベースでは、デッドコードの比率が過大になっていました。v1.6.1 以降の健全性スコアは、それ以前のバージョンのスコアと直接比較できません。
SDK
Depwire は、プログラムからの利用や CI パイプライン向けに、安定したパブリック API を公開しています。
npm install depwire-cli
import {
parseProject,
buildGraph,
calculateHealthScore,
analyzeDeadCode,
generateDocs,
scanSecurity,
SimulationEngine,
detectCrossLanguageEdges,
searchSymbols,
getImpact,
getArchitectureSummary,
DepwireSDKVersion
} from 'depwire-cli/sdk';
SDK は安定したパブリック API サーフェスです。すべてのインテグレーションでは depwire-cli/sdk からインポートしてください。内部パスからインポートしないでください。
Depwire を選ぶ理由
| Depwire | RAG ベースのツール | LLM によるスキャン | |
|---|---|---|---|
| アプローチ | AST から導出した依存関係グラフ | ベクトル類似度 | ファイルの直接検査 |
| リファクタリング時のコンテキスト | 呼び出しとインポートの関係 | 意味的に検索されたチャンク | モデルが選択したファイル |
| コンテキストの形式 | 焦点を絞ったグラフクエリ | 検索されたテキストチャンク | 可変 |
| クロスランゲージ | REST + サブプロセスのエッジ | 実装に依存 | モデルに依存 |
| セキュリティスキャナー | グラフを考慮した重大度判定 | 実装に依存 | モデルに依存 |
| What If シミュレーション | 利用可能 | 実装に依存 | モデルに依存 |
| JVM のマルチモジュール対応 | モジュール間の解決 | 実装に依存 | モデルに依存 |
| ローカルでの動作 | 対応 | 実装に依存 | 実装に依存 |
言語サポート
TypeScript、JavaScript、Python、Go、Rust、C、C#、Java、C++、Kotlin、PHP、Swift、Mojo、Ruby、Dart、R の 16 言語に加え、Angular テンプレートに対応しています。クロスランゲージ検出は、サポート対象の REST API とサブプロセスのパターンを対象としています。以下のパーサーの説明では、サポートする構文を示していますが、任意のリポジトリ内のすべての関係を捕捉できることを保証するものではありません。カバレッジの境界には、TypeScript、JavaScript、Python の検証済みおよび未検証のインポート形式が記録されています。独立した ソース AST の CI 台帳では、これら 3 言語における固定されたインポートおよび再エクスポートの構文を検証しています。任意のリポジトリやその他の言語で捕捉できることを認定するものではありません。
Java / JVM — クラス、インターフェース、列挙型、レコード、アノテーション、内部クラス、匿名クラス、ラムダ式、Maven pom.xml および Gradle ビルドファイルの依存関係エッジ、Spring Boot のクロスランゲージエッジ(@GetMapping、@PostMapping、@RequestMapping)、JAX-RS / Jakarta EE のルート検出、Spring WebFlux RouterFunction のサポート。 C# / .NET — クラス、インターフェース、レコード、構造体、列挙型、デリゲート、ファイルスコープの名前空間、プライマリコンストラクター、グローバル using、.csproj の ProjectReference および PackageReference の依存関係エッジ、ASP.NET Core のクロス言語エッジ(属性ベースのルーティング+Minimal API)。
C++ / システム — クラス、構造体、共用体、列挙型、名前空間、コンセプト、コルーチン、C++20 モジュール、パラメーターを除去するテンプレートサポート。CMakeLists.txt、Conan、vcpkg の依存関係エッジ解析。Crow、Drogon、Pistache、cpp-httplib のクロス言語ルート検出。仮想関数テーブルとテンプレートの除外によるデッドコード検出。ヘルススコアのチェック:循環インクルード、ヘッダーガードの欠落、巨大なクラス、生ポインターフィールド、仮想デストラクターの欠落。セキュリティスキャナー:メモリー安全性のパターン、書式文字列の問題、メモリー管理パターン、プロセス実行の安全性パターン。
Kotlin / JVM — クラス、データクラス、シールドクラス、オブジェクト、コンパニオンオブジェクト、値クラス、型エイリアス、拡張関数、列挙型クラス、アノテーションクラス。コルーチンへの対応:suspend 関数、GlobalScope の検出、構造化並行性のチェック。build.gradle.kts、build.gradle、settings.gradle.kts の依存関係解析。Spring Boot、Ktor、Http4k、Ktor Resources のクロス言語ルート検出。Android Retrofit の送信エッジ検出。Android ライフサイクルと Spring アノテーションの除外によるデッドコード検出。セキュリティスキャナー:クエリーの安全性パターン、認証情報管理パターン、乱数生成の安全性、not-null アサーションの乱用、Ktor の認証ブロックの欠落。
PHP / Web — 関数、クラス、メソッド、インターフェース、トレイト、列挙型、名前空間、use 文、require/include の依存関係エッジ。手続き型と OOP の両方に対応。Laravel(Route::get/post/put/delete/patch、ミドルウェア)、Symfony(#[Route(...)])、Slim Framework、WordPress REST API(register_rest_route)のクロス言語ルート検出。Guzzle と file_get_contents の HTTP クライアントエッジ検出。WordPress フック、Laravel サービスプロバイダー、Symfony コントローラー、マジックメソッド(__construct、__get、__set、__call)の除外によるデッドコード検出。セキュリティスキャナー:クエリーの安全性パターン、実行時評価の安全性パターン、プロセス実行の安全性パターン、正規表現修飾子の脆弱性、シリアライズの安全性パターン、変数処理の安全性パターン、パスワードハッシュ化の安全性パターン、非推奨の暗号ライブラリ、セキュリティコンテキストでの弱い疑似乱数生成器、認証情報管理パターン。
Swift / Apple — 関数、メソッド、イニシャライザー(init)、デイニシャライザー(deinit)、クラス、構造体、列挙型、プロトコル、拡張、アクター(Swift の並行処理)、プロパティ(var、let)、計算プロパティ、型エイリアス、関連型。Package.swift(SPM)の依存関係解析。Vapor、Hummingbird、Perfect のクロス言語ルート検出。URLSession と Alamofire の HTTP クライアントエッジ検出。AppDelegate/SceneDelegate のライフサイクル、SwiftUI View の body、@IBAction/@IBOutlet、@objc、プロトコル適合、Codable の自動合成、XCTestCase、@main エントリーポイントの除外によるデッドコード検出。セキュリティスキャナー:文字列補間によるクエリー文字列の安全性、Process() の実行安全性、メモリーポインターの安全性パターン、機密データを保存する UserDefaults、弱いハッシュ方式である CC_MD5/CC_SHA1、CryptoKit の Insecure.MD5/SHA1、暗号化コンテキストでの arc4random、App Transport Security のパターン、認証情報管理パターン、ハードコードされた HTTP URL。 Mojo / AI-native (戦略的サポート) — fn(型付き関数)、def(Python 互換関数)、struct(値型)、クラス、trait(インターフェース)、alias(型エイリアスおよびコンパイル時定数)、var/let 宣言、import および from...import 文。パターンベースのパーサー(tree-sitter-mojo は利用できません)。@value、@register_passable、@staticmethod デコレーター、inout/owned/borrowed パラメーター修飾子、SIMD/Tensor/DType 型参照をサポートします。mojoproject.toml の依存関係解析。Python 相互運用の検出(from python import)。Python フレームワークとの相互運用(FastAPI/Starlette)によるクロス言語ルート検出。init/copyinit/moveinit ライフサイクル、trait 実装、MLIR 方言操作、および @export の除外を考慮したデッドコード検出。セキュリティスキャナー:Pointer[T] および DTypePointer のメモリー安全性、Python 相互運用の評価安全性、未初期化メモリーパターン、SIMD の境界安全性、Python random モジュールによる弱い乱数、alias 宣言内のハードコードされたキー、暗号処理コンテキストにおける Python 相互運用経由の hashlib。
Ruby / Web — メソッド定義(def、def self.)、クラス、モジュール、インスタンス変数(@var)、クラス変数(@@var)、定数、attr_accessor/attr_reader/attr_writer、require/require_relative の依存関係エッジ、include/extend/prepend のミックスインエッジ、ブロック、proc、ラムダ、Struct および OpenStruct の定義。ActiveSupport::Concern をサポートします。Gemfile の依存関係解析。Rails(routes.rb の get/post/put/patch/delete/resources/namespace)、Sinatra(ルートと do ブロック)、Rack(config.ru の map/run/use)、Grape API のクロス言語ルート検出。Faraday、Net::HTTP、HTTParty の HTTP クライアントエッジ検出。Rails コントローラーコールバック、ActiveRecord ライフサイクルコールバック、rake タスク、RSpec/Minitest メソッド、concern(included/class_methods ブロック)、initialize、method_missing/respond_to_missing?、Pundit ポリシーメソッド、Devise ストラテジーの除外を考慮したデッドコード検出。セキュリティスキャナー:データベースクエリメソッド内の文字列補間、コマンド実行の安全パターン、ランタイム評価の安全パターン、動的ディスパッチの安全パターン、ファイル操作の安全パターン、YAML デシリアライズの安全性、Marshal デシリアライズの安全性、テンプレートレンダリングの安全パターン、弱いハッシュアルゴリズム(Digest::MD5/SHA1)、弱い乱数(rand と SecureRandom の比較)、認証情報管理パターン、SSL 検証パターン、弱い暗号アルゴリズム。
Dart / Flutter — クラス、abstract クラス、sealed クラス(Dart 3.0+)、ミックスイン、拡張、拡張 enum、typedef、レコード、トップレベル関数および変数、コンストラクター(名前付きおよび factory)、メソッド、ゲッター/セッター、フィールド。相対パス解決を伴う import/export/part/part of/library ディレクティブ。pubspec.yaml の依存関係解析。Flutter ウィジェットツリーの認識:StatelessWidget、StatefulWidget、State サブクラスの検出、build() メソッドの構成追跡。Shelf router、Aqueduct/Conduit、Angel framework、Serverpod エンドポイントのクロス言語ルート検出。Dio、http package、Chopper(@Get/@Post)、Retrofit Dart(@GET/@POST)の HTTP クライアントエッジ検出。Flutter ウィジェットのライフサイクル(initState、dispose、build、didChangeDependencies、didUpdateWidget)、フレームワークのオーバーライドメソッド、シリアライゼーションメソッド(fromJson/toJson/copyWith)、Riverpod プロバイダー、Bloc/Cubit イベントハンドラー、GetX コントローラーのライフサイクル、テストメソッド、モッククラスの除外を考慮したデッドコード検出。セキュリティスキャナー:データベースクエリ内の文字列補間、プロセス実行の安全性、ランタイムリフレクションパターン、ファイルパスの安全性、JSON デコードの検証、WebView JavaScript チャネルの安全性、プラットフォームチャネルの検証、暗号化されていないローカルストレージパターン、認証情報用の弱いハッシュ、安全でない乱数生成、認証情報管理パターン、SSL 証明書の検証、安全でない HTTP 接続、SharedPreferences と FlutterSecureStorage の比較パターン。パターンベースのパーサー(tree-sitter-dart WASM は利用できません)。
R / 統計・データサイエンス — 関数(無名関数やクロージャを含む)、S3/S4/R5/R6 クラス定義、メソッド、変数の代入(<- 形式と = 形式の両方)、library/require/source の依存関係エッジ、NAMESPACE のインポート/エクスポートディレクティブ、DESCRIPTION ファイルの依存関係解析。パターンベースのパーサー(tree-sitter-r は npm で利用できません)。言語をまたぐエッジ検出:plumber の HTTP API ルート定義(@get、@post、@put、@delete、@patch デコレーター)と、それを呼び出すクライアントの照合、Shiny のリアクティブグラフのエッジ(サーバー/UI 関数の接続、observe、reactive、eventReactive、renderXxx の出力バインディング)、httr(GET、POST、PUT、DELETE)と httr2(request と req_perform)による外部 HTTP クライアントのエッジ、DBI のデータベース接続エッジ(dbConnect、dbGetQuery、dbExecute)、reticulate の Python 相互運用エッジ(import_from_path、source_python、py_run_file)。S3/S4 のジェネリック登録、Shiny モジュールのサーバー/UI 関数、testthat/RUnit のテストブロックを除外したデッドコード検出。セキュリティスキャナー:データベースクエリ呼び出しにおける文字列補間、system/system2/shell の実行安全パターン、eval/parse による実行時評価の安全性、ファイルパス処理の安全性、認証情報の管理パターン、統計セキュリティのコンテキストにおける弱い PRNG(鍵素材に対する openssl と sample/runif の比較)、plumber のルートハンドラーにおける未検証の入力。
HTML / Angular テンプレート — Angular コンポーネントテンプレートの解析(*.component.html)。各テンプレートを、同じ場所にある *.component.ts コンポーネントと自動的にペアリングします。Angular テンプレート構文から、コンポーネントセレクター(カスタム要素タグ)、構造ディレクティブ、属性ディレクティブ、イベントバインディング、パイプ参照を抽出します。テンプレートから、参照先のコンポーネントやパイプへの uses エッジを出力します。外部/ライブラリのコンポーネント(Angular 組み込み、PrimeNG、ngx-translate など)は external:: マーカーに解決され、グラフに無関係なノードが作られないよう除外されます。パターンベースのパーサー(Angular テンプレート構文を正規表現で抽出)。
GitHub Action — PR 影響分析
Depwire は、depwire-action GitHub Action を使って CI/CD パイプラインに統合できます。
プルリクエスト向けに設定すると、Action は記録された変更と健全性スコアを含む依存関係の影響レポートを投稿します。設定された CLI バージョンを使用するため、最新リリースとは異なる場合があります。
.github/workflows/depwire.yml に追加します。
name: Depwire PR Impact
on:
pull_request:
branches: [main]
permissions:
contents: read
pull-requests: write
jobs:
depwire:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: '20'
- uses: depwire/depwire-action@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
アーキテクチャに悪影響を与える PR をブロックします。
- uses: depwire/depwire-action@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
fail-on-score-drop: 5
GitHub Marketplace — depwire-action リポジトリ
pre-commit / prek フック
このリポジトリには .pre-commit-hooks.yaml が含まれているため、Depwire は pre-commit や prek などの互換性のあるランナーで、リモートフックとして使用できます。depwire-cli を囲む repo: local ラッパーは不要です。.pre-commit-config.yaml に追加します。
repos:
- repo: https://github.com/depwire/depwire
rev: v1.21.2
hooks:
- id: depwire
args: ["parse", ".", "--stats"]
rev は .pre-commit-hooks.yaml を含むリリースタグです。このフックはリポジトリレベルの解析を実行します(pass_filenames: false)。デフォルトは parse . --stats であり、args が必要なのは、他の CLI オプションを渡す場合や別のコマンドを実行する場合のみです(例:args: ["health", "."])。ランナーは初回の実行時にタグから CLI をインストールし、2 回目以降の解析では .depwire/cache.db を再利用できます。
ステージされたファイルに Depwire が解析する言語またはビルドマニフェストが含まれている場合のみ、このフックが実行されます。解析可能なファイルに変更がないコミットは、No parseable files found で失敗するのではなく、Skipped として報告されます。.gitignore に depwire-output.json と .depwire/ を追加してください。
クラウドダッシュボード
app.depwire.dev — ブラウザーで依存関係グラフ、健全性スコア、デッドコードレポート、AI コードベースチャットを利用できます。ローカルでのセットアップは不要です。
- パブリックリポジトリは無料
- Pro(月額 $9.99)— リポジトリ数無制限、プライベートリポジトリ対応、AI コードベースチャット
VSCode 拡張機能
VSCode の拡張機能パネルで Depwire を検索するか、次を実行してください。
ext install depwire.depwire-vscode
Mac と Windows で動作します。無料でインストールできます。
無料機能:
- インタラクティブな依存関係アーク図
- ファイル数とシンボル数
- アーキテクチャ健全性スコア
Pro 機能($9.99/月):
- 健全性の各指標の内訳(6 指標)
- グラフを考慮した深刻度判定を備えたセキュリティスキャナー
- デッドコード検出
- What If シミュレーション
- Verify Change — コミット前の安全性チェック
- Git コミット間の構造差分
- ファイルコンテキストと依存関係のマッピング
- 時系列グラフ
- マルチエージェント連携
- 意思決定ログ
app.depwire.dev/subscribe で購読してください。
ロードマップ
リリース済み
- アーク図の可視化
- 24 個の MCP ツール
- 多言語サポート(TypeScript、JavaScript、Python、Go、Rust、C、C#、Java、C++、Kotlin、PHP、Swift、Mojo、Ruby、Dart、R、HTML/Angular)
- アーキテクチャ健全性スコア
- デッドコード検出
- 時系列グラフ
- What If シミュレーション — CLI + ブラウザー UI
- セキュリティスキャナー — グラフを考慮した深刻度の引き上げ
- 言語間のエッジ検出 — REST API + サブプロセス
- コミット間の構造差分 —
depwire diff - パブリック SDK —
depwire-cli/sdk - クラウドダッシュボード — app.depwire.dev
- PR Impact GitHub Action
- VSCode 拡張機能 — Mac + Windows、マーケットプレイス
- HTML/Angular テンプレートの解析
- コンストラクター/フィールドの依存性注入解析(Angular サービス、
injectsエッジ種別) - すべての MCP ツールでの Windows パス正規化
- 編集されたコンテンツと差分に明示的な比較上限を設けた
verify_change - ウォーム解析を高速化する SQLite グラフキャッシュ
- 保存済みの
depwire-output.jsonから MCP を高速起動 depwire prompt— AI エージェント向けのワークフロープロンプトdepwire parseの後に.depwire/AGENTS.mdのプロジェクトコンテキストを自動生成
次の予定
- AI が提案するリファクタリング
- 自然言語によるアーキテクチャクエリ
セキュリティ態勢
パーサーはソースファイルを変更したり実行したりせずに読み取ります。CLI コマンドは、グラフ出力、解析キャッシュ、.depwire/AGENTS.md などの派生アーティファクトを書き込むことがあります。連携ツールはそれぞれ独自のランタイム状態を書き込みます。
- tree-sitter でサポート対象の文法を解析します。一部の言語と Angular テンプレートでは、パターンベースのパーサーを使用します
- 可視化サーバーは localhost のみにバインドします
- CLI はソースコード、ファイル名、グラフデータ、分析結果をアップロードせず、利用状況のテレメトリーも収集しません。該当するセキュリティスキャンは、デフォルトで依存関係チェックを実行し、外部の脆弱性サービスに接続する場合があります。
connect_repoは URL が渡されると GitHub にアクセスします。What If のブラウザーページは CDN から D3 を読み込みます。Cloud は独立したサービスです - 機密性の高いシステムディレクトリへのアクセスをブロックします
詳細は SECURITY.md をご覧ください。
コントリビューション
- リポジトリをフォークします
- 機能ブランチを作成します
- 新機能のテストを追加します
- プルリクエストを送信します
- CLA に署名します(最初の PR で自動的に処理されます)
作者
Atef Ataya — AI アーキテクト、著者、Depwire の開発者です。
- YouTube — AI エージェント、MCP、LLM を扱う動画
- The Architect's Playbook: 5 Pillars
Depwire Action Token(DAT)
Depwire Action Token(DAT) は、AI エージェントのアクションに署名するためのドラフト仕様です。CLI のリファレンス実装は開発中です。現在の Depwire リリースでは、すべてのツール呼び出し、ファイル変更、委譲について DAT 監査証跡を発行するわけではありません。
ライセンス
Business Source License 1.1 — 個人および社内での使用は無料です。2029年2月25日に Apache 2.0 に移行します。
商用ライセンスについて:[email protected]
tree-sitter、graphology、D3.js、および Model Context Protocol を使用して構築されています。
パスとファイル数
グラフのファイルパス、シンボル ID のパスプレフィックス、impact、
affected、verify-change、whatif、デッドコード、セキュリティ、および MCP ツールが出力するファイルパスでは、
すべてのプラットフォームで POSIX の / 区切り文字を使用し、解析対象プロジェクトのルートからの相対パスとなります。
ファイルシステムの入出力、projectRoot
メタデータフィールド、出力ディレクトリの引数には、ネイティブの絶対パスが引き続き適しています。ファイルクエリでは、バックスラッシュと先頭の ./ を使用できます。絶対パスでのクエリには、一致するグラフのプロジェクトルートが必要です。ファイル名の大文字と小文字は保持されます。異なる POSIX ファイル名の大文字と小文字は統一されません。
共有グラフ取り込み境界では、ファイル間の解決、グラフ構築、JSON 復元の前に、解析済みレコード(キャッシュレコードやリゾルバーのヒントを含む)を正規化します。ウォッチャーの更新も同じ境界を使用します。graphology グラフを直接構築する SDK 利用者は、正規化されたキーを使用するか、deserializeGraph を通じて読み込む必要があります。既存の JSON グラフは、読み込み時に正規化されます。
affected_files は、ファイルがグラフ内で見つからない場合(除外されたファイルやグラフノードがないファイルを含む)にエラーを返します。正常に解決されたファイルに依存先がない場合は、空の結果を返します。空の結果をクリーンな解析結果と解釈する前に、エラーがないか確認してください。verify-change は、変更されたファイル自体を含む、一意な正規化済みパスを影響範囲として数えます。
- Graph files /
fileCount/totalFiles:グラフノードで表される一意なファイル数です。構造上のファイルノードも含みます。アーキテクチャの概要、ドキュメント、グラフ JSON、MCP では、この定義を使用します。フィルター後のファイル一覧では、返された部分集合を数えます。 - Parsed files /
parsedFileCount(JSON メタデータ)/parsedFiles(MCP アーキテクチャ概要):グラフノードがないものも含め、正常に解析されたファイル数です。失敗したファイルは SDK のerrorFilesに残り、解析済みとしては数えられません。古い JSON にはこの数がない場合があります。その場合、推定値は補わず、省略されます。増分ウォッチャーの変更後は、次回の完全解析までこの数が無効になります。
たとえば、58 件の解析が成功し、そのうち3つがコメントのみのファイルの場合、Parsed files: 58、Graph files: 55 となります。アーキテクチャ機能と MCP では、グラフファイル数として55件を報告します。このリポジトリのアーキテクチャ CLI エントリーポイントは
depwire docs <path> --include architecture --stats です。独立した
architecture コマンドはありません。depwire parse <path> --stats はグラフ統計を出力します。
グラフ形式のバージョンは2です。解決キャッシュは独立してバージョン管理されています。解決方法が変更されると、グラフ形式を変更せずに古い解析レコードのキャッシュが無効になります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。