「システム構成図を効率良く描画したい」
「システム構成図をプログラムで作成したい」
このような場合には、Diagramsがオススメです。
この記事では、Diagramsについて解説しています。
本記事の内容
- Diagramsとは?
- Diagramsのシステム要件
- Diagramsのインストール
- Diagramsの動作確認
それでは、上記に沿って解説していきます。
Diagramsとは?
Diagramsは、システム構成図を描くためのPythonライブラリです。
Diagramsを使えば、Pythonコードのみでシステム構成図を作成できます。
そのことを次の画像で表現しています。
上の例では、GCPにおけるシステム構成図が描画されています。
Diagramsでは、GCP含めて以下のプロバイダーに対応しています。
- AWS
- Azure
- GCP
- Kubernetes
- Alibaba Cloud
- Oracle Cloud
いわゆるクラウドというモノですね。
有名どころは、すべて対応しています。
これに加えて、以下もサポート対象となります。
- オンプレミス
- プログラミング言語
- フレームワーク
オンプレミスにも対応しているのは、個人的には嬉しい限りです。
以上、Diagramsについて説明しました。
次は、Diagramsのシステム要件を説明します。
Diagramsのシステム要件
現時点(2022年7月末)でのDiagramsの最新バージョンは、0.21.1となります。
この最新バージョンは、2022年2月9日にリリースされています。
Diagramsのシステム要件では、次の3つがポイントと言えます。
- OS
- Pythonバージョン
- Graphviz
それぞれを下記で説明します。
OS
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
基本的には、OSは問わないということでしょう。
Pythonバージョン
サポート対象となるPythonのバージョンは、以下となっています。
- Python 3.6
- Python 3.7
- Python 3.8
- Python 3.9
- Python 3.10
とりあえず、以下のPython公式開発サイクルをカバーはしています。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
ただし、Python 3.6は2021年末でサポート期限が切れています。
そのため、ここではPython 3.7以降を推奨しておきます。
Graphviz
ダイアグラムの描画には、Graphvizが用いられています。
そのため、Graphvizをインストールする必要があります。
Graphvizのインストールについては、以下の記事で解説しています。
該当するOSの場合は、上記の記事を参考にしてください。
Graphvizがインストール済みの場合は、次のように表示されます。
Diagramsのインストール
検証は、次のバージョンのPythonで行います。
$ python -V Python 3.10.2
まずは、現状のインストール済みパッケージを確認しておきます。
$ pip list Package Version ---------- ------- pip 22.2.1 setuptools 63.2.0 wheel 0.36.2
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、Diagramsのインストールです。
Diagramsのインストールは、以下のコマンドとなります。
pip install diagrams
Diagramsのインストールには、すぐに終わります。
終了したら、どんなパッケージがインストールされたのかを確認します。
$ pip list Package Version ---------- ------- diagrams 0.21.1 graphviz 0.19.2 Jinja2 3.1.2 MarkupSafe 2.1.1 pip 22.2.1 setuptools 63.2.0 wheel 0.36.2
Diagramsは、それほど外部パッケージに依存していません。
依存しているパッケージを見ても、既存の依存関係に影響はなさそうです。
以上、Diagramsのインストールを説明しました。
次は、Diagramsの動作確認を説明します。
Diagramsの動作確認
Diagramsの動作確認を行います。
今回は、オンプレミス(On-Premise)におけるWebサービスを表現します。
実行するコードは、以下。
このコードは公式ドキュメントに掲載されています。
from diagrams import Cluster, Diagram from diagrams.onprem.analytics import Spark from diagrams.onprem.compute import Server from diagrams.onprem.database import PostgreSQL from diagrams.onprem.inmemory import Redis from diagrams.onprem.aggregator import Fluentd from diagrams.onprem.monitoring import Grafana, Prometheus from diagrams.onprem.network import Nginx from diagrams.onprem.queue import Kafka with Diagram("Advanced Web Service with On-Premise", show=False): ingress = Nginx("ingress") metrics = Prometheus("metric") metrics << Grafana("monitoring") with Cluster("Service Cluster"): grpcsvc = [ Server("grpc1"), Server("grpc2"), Server("grpc3")] with Cluster("Sessions HA"): primary = Redis("session") primary - Redis("replica") << metrics grpcsvc >> primary with Cluster("Database HA"): primary = PostgreSQL("users") primary - PostgreSQL("replica") << metrics grpcsvc >> primary aggregator = Fluentd("logging") aggregator >> Kafka("stream") >> Spark("analytics") ingress >> grpcsvc >> aggregator
上記実行した結果、同じディレクトリ上に以下の名前の画像を確認できます。
advanced_web_service_with_on-premise.png
それっぽいシステム構成図です。
結果の画像をコードと比較すれば、何となくコードの意味もわかるでしょう。
プログラムにおいては、「習うより慣れろ」は大事です。
ここまで確認できれば、Diagramsの動作確認はOKでしょう。
以上、Diagramsの動作確認を説明しました。