くりにっき

フルスタックキュアエンジニアです

PlantUMLで描いた図をGitHubのリポジトリでいい感じに管理したい

tl;dr;

  1. pumlファイル*1を作成
  2. pumlファイルからsvgファイルを作成
  3. リポジトリにはsvgファイルを埋め込む

モチベーション

GitHubでMermaidがサポートされましたが *2、Mermaidで描けないタイプの図があってたまにPlantUMLを使いたくなるので備忘。

ちなみにGitLabやesaやQiita辺りはPlantUMLをサポートしてるのでこの手のハックはしなくていいです。

実際の例

実際の例を見てもらった方がいいと思うので自分のリポジトリを見せます。

他にもうまいやり方は色々やり方はありそうだけど思いついてないです。

pumlファイルを作成

https://github.com/sue445/primap/blob/9cf14512dcc7efc5ee21c627b933bcd81687898b/function/_img/overview.puml

Goのリポジトリなのでビルドターゲットから外すために_img/ のようなディレクトリにしましたが、ディレクトリ名は何でもいいと思います。

pumlファイルからsvgファイルを作成

手元でPlantUMLのjarファイルを管理したくないので僕はよく https://hub.docker.com/r/think/plantuml を使ってます。

Makefile に下記のようなタスクを置いておけば make puml2svgsvgが作れる。

.PHONY: puml2svg
puml2svg:
  cat _img/overview.puml | docker run --rm -i think/plantuml -tsvg > _img/overview.svg

https://github.com/sue445/primap/blob/9cf14512dcc7efc5ee21c627b933bcd81687898b/function/Makefile#L54-L56

Makefile にしないまでもpumlからsvgを作るコマンドくらいはREADMEに書いてた方が他の人もメンテできるようになって便利。

リポジトリにはsvgファイルを埋め込む

README.md で下記のように書けば表示できます。

![overview](_img/overview.svg)

https://github.com/sue445/primap/blob/9cf14512dcc7efc5ee21c627b933bcd81687898b/function/README.md#overview

メリット

余談

なんとなく自分のリポジトリを見ていて「この図はMermaid移行した方がよさそうだなー」と思ったんですが、これを消した後に別のリポジトリでPlantUMLを管理したくなった時に自分が困るので後から調べられるようにしたいというのがこのエントリの本当の目的です。

2022/04/13追記

PlantUMLからMermaidに移行した

github.com