2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSCodeでTypeScriptの依存関係を可視化する拡張機能を作った話

Last updated at Posted at 2025-09-23

🎯 はじめに

「この関数、どこから呼ばれてるんだっけ?」
「このクラス、実は誰にも使われてない説…?」

大規模プロジェクトで開発していると、コードの依存関係が ジャングル化 してきます。
ドキュメントを漁ったり grep するのも限界。頭のキャッシュもすぐ溢れて落ちます。

そこで作ったのが DepEye (Dependency Visualizer)
VSCode上で依存関係を グラフ化して一望 できる拡張機能です。
image.png

動画
usage.gif

👉 Marketplaceはこちら

👀 DepEyeとは

DepEyeは、TypeScript/JavaScriptプロジェクトを解析し、クラスやメソッドの依存関係を インタラクティブなグラフ として可視化する拡張機能です。

できることはこんな感じ:

  • メソッドの依存関係 をグラフ表示

  • 軽量モード(Active File + Open Tabs) から 全プロジェクト解析 まで切替可能

  • ノードやエッジをクリックして該当コードへジャンプ

グラフを 画像出力 して、SlackやNotionで簡単共有

「コードを木の根っこから枝葉まで覗ける拡張」=だから DepEye です。

🤔 なぜ作ったのか

大規模開発で、実装が多岐に渡りすぎて追えない ことが多発していました。

  • 新しい機能を作るたびに「この関数どこで使ってる?」調査に時間が溶ける

  • 実装説明のたびに Miroで依存図を手書き → 正直しんどい

  • 不要な関数やクラスが残ってしまうが、発見が難しい

「これ、VSCode上で完結できればよくない?」と思い立ち、DepEyeを開発しました。
結果、レビューや実装追跡の手間が激減し、不要コードの可視化にもつながっています。

🌲 DepEyeで見えてくること

① 共通化できそうな実装

依存グラフを眺めていると、

  • 複数ファイルで似た処理が散らばっている

  • 同じロジックをちょっと変えて使っている

といったパターンが浮き彫りになります。
「これ共通ユーティリティにできるのでは?」という発見に繋がります。

② 不要コードの発見

逆に、依存グラフで 孤立している関数やクラス は「誰からも呼ばれてない」可能性大。
リファクタリングで「消す/切り出す」判断がスムーズになります。

🛠 技術スタックと工夫

項目 採用技術/工夫 メリット
AST解析 ts-morph 型を意識した解析ができ、JS/TS両対応
グラフ描画 React Flow ズーム・パン・フォーカスが滑らか
状態管理 Zustand 軽量・シンプルで高速
パフォーマンス インクリメンタル解析+キャッシュ最適化 大規模プロジェクトでも落ちない..?
UI Webviewにズーム/フィルタ/モード切替 開発フローを邪魔しない

✍️ 作成の裏話

期間:約1週間
「気づいたら完成してた」レベルの集中開発。

新幹線でバイブコーディング
移動中にスマホからリモート接続して開発。
こちらの記事を参考にさせていただきました。

開発ルール
有名記事を参考に
QiitaやZennの知見をリスペクトしつつ、自分仕様に落とし込み。

📝 最後に

大規模開発での「依存ジャングル探検」に疲れている方、ぜひお試しください。
好評だと、また新幹線で怪しいコーディングを始めるかもしれません。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?