Pythonコードでシステム構成図を描画できるDiagramsのインストール

Pythonコードでシステム構成図を描画できるDiagramsのインストール プログラミング

「システム構成図を効率良く描画したい」
「システム構成図をプログラムで作成したい」

このような場合には、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.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年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の動作確認を説明しました。

タイトルとURLをコピーしました