tl;dr;
モチベーション
GitHubでMermaidがサポートされましたが *2、Mermaidで描けないタイプの図があってたまにPlantUMLを使いたくなるので備忘。
ちなみにGitLabやesaやQiita辺りはPlantUMLをサポートしてるのでこの手のハックはしなくていいです。
実際の例
実際の例を見てもらった方がいいと思うので自分のリポジトリを見せます。
他にもうまいやり方は色々やり方はありそうだけど思いついてないです。
pumlファイルを作成
Goのリポジトリなのでビルドターゲットから外すために_img/
のようなディレクトリにしましたが、ディレクトリ名は何でもいいと思います。
pumlファイルからsvgファイルを作成
手元でPlantUMLのjarファイルを管理したくないので僕はよく https://hub.docker.com/r/think/plantuml を使ってます。
Makefile
に下記のようなタスクを置いておけば make puml2svg
でsvgが作れる。
.PHONY: puml2svg puml2svg: cat _img/overview.puml | docker run --rm -i think/plantuml -tsvg > _img/overview.svg
Makefile
にしないまでもpumlからsvgを作るコマンドくらいはREADMEに書いてた方が他の人もメンテできるようになって便利。
リポジトリにはsvgファイルを埋め込む
README.md
で下記のように書けば表示できます。
![overview](_img/overview.svg)
メリット
- svgを作成する手間はあるがdocker以外の依存がないので使い回しがきく
- GitHubにはsvgを埋め込んでるだけなので PlantUML Visualizer - Chrome ウェブストア のような拡張が不要
余談
なんとなく自分のリポジトリを見ていて「この図はMermaid移行した方がよさそうだなー」と思ったんですが、これを消した後に別のリポジトリでPlantUMLを管理したくなった時に自分が困るので後から調べられるようにしたいというのがこのエントリの本当の目的です。
2022/04/13追記
PlantUMLからMermaidに移行した
*1: PlantUMLのファイルの拡張子
*2: https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/