Python でシステム構成図が描ける Diagrams を試してみた

Python コードでシステム構成図が描ける Diagrams というライブラリを試してみた。

AWS・Azure・GCP・OCI・Alibaba Cloud など主要クラウドのアイコンの他、Kubernetes や各種ツールのアイコンも取り揃えていて、PlantUML みたいな感じで構成図をコードで示せる。

図を出力するために Graphviz というツールが必要になるので、予めインストールしておく。

# MacOS なら Homebrew で
$ brew install graphviz

# Windows なら Chocolatey で
PS> choco install graphviz

そしたら Diagrams を使ってみる。pip や pipenv でインストールできるので、今回は作業ディレクトリを作り、pipenv でインストールしてみる。

$ mkdir practice-diagrams
$ cd $_

# pipenv の準備
$ pipenv --python 3.7

# Diagrams をインストールする
$ pipenv install diagrams

# ファイルを作る
$ touch example.py

任意の Python ファイルを作ったら、そこに実装していく。まずは公式のサンプルコードをパクったりしてみよう。

from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB

# 第1引数を小文字スネークケースにした PNG ファイルが生成される
# show 引数を指定しないか True を与えれば、コード実行時に PNG ファイルを開く。False にすれば画像ファイルを開かない
with Diagram("Grouped Workers", show=True, direction="TB"):
    ELB("lb") >> [EC2("worker1"),
                  EC2("worker2"),
                  EC2("worker3"),
                  EC2("worker4"),
                  EC2("worker5")] >> RDS("events")

こんな感じ。次のように実行すれば、上のコードの場合 grouped_workers.png が生成される。

$ pipenv run example.py

かなり使いやすそうなので、覚えておこう。