ソフトウェア開発者のための OSS、まとめてみました!

ソフトウェア開発を行なっている自分が、個人的に面白いと思ったプログラムの最新技術や、オープンソースソフトウェア(OSS)をまとめています!

MENU

Python でシステム構成図を書いてみたいなら!「Diagrams」

概要

突然ですが、皆さまはシステム構成図を描いていますでしょうか?

システム構成図とは簡単に説明すると、システム全体の構成を図で表したものを指します。

主にシステムの機能やネットワーク構成、セキュリティ要件などを表現することが可能で、システムの全体像を把握することを容易にし、問題の特定を簡単にしてくれます。

システム構成図を作成することができるとシステム上の問題やクライアントとのコミュニケーションの支援などが容易になり、プロジェクトを円滑に進めることもできる素晴らしいものです。

参考: システム構成図の書き方のコツ3選!作成するメリットや利用できるサイトを紹介 - 比較 BiZ 発注ノウハウまとめ

www.biz.ne.jp

そんなシステム構成図ですが、Google 検索などで検索してみるとどれもきれいに描画されていて、初めてシステム構成図を各方にとってはハードルが高い場合もあるかと思います。

そんな方たちに朗報です!

今回はシステム構成図を簡単にかける OSS を見つけましたので、ご紹介しようと思います。

今回ご紹介する OSS は、プログラミング言語 Python でシステム構成図を簡単に描画することができる「Diagrams」についてご紹介しようと思います。

こちらの「Diagrams」を使えば、主にクラウドシステム構成図を Python を利用して簡単に描画することが可能です!

それでは早速詳細について見ていきましょう!

目次

特徴

Diagrams」の開発コンセプトとしては、設計ツールを使用せずに新しいシステム構成図のプロトタイプを作成するというものでした。

現在ではそのコンセプトを発展させ、簡単にかつ綺麗描画することができるようになりました!

さらに、「Diagrams」では以下のクラウドサービスのシステム構成図を簡単にかけるようにサポートされています。

また、クラウドサービス以外にもオンプレミス用に便利な機能であったり、主要なプログラミング言語フレームワークに対してもシステム構成図を簡単に描画できるようサポートされているということでした。

利用手順

事前準備

Diagrams」を利用するには Python 3.6 以降がインストールされていることが必要です。

インストールしていない場合は事前にインストールを済ませておきましょう。

www.python.org

また、Graphviz という OSS も事前にインストールされていることが必要ということなので、こちらもインストールされていない方は、以下から事前にインストールしておきましょう。

www.graphviz.org

インストール方法

Diagrams」をインストールするには以下のコマンドを実行します。

# pip (pip3) を利用する場合
$ pip install diagrams

# pipenv を利用する場合
$ pipenv install diagrams

# poetry を利用する場合
$ poetry add diagrams

使用感

早速私のほうでもこちらの「Diagrams」を利用してみました!

公式ドキュメントのほうを写経して以下のようなソースコードを作成して Python スクリプトを実行すると、AWS のシステム構成図が描画されていました!

diagrams.mingrammer.com

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

with Diagram("Web Service", show=False):
    ELB("lb") >> EC2("web") >> RDS("userdb")

実行した Python スクリプトは以下。

python diagram.py

実際に生成されたシステム構成図(PNGファイル)は以下。

Diagrams」では上記のように少ないソースコードできれいなシステム構成図を簡単に描画することができるので、これまでシステム構成図を書いたことがない方にとっても良い選択肢になりそうですね!

また、「Diagrams」では項目をリスト化することでシステムをグループ化することができたり、クラスター化して 1 つにまとめたりすることができるようです!

グループ化

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

with Diagram("Grouped Workers", show=False, direction="TB"):
    ELB("lb") >> [EC2("worker1"),
                  EC2("worker2"),
                  EC2("worker3"),
                  EC2("worker4"),
                  EC2("worker5")] >> RDS("events")

クラスター化

from diagrams import Cluster, Diagram
from diagrams.aws.compute import ECS
from diagrams.aws.database import RDS
from diagrams.aws.network import Route53

with Diagram("Simple Web Service with DB Cluster", show=False):
    dns = Route53("dns")
    web = ECS("service")

    with Cluster("DB Cluster"):
        db_primary = RDS("primary")
        db_primary - [RDS("replica1"),
                     RDS("replica2")]

    dns >> web >> db_primary

公式ドキュメントのほうには他にもいろいろな表記方法が記載されていますので、実際にシステム構成図を書いてみようかなと考えている方は、一度こちらの公式ドキュメントを見てみると良いですね!

まとめ

今回は、プログラミング言語 Python でシステム構成図を簡単に描画することができる「Diagrams」についてご紹介しました。

システム構成図を描画することができればシステム全体について理解することができるだけでなく、プロジェクトを円滑に進めることが出来るため、エンジニアとして仕事を進めていく上では必須スキルかと思います。

システム構成図をプログラミング言語で記述してみたいなと思っていた方や、システム構成図をこれから始めて書いてみる方などにとっても最適な選択肢になるかと思います。

Python 言語で簡単に記述することが出来るため、気になった方は一度試してみてはいかがでしょうか?

ライセンス

MIT License

リンク

diagrams.mingrammer.com

github.com