C#依存関係を可視化するDependencyVisualizer
目次
はじめに
本ツールは下記からダウンロードできます
git clone https://github.com/kitsune8848/DependencyVisualizer
あなたのプロジェクトは大丈夫?
「このクラスを変更したら、どこに影響が出るんだろう...」
「なぜこのテストが壊れたのかわからない...」
「新メンバーにコードベースの構造を説明するのが大変...」
プロジェクトが成長するにつれて、クラス間の依存関係は複雑に絡み合います。DependencyVisualizerは、そんな複雑な依存関係を一目で理解できるUML図に変換する、C#開発者のための可視化ツールです。
DependencyVisualizer機能
基本機能
-
VSCodeのPlantUML表示機能を使用してクラス図を表示。VSCodeのLiveView機能によりファイルが更新されるごとにクラス図も自動更新。Alt+Dを押してPlantUMLを起動する必要あり。

-
大規模なソースコードにも高速に適用可能。1万クラスのソースコードに対して数分で解析可能。
-
クラス間の様々な依存を網羅し検出。下記記事の依存をすべて検出します。
このツールで解決できる6つの問題
1. 🔍 影響範囲の把握が困難
問題: 「このクラスを修正したら、どこまで影響するかわからない」
解決: 特定のクラスを起点として、依存関係の「距離」を指定して可視化できます。注目のクラスから距離2以内のクラス群を表示することで、修正時の影響範囲を事前に把握できます。
2. 📚 新メンバーへの説明が大変
問題: 「プロジェクト構造を新しい開発者に説明するのに時間がかかる」
解決: 複雑なコードの口頭説明は不要です。UML図を見せるだけで、システム全体の構造とクラス間の関係性を直感的に理解してもらえます。
3. 🌀 循環依存の発見
問題: 「知らない間に循環依存が発生して、テストやリファクタリングが困難に」
解決: 依存関係を可視化することで、循環依存を一目で発見できます。健全なアーキテクチャを維持するための第一歩です。
4. 🏗️ リファクタリング計画の立案
問題: 「大規模なリファクタリングをどこから始めればいいかわからない」
解決: 依存関係図を見ることで、影響の少ない箇所から段階的にリファクタリングを進められます。また、密結合な部分を特定して優先的に改善できます。
5. 📖 ドキュメント作成の自動化
問題: 「設計書やドキュメントの更新が追いつかない」
解決: コードから自動生成されるUML図なので、常に最新の状態を保てます。手動でのドキュメント作成・更新作業から解放されます。
6. 🤖 生成AIによるアーキテクチャ改善
問題: 「既存のアーキテクチャのどこが悪いのかわからないので、改善活動に手を付けられない」
解決: コードから自動生成されるPlantUMLはテキストベースなので、その情報を生成AIに与えることで、AIはアーキテクチャを容易く理解できます。そこから、アーキテクトの視点での改善案が得られます。
開発環境作成
必要な環境
- Visual Studio Code で動くPlantUMLを実行できること。下記参照
- .NET 8以上の環境(MSBuildがインストールされていなければインストールしてください)
操作方法
- コードをダウンロード
- ダウンロードしたソリューションファイルからVisual Studioを開く
- 実行
- ツールのUIが開かれる
- 解析したいソリューションファイルを選択
- 数秒待つとクラス一覧が表示される
- クラス図を表示したいクラスを選択し、UML出力を実行
- 初回実行時にVSCodeが開かれ、PlantUMLのファイルが開かれる
- VSCodeでAlt+Dを押す(2回目以降もクラス図が更新されなくなったら、押してください)
- クラス図が閲覧できる
まとめ
コードの依存関係を可視化することで得られる価値は計り知れません:
- 品質向上: 問題のある設計を早期発見
- 生産性向上: 影響範囲の把握によるスムーズな開発
- 学習効率向上: 新メンバーの理解促進
- 保守性向上: リファクタリング計画の立案支援
- コミュニケーション向上: チーム間での設計議論の活性化
複雑に絡み合った依存関係という「見えない問題」を「見える問題」に変えることで、あなたのプロジェクトはより健全で、保守しやすく、理解しやすいものになるでしょう。
アペンディクス
MSBuildとRoslynについて
DependencyVisualizerの最大の特徴は、MSBuildとRoslynを活用した高精度な解析です。
MSBuildとは?
MSBuildは、Visual Studioが内部で使用しているビルドエンジンです。プロジェクトファイル(.csprojや.sln)を読み込み、コンパイルに必要な情報をすべて把握しています。
Roslynの役割
MSBuildはプロジェクト情報(参照するアセンブリ、コンパイルオプション、ソースファイルのリストなど)の取得を担当します。実際にC#コードを解析してSyntaxTree(構文木)やSemanticModel(意味モデル)を構築し、クラス間の依存関係を抽出しているのはRoslyn(.NET Compiler Platform)です。
MSBuildから得られた情報をもとに、Roslynがソースコードを解析することで、以下のような依存関係を正確に検出できます:
- クラスの継承関係
- フィールド・プロパティの型
- メソッドのパラメータと戻り値の型
- ジェネリック型パラメータ
- ローカル変数の型推論(var)
この2段階のアプローチにより、「ビルドは通るのに解析では見つからない」「IDEでは認識されるのにツールでは無視される」といった問題を回避できます。要するに信頼性が高いということです。









