draw.ioでAWSアイコンはどう表現されるのか確認してみた
データ事業本部の横山です。
前回の記事でdraw.ioの.drawio / .drawio.svg / .drawio.pngの中身を覗いたのですが、
各ファイル形式がどう実現されているかの確認までで、実際に配置されるアイコン群がどの様に表現されるのかは確認していませんでした。
今回は、AWS 2026のアイコンがどの様に表現されるかについて確認してみたいと思います。
結論
先に結論だけまとめておきます。
- AWSアイコンを1つ配置すると、
.drawioに増えるのは<mxCell>1個だけ- 外枠や他のメタデータには変化なし
- その
<mxCell>の中身は**style属性の2つのキー**の違いでアイコンが表現されているshape=mxgraph.aws4.resourceIcon:「枠付きリソースアイコン」形状を使う場合の指定resIcon=mxgraph.aws4.s3… 枠の中に描くサービスアイコン(S3ならこれ)
- アイコンの色(≒背景色)は個別に指定されているが、AWSのサービスカテゴリで決まっている
- Storage=緑、Compute=オレンジ、Database=マゼンタ等
style属性の各キーが何をしているかを整理するとこんな感じです。
| 要素 | 役割 |
|---|---|
shape=mxgraph.aws4.resourceIcon |
枠(四角い色背景)を描く指定 |
resIcon=mxgraph.aws4.xxx |
枠の中に描くサービス固有のアイコン |
fillColor=#xxxxxx |
カテゴリ色(Storageなら緑#7AA116) |
mxGeometry |
位置とサイズ(デフォルトは78×78) |
また、draw.ioでAWSの図を描くときに触る<mxCell>は、ざっくり下記の4種類に分かれていました。
どれも<mxCell>1個で表現される点は同じです。
styleの中身でで大まかに表示される内容が変わります。
| 分類 | style属性の指定 |
|---|---|
| アイコン(枠付き) | shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.xxx; |
| アイコン(枠なし単体) | shape=mxgraph.aws4.xxx;(resIconなし) |
| グループ枠 | shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_xxx;container=1; |
| 矢印(エッジ) | edgeStyle=orthogonalEdgeStyle;endArrow=block;... |
以降、実際にどうやって確認したかを順に見ていきます。
draw.ioとは
| 項目 | 内容 |
|---|---|
| 正式名称 | draw.io(diagrams.net) |
| 種類 | オープンソースのダイアグラム作成ツール |
| 利用形態 | Web版/デスクトップ版/ VSCode拡張機能 |
| 公式サイト | https://www.drawio.com/ |
フローチャートやシステム構成図など、さまざまなダイアグラムを作成できるツールです。
わたしはVSCode拡張機能を利用することがほとんどです。
前提条件
わたしが動作確認した環境は以下の通りです。
- VSCode + Draw.io Integration拡張機能
- AWSアイコンパレットは「その他の図形+」→「AWS 2026」を有効化
アイコンなし vs アイコンありの差分
まずは一番シンプルに「空のキャンバス」と「S3アイコンを1つだけ置いたキャンバス」で中身を比べてみます。
アイコンなし
<mxfile host="65bd71144e">
<diagram id="vICoNQ3ua1ff6jT8zJnv" name="ページ1">
<mxGraphModel dx="1002" dy="376" grid="1" gridSize="10" guides="1" tooltips="1"
connect="1" arrows="1" fold="1" page="1" pageScale="1"
pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
</root>
</mxGraphModel>
</diagram>
</mxfile>
前回記事にも出てきた最小構造です。
<mxCell id="0">と<mxCell id="1" parent="0">はdraw.ioが必ず生成するルートセルとデフォルトレイヤーです。
アイコンあり(S3アイコン1つ)

中身はこうなっていました。
<mxfile host="65bd71144e">
<diagram id="qw1itF4ArJqKy3B1wWqu" name="ページ1">
<mxGraphModel dx="1002" dy="376" grid="1" gridSize="10" guides="1" tooltips="1"
connect="1" arrows="1" fold="1" page="1" pageScale="1"
pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<!-- ここからが追加分 -->
<mxCell id="2" value=""
style="sketch=0;points=[[0,0,0],[0.25,0,0],...];outlineConnect=0;
fontColor=#232F3E;fillColor=#7AA116;strokeColor=#ffffff;
dashed=0;verticalLabelPosition=bottom;verticalAlign=top;
align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;
shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;"
vertex="1" parent="1">
<mxGeometry x="370" y="160" width="78" height="78" as="geometry"/>
</mxCell>
<!-- ここまでが追加分 -->
</root>
</mxGraphModel>
</diagram>
</mxfile>
points=[[0,0,0],...]の部分は接続ポイントの座標が16個並んでいるだけなので、見やすさのために省略しています。
差分は本当に<mxCell id="2">が1個増えただけです。こうやって中身を見てみるとかなりシンプルですね。
「画像を埋め込んでる」みたいなものではなく、「style属性にアイコンやその他諸々の指定して、描画はdraw.io側が全部やってくれる」という作りになっているみたいです。
共通部分(差分なし)
| 要素 | 内容 |
|---|---|
<mxfile host="65bd71144e"> |
VSCode拡張機能のコンテナID。両ファイル共通 |
<mxGraphModel>の全属性 |
dx, dy, grid, gridSize等すべて同一値 |
<mxCell id="0"/> |
ルートセル(draw.ioが必ず生成) |
<mxCell id="1" parent="0"/> |
デフォルトレイヤー |
AWSアイコンの<mxCell>の中身を確認する。
アイコンがどう表現されているのかが気になるのでstyle属性を重点的に見ていきましょう。
style属性の中身
;区切りでKey-Valueが並んでいるので、一個ずつ意味を書き出してみました。
| プロパティ | 値 | 説明 |
|---|---|---|
sketch |
0 |
手書き風OFF |
points |
[[0,0,0],...] |
接続ポイント座標16個(辺の0/0.25/0.5/0.75/1の位置) |
outlineConnect |
0 |
輪郭への接続OFF |
fontColor |
#232F3E |
標準の濃紺テキスト色 |
fillColor |
#7AA116 |
S3が属するStorageカテゴリの緑色 |
strokeColor |
#ffffff |
白い枠線 |
dashed |
0 |
実線 |
verticalLabelPosition |
bottom |
ラベルをアイコンの下に配置 |
verticalAlign |
top |
ラベルテキストを上寄せ(アイコン直下に密着させる用) |
align |
center |
水平中央揃え |
html |
1 |
ラベルのHTML解釈を有効化 |
fontSize |
12 |
デフォルトフォントサイズ12px |
fontStyle |
0 |
通常スタイル(1=太字、2=斜体、4=下線) |
aspect |
fixed |
アスペクト比固定 |
shape |
mxgraph.aws4.resourceIcon |
AWS4ライブラリの「リソースアイコン形状」 |
resIcon |
mxgraph.aws4.s3 |
具体的なサービス名(S3)の指定 |
含まれている要素の大部分については、拡張機能のUIでも操作できる要素群みたいですね。
S3アイコンたらしめているのは、太字で書いたところで、その他の属性は表示のカスタマイズに関する属性になります。

<mxCell>に含まれる<mxGeometry>について(配置とサイズ)
こちらはアイコン自体自体の指定ではなく、drawioの図形全体にける配置とサイズに関する指定です。
<mxGeometry x="370" y="160" width="78" height="78" as="geometry"/>
| 属性 | 値 | 説明 |
|---|---|---|
x |
370 | X座標 |
y |
160 | Y座標 |
width |
78 | 幅78px |
height |
78 | 高さ78px(aspect=fixedで正方形固定) |
78×78がdraw.ioでAWSアイコンを置いたときのデフォルトサイズみたいです。
わたしとしては、drawioの8目盛(80px)に合わせてくれたらなあと思っています。(若干足りない)

value属性(アイコンラベル)
アイコン下のテキストはvalue属性に入ります。

<mxCell id="2" value="Simple Storage Service (S3)"
style="...;fontSize=12;...;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;"
parent="1" vertex="1">
<mxGeometry x="370" y="160" width="78" height="78" as="geometry"/>
</mxCell>
value属性にラベル文字列がそのまま入るだけで、style側のfontSize=12やmxGeometryには変化がありませんでした。
普通にラベルを付けるだけならこのくらいシンプルです。
ただし、ラベルのフォントサイズや色をUIで変えるとHTMLエンティティで表現される様になります。試しにテキストサイズを16pxに変えてみると、valueの中身はこうなりました。
value="<font style="font-size: 16px;">Simple Storage Service (S3)</font>"
HTMLエンティティを戻すとこうなります。
<font style="font-size: 16px;">Simple Storage Service (S3)</font>
styleのhtml=1が効いているので、valueに書いたHTMLタグがラベルの描画にそのまま反映される仕組みですね。
fillColorはどう決めているのか
S3は緑(#7AA116)、Lambdaはオレンジ(#ED7100)、DynamoDBはマゼンタ(#C925D1)のように、アイコンの背景色がサービスによって違いますよね。
これは個別のアイコンに色が紐付いているのではなく、サービスカテゴリごとに色が決まっているようです。
パレットのカテゴリごとに、実際に並んでいるアイコンのfillColorを見ていくと下表の対応になっていました。
| カテゴリ | fillColor |
色 |
|---|---|---|
| Analytics | #8C4FFF |
紫 |
| Application Integration | #E7157B |
ピンク |
| Artificial Intelligence | #01A88D |
青緑 |
| Blockchain | #ED7100 |
オレンジ |
| Business Applications | #DD344C |
赤 |
| Cloud Financial Management | #7AA116 |
緑 |
| Compute | #ED7100 |
オレンジ |
| Contact Center | #DD344C |
赤 |
| Containers | #ED7100 |
オレンジ |
| Customer Enablement | #C925D1 |
マゼンタ |
| Customer Engagement | #3334B9 |
青 |
| Database | #C925D1 |
マゼンタ |
| Developer Tools | #C925D1 |
マゼンタ |
| End User Computing | #01A88D |
青緑 |
| Front End Web Mobile | #DD344C |
赤 |
| Games | #8C4FFF |
紫 |
| General Resources | #232F3D |
濃紺 |
| Internet of Things | #7AA116 |
緑 |
| Management & Governance | #E7157B |
ピンク |
| Media Services | #ED7100 |
オレンジ |
| Migration & Modernization | #01A88D |
青緑 |
| Network & Content Delivery | #8C4FFF |
紫 |
| Quantum Technologies | #ED7100 |
オレンジ |
| Robotics | #DD344C |
赤 |
| Satellite | #C925D1 |
マゼンタ |
| Security, Identity & Compliance | #DD344C |
赤 |
| Serverless | #8C4FFF |
紫 |
| Storage | #7AA116 |
緑 |
同じカテゴリのサービスは同じ色で、色を見ればだいたいの役割がわかるように設計されているみたいですね。
アイコンのstyleには2パターンある
調べていると、全部のアイコンがresourceIcon(枠付き)パターンというわけではないことに気付きました。
パターン1: resourceIcon(四角い色枠 + 白抜きアイコン)
背景色がついている四角いサービスアイコンがこれです。
shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;
fillColorでカテゴリ色の塗りつぶし四角を背景として描いて、
そこにresIconで指定したアイコンを白抜き(strokeColor=#ffffff)で重ねて表現しているようです。
S3の緑の四角に白いバケツマーク、みたいな見た目になるやつですね。

パターン2: 直接shape指定(枠なし、アイコン単体)

General Resourcesの一部アイコン(User、Clientなど)はこちらでした。
shape=mxgraph.aws4.user;
resIconは使わず、shapeで直接アイコン図形を指定します。
styleを見るとstrokeColor=noneでfillColor=#232F3D(濃紺)や#5A6C86(グレー)が入っていて、アイコンの形そのものが描画されそれを対応色で塗り潰す形で表現されています。
パターン1のような「色の四角い背景」はありません。
グループ枠・矢印について
システム構成図やアーキテクチャ図を描くときは、アイコンだけじゃなくて「AWS Cloud」「Region」「VPC」のような囲み枠や、コンポーネント間をつなぐ矢印もよく利用します。
これらも同じく<mxCell>1個で表現されていました。
グループ枠(AWS Cloud / Region / VPC など)
例えばAWS Cloudの囲みはこんな感じでした。
shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud_alt;
strokeColor=#232F3E;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;
container=1;collapsible=0;...
shape=mxgraph.aws4.group:「グループ(枠)」に対応する指定grIcon=mxgraph.aws4.group_aws_cloud_alt:枠の左上に出る小さなアイコン- リソースアイコンの
resIconと対応する概念
- リソースアイコンの
container=1… 他の<mxCell>を子として含められるコンテナになる

矢印
矢印はedge="1"属性を持つ<mxCell>で、エッジ(辺)として扱われていました。
<mxCell id="2" value="" edge="1" parent="1"
style="edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;elbow=vertical;
startArrow=none;endFill=1;strokeColor=#545B64;rounded=0;">
<mxGeometry width="100" relative="1" as="geometry">
<mxPoint x="520" y="200" as="sourcePoint"/>
<mxPoint x="620" y="200" as="targetPoint"/>
</mxGeometry>
</mxCell>
style属性の中身は置いておいて、<mxGeometry>タグにsourcePoint, targetPointの<mxPoint>が追加されていて始点と終点が表現されていますね。

さいごに
drawioでAWSアイコンがどの様に表現されているのかについて確認してみました。
アイコン、グループ、矢印で違いはあるものの、思っていたよりは複雑なパターンにはなっていないような印象です。
特にAWSアイコンは「shapeとresIconの2つのキーでサービスを指定する<mxCell>」というシンプルな仕組みで成立していました。
これらの情報を元に、「全AWSアイコンを並べた.drawioを機械的に生成できないか」とかが気になってきます。
気が向いたら試してみたいと思います。









