背景
VSCode上でdraw.ioを使ってAWS構成図を作成するとき、GUI操作だけでは矢印が背景に隠れたりラベルがアイコンと重なったりする問題に遭遇しました。.drawioファイルの実体がXMLであることを利用して、これらをコードレベルで解決する方法を整理します。
1. .drawioはただのXMLなので直接編集できる
右クリック → 「XMLを編集」
またはメニュー「Extras」→「Edit Diagram」
VSCodeのDraw.io Integration拡張機能(hediet.vscode-drawio)で開いたファイルは、GUIでの図形操作に加えて、XMLエディタから直接テキスト編集できます。GUIでは難しいピクセル単位の精密な位置調整もXML編集なら可能です。
2. z-order(前後関係)は「後に書いた要素が前面」というルール
<!-- 正しい要素の順序 -->
<!-- 1. VPC背景(最背面) -->
<!-- 2. DBサブネットグループ背景 -->
<!-- 3. サブネットグループ -->
<!-- 4. SGボックス枠 -->
<!-- 5. アイコン -->
<!-- 6. 矢印・接続線(最前面 ← 必ず末尾に) -->
draw.ioのXMLは、後に定義された要素ほど前面に描画されます。矢印が背景の四角形に隠れて見えなくなる問題は、たいてい矢印の要素がXML内で背景より前(=画面上では奥)に書かれていることが原因です。矢印の<mxCell>要素をXMLの末尾に移動するだけで解決します。
3. ラベルをアイコンの下に表示するスタイル指定
verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed
デフォルトではアイコンのラベル(テキスト)がアイコン内部に重なって表示され読みにくくなります。このスタイル文字列をアイコンのstyle属性に追記すると、ラベルがアイコンの下部に配置されるようになります。右クリック→「スタイルの編集」からGUIでも同じ変更が可能です。
4. 存在しないアイコン名はピンクの四角として表示される
存在しない: resIcon=mxgraph.aws4.systems_manager_parameter_store
存在する: resIcon=mxgraph.aws4.systems_manager
AWSアイコンライブラリ(AWS4)には全サービスの個別アイコンがあるわけではなく、細かいサブリソース(Parameter Storeなど)は汎用アイコンで代用する必要があります。指定したシェイプ名が存在しないと、ピンク色の四角が表示されるので、これをトリガーに近い名前の汎用アイコンへ差し替えます。
5. Claude CodeにXMLを直接生成させる
依頼例:
RDS MySQL + EC2 の構成図を architecture.drawio として生成して。
VPC(10.0.0.0/16)、パブリックサブネット(EC2)、
DBサブネットグループ(プライベートサブネット2つ)、
SSM Parameter Store への接続も含めて。
.drawioの実体がXMLだと分かっていれば、Claude Codeに直接XMLを生成させて保存するだけで構成図が完成します。.claude/commands/drawio.mdにスラッシュコマンドとしてルール(z-orderの順序・スタイル定義・アイコン対応表)を登録しておけば、/drawio ディレクトリ名の一言で毎回同じスタイルの構成図が自動生成されます。
まとめ
.drawioファイルがXMLであるという性質を理解すると、GUI操作だけでは解決しにくい「矢印が隠れる」「ラベルが重なる」といった問題を、要素の記述順序とスタイル文字列の追記だけで解決できます。この仕組みをそのままClaude Codeへの生成依頼に応用すれば、構成図作成そのものを自動化できます。