Go モジュールの依存関係を可視化するツール ggm v0.2.0 をリリースした

no extension

前回「Go モジュールの依存関係を可視化するツールを作った」のだが,思ったより有用なことに気がついて「これはちゃんとコードを書こう」と思い立った。

ちうわけで,リリースしました。

今回はちゃんとバイナリも用意しているぞ(笑)

使い方はこんな感じ。

$ ggm -h
Usage:
  ggm [flags] [input file]

Flags:
  -c, --config string   Configuration file
      --debug           Debug flag
  -h, --help            help for ggm
  -v, --version         Output version of ggm

前回と異なるのは -c オプションを付けたことか。 たとえば以下の内容で ggm.toml というファイルを作って

[node]
  fontname = "Inconsolata"

以下のコマンドラインで DOT ファイルを生成すると

$ go mod graph | ggm -c ggm.toml
digraph G {
	ID = "G";
	
	n1[fontname="Inconsolata",label="github.com/spiegel-im-spiegel/ggm"];
	n2[fontname="Inconsolata",label="github.com/BurntSushi/toml\nv0.3.1"];
	n3[fontname="Inconsolata",label="github.com/emicklei/dot\nv0.9.3"];
	n4[fontname="Inconsolata",label="github.com/spf13/cobra\nv0.0.3"];
	n5[fontname="Inconsolata",label="github.com/spf13/pflag\nv1.0.3"];
	n6[fontname="Inconsolata",label="github.com/spiegel-im-spiegel/gocli\nv0.9.5"];
	n7[fontname="Inconsolata",label="golang.org/x/xerrors\nv0.0.0-20190410155217-1f06c39b4373"];
	n1->n2;
	n1->n3;
	n1->n4;
	n1->n5;
	n1->n6;
	n1->n7;
	
}

てな感じで fontname 属性を仕込むことができる。 これを dot コマンドに流し込むと

$ go mod graph | ggm -c ggm.toml | dot -Tpng -o ggm.png
ggm.png
ggm.png

てな風にフォントを Inconsolata にすることができるのですよ(勿論あらかじめフォントがインストールされていることが条件ね)。

-c オプションで指定するファイルは TOML 形式で nodeedge の属性を設定することができる。 ただし手抜き実装で属性名やその値の正しさについてはノーチェックなのでご注意を(つまり key=value で表されるものなら何でも入るw)。

今回 DOT 言語用のビルダ・パッケージには github.com/emicklei/dot を利用している。 シンプルな設計で(簡単な図であれば)使い勝手がよい。

本当は本家の Go コンパイラが DOT 言語で吐いてくれればこんなの要らないんだけどねぇ。

ブックマーク

参考図書

photo
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
丸善出版 2016-06-20
単行本(ソフトカバー)
4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN), 9784621300251 (ISBN)
評価     

著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。

reviewed by Spiegel on 2018-10-20 (powered by PA-APIv5)