drawio-diagram について
ネットワーク図をDraw.ioのネイティブファイルとして生成するか、ブラウザーエディターで開くスキルです。編集可能な図、エクスポート、共有用プレビューを必要とするネットワークエンジニア向けです。
主な機能
- 01ネイティブの .drawio ファイル生成
- 02PNG、SVG、PDFへのエクスポート
- 03ブラウザーエディターで図を開く
- 04Mermaid、XML、CSV入力に対応
- 05エクスポートファイルへの図XML埋め込み
活用シーン
- 01物理・論理ネットワークトポロジーの作成
- 02ドキュメント用の図のエクスポート
- 03CSVから機器一覧図をプレビュー
- 04ブラウザーで編集できる図のリンク共有
MCP 対応
`@drawio/mcp` MCPサーバーを使い、Draw.ioのブラウザーエディターで図を開きます。サーバーはMermaid、XML、CSV形式の内容を受け取り、図のURLを返します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ automateyournetwork/ netclaw --skill drawio-diagramインストール後、Claude Code で/drawio-diagramを入力して読み込まれたか確認します。
詳細
Draw.io ネットワーク図
次の2つの方法でネットワーク図を生成します。
- ネイティブファイルモード — ディスク上に
.drawioXML ファイルを生成し、draw.io デスクトップ CLI(公式 jgraph skill-cli)を使って任意で PNG/SVG/PDF にエクスポートします - ブラウザモード —
@drawio/mcpMCP サーバーを使って、Draw.io ブラウザーエディターで図を開きます(入力形式は Mermaid、XML、CSV)
インストーラーに関する注意:ネイティブ登録と、ドキュメントに記載された MCP_CALL の呼び出しには、インストール済みのコンポーネントランチャーを使用します。初回使用前に readiness.json を確認してください。検出に失敗しても、デバイスの状態を示すものではありません。既存の書き込み承認は引き続き適用されます。
モード1:ネイティブファイルの生成(公式 Skill-CLI)
ネイティブの .drawio ファイルを直接生成します。任意で、図の XML を埋め込んだ状態で PNG、SVG、PDF にエクスポートできます(エクスポートしたファイルも draw.io で編集できます)。
図の作成方法
- リクエストされた図の mxGraphModel 形式の draw.io XML を生成します
- Write ツールを使って、現在の作業ディレクトリに XML を
.drawioファイルとして書き込みます - ユーザーがエクスポート形式を指定している場合(png、svg、pdf)は、
--embed-diagramを指定して draw.io CLI でエクスポートし、その後、元の.drawioファイルを削除します - エクスポートした場合はエクスポートしたファイルを、そうでない場合は
.drawioファイルを開きます
出力形式の選択
ユーザーのリクエストで形式の希望を確認します。
/drawio create a flowchart→flowchart.drawio/drawio png flowchart for login→login-flow.drawio.png/drawio svg: ER diagram→er-diagram.drawio.svg/drawio pdf architecture overview→architecture-overview.drawio.pdf
形式が指定されていない場合は、.drawio ファイルを書き込んで開きます。ユーザーは後からエクスポートを依頼できます。
対応しているエクスポート形式
| 形式 | XML を埋め込み | 備考 |
|---|---|---|
png | はい(-e) | あらゆる環境で表示でき、draw.io で編集可能 |
svg | はい(-e) | 拡大縮小可能で、draw.io で編集可能 |
pdf | はい(-e) | 印刷可能で、draw.io で編集可能 |
jpg | いいえ | 非可逆圧縮で、XML の埋め込みには非対応 |
PNG、SVG、PDF はすべて --embed-diagram に対応しています。エクスポートしたファイルには図の XML 全体が含まれるため、draw.io で開くと編集可能な図を復元できます。
draw.io CLI
draw.io デスクトップアプリには、エクスポート用のコマンドラインインターフェースが含まれています。
CLI の場所の確認
まず drawio を試してください(PATH に含まれている場合に動作します)。見つからない場合は、プラットフォーム固有のパスを使用します。
- macOS:
/Applications/draw.io.app/Contents/MacOS/draw.io - Linux:
drawio(通常は snap/apt/flatpak 経由で PATH に含まれています) - Windows:
"C:\Program Files\draw.io\draw.io.exe"
代替パスを使う前に、which drawio(Windows では where drawio)で PATH に含まれているか確認してください。
エクスポートコマンド
drawio -x -f <format> -e -b 10 -o <output> <input.drawio>
主なフラグ:
-x/--export:エクスポートモード-f/--format:出力形式(png、svg、pdf、jpg)-e/--embed-diagram:出力に図の XML を埋め込みます(PNG、SVG、PDF のみ)-o/--output:出力ファイルのパス-b/--border:図の周囲の境界線の幅(デフォルト:0)-t/--transparent:背景を透明にします(PNG のみ)-s/--scale:図のサイズを拡大縮小します--width/--height:指定した寸法に収めます(縦横比を維持)-a/--all-pages:すべてのページをエクスポートします(PDF のみ)-p/--page-index:特定のページを選択します(1から始まります)
結果を開く
- macOS:
open <file> - Linux:
xdg-open <file> - Windows:
start <file>
ファイル名
- 図の内容に基づいた、わかりやすいファイル名を使います(例:
login-flow、database-schema) - 複数語の名前には、小文字とハイフンを使います
- エクスポート時は、
name.drawio.png、name.drawio.svg、name.drawio.pdfのように二重拡張子を使います。これにより、ファイルに図の XML が埋め込まれていることを示します - エクスポートが成功したら、中間ファイルの
.drawioファイルを削除します。エクスポートしたファイルに図全体が含まれています
モード2:MCP サーバー経由のブラウザーエディター
@drawio/mcp MCP サーバーを使って、Draw.io ブラウザーエディターで図を直接開きます。3種類の入力形式に対応しています。
Mermaid 図(トポロジー図をすばやく作成するのに最適)
python3 $MCP_CALL "npx -y @drawio/mcp" open_drawio_mermaid '{"content":"graph TD\n A --> B"}'
XML 図(正確な配置で、詳細かつスタイルを指定した図を作成するのに最適)
python3 $MCP_CALL "npx -y @drawio/mcp" open_drawio_xml '{"content":"<mxGraphModel>...</mxGraphModel>"}'
CSV 図(デバイスのインベントリに最適)
python3 $MCP_CALL "npx -y @drawio/mcp" open_drawio_csv '{"content":"## label: %name%\nname,refs\nA,B\nB,C"}'
3 つのツールはいずれも、読み取り専用表示にする "lightbox": true と、ダークモードにする "dark": "auto"|"true"|"false" をオプションで指定できます。
ツールは Draw.io の URL を返します。そのまま共有すると、図がブラウザーエディターで開き、編集、エクスポート、保存ができます。
XML 形式のリファレンス
.drawio ファイルは、mxGraphModel のネイティブ XML 形式です。XML を直接生成してください。Mermaid 形式と CSV 形式はサーバー側での変換が必要で、ネイティブファイルとして保存できません。
基本構造
すべての図は、次の構造である必要があります。
<mxGraphModel>
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
</root>
</mxGraphModel>
- Cell
id="0"はルートレイヤーです - Cell
id="1"はデフォルトの親レイヤーです - 複数のレイヤーを使用する場合を除き、すべての図要素で
parent="1"を使用します
一般的なスタイル
角丸の長方形:
<mxCell id="2" value="Label" style="rounded=1;whiteSpace=wrap;" vertex="1" parent="1">
<mxGeometry x="100" y="100" width="120" height="60" as="geometry"/>
</mxCell>
ひし形(判断):
<mxCell id="3" value="Condition?" style="rhombus;whiteSpace=wrap;" vertex="1" parent="1">
<mxGeometry x="100" y="200" width="120" height="80" as="geometry"/>
</mxCell>
矢印(エッジ):
<mxCell id="4" value="" style="edgeStyle=orthogonalEdgeStyle;" edge="1" source="2" target="3" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
ラベル付き矢印:
<mxCell id="5" value="Yes" style="edgeStyle=orthogonalEdgeStyle;" edge="1" source="3" target="6" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
便利なスタイルプロパティ
| プロパティ | 値 | 用途 |
|---|---|---|
rounded=1 | 0 または 1 | 角丸 |
whiteSpace=wrap | wrap | テキストの折り返し |
fillColor=#dae8fc | 16 進数の色 | 背景色 |
strokeColor=#6c8ebf | 16 進数の色 | 枠線の色 |
fontColor=#333333 | 16 進数の色 | テキストの色 |
shape=cylinder3 | 形状名 | データベースの円柱 |
shape=mxgraph.flowchart.document | 形状名 | ドキュメントの形状 |
ellipse | スタイルキーワード | 円/楕円 |
rhombus | スタイルキーワード | ひし形 |
edgeStyle=orthogonalEdgeStyle | スタイルキーワード | 直角のコネクター |
edgeStyle=elbowEdgeStyle | スタイルキーワード | エルボー型のコネクター |
dashed=1 | 0 または 1 | 破線 |
swimlane | スタイルキーワード | スイムレーンコンテナー |
ネットワークエンジニアリング向けの図の種類
1. 物理トポロジー図
デバイス、物理リンク、インターフェイス名、IP アドレス、リンク速度を示します。
python3 $MCP_CALL "npx -y @drawio/mcp" open_drawio_mermaid '{"content":"graph TD\n R1[\"R1\\nCore Router\\n10.255.255.1\"]\n R2[\"R2\\nCore Router\\n10.255.255.2\"]\n SW1[\"SW1\\nDist Switch\\n10.255.255.3\"]\n R1 -->|\"Gi0/0 -- Gi0/0\\n10.1.1.0/30\"| R2\n R1 -->|\"Gi0/1 -- Gi0/1\\n10.1.2.0/30\"| SW1\n R2 -->|\"Gi0/1 -- Gi0/1\\n10.1.3.0/30\"| SW1"}'
2. 論理トポロジー図
ルーティングプロトコルの関係、エリア、AS 番号、VRF を示します。
python3 $MCP_CALL "npx -y @drawio/mcp" open_drawio_mermaid '{"content":"graph TD\n subgraph \"OSPF Area 0\"\n R1[\"R1 ABR\"]\n R2[\"R2 ABR\"]\n end\n subgraph \"OSPF Area 1\"\n R3[\"R3\"]\n end\n R1 --- R2\n R1 --- R3"}'
3. セキュリティゾーン図
ファイアウォール、DMZ、信頼境界、ACL の適用ポイントを示します。
python3 $MCP_CALL "npx -y @drawio/mcp" open_drawio_mermaid '{"content":"graph LR\n subgraph \"Untrusted\"\n INET((Internet))\n end\n subgraph \"DMZ\"\n WEB[\"Web Server\"]\n end\n subgraph \"Trusted\"\n CORE[\"Core Switch\"]\n end\n INET --> FW[\"Firewall\"]\n FW --> WEB\n FW --> CORE"}'
重要:XML の整形式性
- XML コメント内では、二重ハイフン(
--)を絶対に使用しないでください。 XML 仕様では `` 内の--は無効であり、解析エラーの原因になります。単一のハイフンを使うか、別の表現にしてください。 - 属性値内の特殊文字はエスケープしてください:
&、<、>、" - 各
mxCellには、必ず一意のid値を使用してください
モードの使い分け
| シナリオ | モード | 理由 |
|---|---|---|
バージョン管理用の .drawio ファイルを生成する | ネイティブファイル | ディスク上に実ファイルを生成します |
| ドキュメント用に PNG/SVG/PDF をエクスポートする | ネイティブファイル | XML を埋め込んだ CLI エクスポートが可能です |
| 検出データからトポロジーをすばやくプレビューする | ブラウザー | ブラウザー上で瞬時に視覚化できます |
| CSV ベースのインベントリ図を作成する | ブラウザー | CSV 形式は MCP 経由でのみ利用できます |
| Mermaid 構文の図を作成する | ブラウザー | Mermaid の変換は MCP 経由でのみ利用できます |
| オフライン/エアギャップ環境 | ネイティブファイル | ネットワークは不要です |
| 図のリンクを共有する | ブラウザー | 共有可能な URL を返します |
他のスキルとの連携
- pyats-topology を使ってネットワークを検出し、そのデータから図を生成します
- netbox-reconcile を使って、照合ステータス(記録済み/未記録/欠落)に応じてリンクを色分けします
- トポロジー表示には Draw.io を使い、階層表示には markmap-viz を使います
- aci-fabric-audit のデータを使って、ACI ファブリックのトポロジー図を生成します
- gait-session-tracking を使って、図の生成をソースデータへの参照とともに記録します