1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

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


🎯 なぜ作ったか

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

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

こうした問題を解決するため、プロジェクト内部のパッケージ依存を可視化し、設計違反を検出するツール「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プロジェクトの設計を守りたい人におすすめ
  • プロジェクトの健全性を保つための「設計ヘルスチェックツール」として活用できる
1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?