11
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Mermaid】Azureのアーキテクチャ図をMermaidで書いてみるよ!🧜‍♀️

Posted at

はじめに

システム設計やアーキテクチャを説明する際、図解が必要になることが多々あるかと思います。
この記事ではコードで図を描ける「Mermaid」を使って、Azureのアーキテクチャ図を描いて得た知見を共有します。

Mermaidとは

Mermaidはダイアグラムやチャートを作成でき、GitHubやVSCode、Notion等で利用可能で、簡単に図を描くことができます。
↓Qiitaも対応しており、このような図をさくっと作成することができます。

graph LR;
    A--> B & C & D;
    B--> A & E;
    C--> A & E;
    D--> A & E;
    E--> B & C & D;
sequenceDiagram
    Alice->>Bob: Hello Bob, how are you ?
    Bob->>Alice: Fine, thank you. And you?
    create participant Carl
    Alice->>Carl: Hi Carl!
    create actor D as Donald
    Carl->>D: Hi!
    destroy Carl
    Alice-xCarl: We are too many
    destroy Bob
    Bob->>Alice: I agree

architecture-betaについて

Architecture Diagrams Documentation (v11.1.0+)

mermaid.js v11.1.0+にて「Architecture Diagrams」という構文が追加されたらしく、これを使って案件のAzure構成図を作ればコード管理もできて運用が楽になりそうだなと触ってみることにしました。

調べたところ今回対象となる「architecture-beta」についてですが、まだまだ構文に対応していないサービスが多いためVscodeで検討してみることにしました。

公式サンプル

architecture-beta
    group api(cloud)[API]

    service db(database)[Database] in api
    service disk1(disk)[Storage] in api
    service disk2(disk)[Storage] in api
    service server(server)[Server] in api

    db:L -- R:server
    disk1:T -- B:server
    disk2:T -- B:db

Qiitaも「architecture-beta」に対応しているため、
これくらいの簡易的な構成図であれば画像を用意する必要なく作れるのは素晴らしいですね。

次は、凝った構成図を作れるのか確認してみましょう。
AzureサービスでVnetを跨いだサービスや複数のSubnetが存在するアーキテクチャ構成図を作ってみることにします。

私の書き方が悪いのか、まだbeta版だからなのか
保存する毎にデザインが変わってしまいます。
Aパターン
スクリーンショット 2024-12-15 20.49.21.png
Bパターン
スクリーンショット 2024-12-15 20.49.11.png

Mermaidの良さはdrow.ioやcacooなど他のダイアグラム作成ツールと違い、デザインを意識することなく作成することのできる点だと個人的に思っているため、ある程度複雑な図を作ろうとすると枠線や矢印を動かしたくなるため今後のアップデートで改善されることを期待しています。(まだbeta版ですしね)

アイコンの変え方

現時点でMermaidがデフォルトで対応しているアイコンはcloud, database, disk, internet, server の5つになります。Qiitaに関しても5つのアイコンのみのようです。

アイコンを追加するにはいくつかの手法があるのですが、VScodeの拡張でも設定ができるようです。

  • Markdown Preview Enhanced

こちらの拡張機能を使うことでMermaidのコードを図へ変換し確認することができます。

  1. コマンドパレットから Markdown Preview Enhanced: Customize Preview Html Head を選択して、head.html ファイルを開く
  2. head.html ファイルを下記のように編集する
  <script type="text/javascript">
    const configureMermaidIconPacks = () => {
      window["mermaid"].registerIconPacks([
        {
          name: "azure",
          loader: () => fetch("https://unpkg.com/azureiconkento@1.1.1/azureicons/allicons.json").then((res) => res.json())
        },
        {
          name: "logos",
          loader: () => fetch("https://unpkg.com/@iconify-json/logos/icons.json").then((res) => res.json())
        }
      ]);
    };
    
    if (document.readyState !== 'loading') {
      configureMermaidIconPacks();
    } else {
      document.addEventListener("DOMContentLoaded", () => {
        configureMermaidIconPacks();
      });
    }
    </script>

Azureのアイコンをnpmで公開されている方がいたのでそちらを利用しています。

やったね!アイコンが変わるだけで構成図が5割り増しでいい感じに見えます。
スクリーンショット 2024-12-15 21.13.15.png

まとめ

今回初めてMermaidの「architecture-beta」を利用して構成図を書いてみたのですが、
まだベータ版だからなのかできることがシンプルで非常に描きやすく迷うことがあまりなかったです。
しかし、作成後のデザインが安定しておらず、矢印や枠線が重なり合ったりするため複雑な図を書くのは難しそうです。

クラウドサービスのアイコンはデザインが一新されたり、新しいサービスが追加されたりすることも多いため
容易にアイコンを追加できると嬉しいのですが、現状のMermaidだとアイコンを追加するのに結構ハードルあるのが悩ましいですね。

自プロジェクトでは現在アーキテクチャ図にCacooを利用しているのですが、Git化とかが目的であれば
draw.ioのVSCode拡張とかの方が良かったりするのかもしれません。

以上です!

ではでは!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?