draw.ioでAWSアイコンはどう表現されるのか確認してみた

draw.ioでAWSアイコンはどう表現されるのか確認してみた

2026.05.14

データ事業本部の横山です。

前回の記事で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つ)

with_icon.drawio

中身はこうなっていました。

<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アイコンたらしめているのは、太字で書いたところで、その他の属性は表示のカスタマイズに関する属性になります。

s3_properties

<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)に合わせてくれたらなあと思っています。(若干足りない)

s3_icon_zoom

value属性(アイコンラベル)

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

with_icon_with_value.drawio

<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=12mxGeometryには変化がありませんでした。
普通にラベルを付けるだけならこのくらいシンプルです。
ただし、ラベルのフォントサイズや色をUIで変えるとHTMLエンティティで表現される様になります。試しにテキストサイズを16pxに変えてみると、valueの中身はこうなりました。

value="&lt;font style=&quot;font-size: 16px;&quot;&gt;Simple Storage Service (S3)&lt;/font&gt;"

HTMLエンティティを戻すとこうなります。

<font style="font-size: 16px;">Simple Storage Service (S3)</font>

stylehtml=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の緑の四角に白いバケツマーク、みたいな見た目になるやつですね。

s3_icon_zoom

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

user_icon.drawio

General Resourcesの一部アイコン(User、Clientなど)はこちらでした。

shape=mxgraph.aws4.user;

resIconは使わず、shapeで直接アイコン図形を指定します。
styleを見るとstrokeColor=nonefillColor=#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>を子として含められるコンテナになる

group

矢印

矢印は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>が追加されていて始点と終点が表現されていますね。

arrow

さいごに

drawioでAWSアイコンがどの様に表現されているのかについて確認してみました。
アイコン、グループ、矢印で違いはあるものの、思っていたよりは複雑なパターンにはなっていないような印象です。
特にAWSアイコンは「shaperesIconの2つのキーでサービスを指定する<mxCell>」というシンプルな仕組みで成立していました。

これらの情報を元に、「全AWSアイコンを並べた.drawioを機械的に生成できないか」とかが気になってきます。
気が向いたら試してみたいと思います。

参考資料

この記事をシェアする

関連記事