Python でシステム構成図が描ける Diagrams を試してみた
Python コードでシステム構成図が描ける Diagrams というライブラリを試してみた。
- Diagrams · Diagram as Code
- GitHub - mingrammer/diagrams: Diagram as Code for prototyping cloud system architectures
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
かなり使いやすそうなので、覚えておこう。