← logs

コード化可能なネットワークトポロジー図を描くツールとしてDiagramsは適しているか検証してみた

2024年9月25日

PythonのDiagramsでネットワーク図をコード化できるか検証

Diagrams

https://diagrams.mingrammer.com/

忙しい人向け結論

コード化可能なネットワークトポロジー図を描くツールとしてDiagramsは適していない

イントロ

Diagramsとは

云々、、

Diagrams を使用すると、クラウド システムのアーキテクチャをPython コードで描画できます。

Diagrams は、Python コードでクラウドインフラやアーキテクチャ図を描画するためのツールで、AWS、GCP、Azure などのクラウドプロバイダーのコンポーネントを簡単に視覚化できるのが特徴です。

使い方

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")

出力例

from diagrams import Diagram
from diagrams.generic.network import Router, Switch, Firewall

with Diagram("Generic Network Topology", show=False):
    router = Router("Router\n192.168.1.1")
    switch = Switch("Switch\n192.168.1.2")
    firewall = Firewall("Firewall\n192.168.1.254")

    router - switch - firewall

from diagrams import Diagram
from diagrams.generic.network import Router, Switch

with Diagram("Simple Network Topology", show=False):
    router = Router("Router\n192.168.1.1")
    switch = Switch("Switch\n192.168.1.2")

    router >> switch

その他

実際に試してみた結果

他の代替ツール

  1. Graphviz: 良さそう

  2. PlantUML: UML 図をコード化して描くためのツール、ネットワークトポロジー図も描けるらしい バス型トポロジーが書けそう

  3. Cytoscape.js: JavaScript ベース

結論