🌟

goimportmaps: Goパッケージ依存を可視化・バリデートするCLIツール

に公開

きらぼしシステム株式会社でエンジニアをしている mickamy です。
今期の目標で、当社のプレゼンスを高める、というものをおいたので、開発を行う上で得た知見をご紹介したいと思います。
以下、都合により言い切り(ですます調にあらず)です。


🎯 なぜ作ったか

Goプロジェクトが大きくなると、

  • どのパッケージがどこに依存しているか分からなくなる
  • 本来「ハンドラー → ユースケース → リポジトリ」と分けているはずなのに、直接リポジトリをimportしてしまう
  • アーキテクチャ崩れに気づきにくくなる

こうした問題を解決するため、プロジェクト内部のパッケージ依存を可視化し、設計違反を検出するツール「goimportmaps」を作った。

https://github.com/mickamy/goimportmaps


🚀 goimportmapsとは?

goimportmapsは、Goプロジェクトの内部パッケージimportを解析し、

  • 📊 依存グラフの可視化(Mermaid、Graphviz、HTML対応)
  • 🚨 禁止されたimportルールの検出(正規表現対応)
  • ✅ 違反があればexit 1でCI/CDでも検出可能
  • 🧠 クリーンアーキテクチャ、ヘキサゴナルアーキテクチャ向けにも使える

を実現するCLIツール。


🛠 インストール

bash
コピーする編集する
go install github.com/mickamy/goimportmaps@latest


⚡️ 基本の使い方

goimportmaps ./...

実行するだけで、

  • テキスト形式の依存リスト
  • 禁止されたimport違反の検出
  • 違反件数のサマリ

をまとめて出力できる。


📈 可視化例(HTMLレポート)

  • -format=html を指定すると、静的なHTMLレポートを生成できる。
goimportmaps ./... --format=html > report.html

ブラウザで開くと、

  • Mermaidグラフで依存関係を視覚化
  • 違反ノードを赤くハイライト
  • 違反件数サマリも表示

などが一目で分かるレポートになる。


🎯 まとめ

  • Goプロジェクトの設計を守りたい人におすすめ
  • プロジェクトの健全性を保つための「設計ヘルスチェックツール」として活用できる

Discussion