きらぼしシステム株式会社でエンジニアをしている 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プロジェクトの設計を守りたい人におすすめ
- プロジェクトの健全性を保つための「設計ヘルスチェックツール」として活用できる