APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

VS Code でも Mermaid で Azure アイコンを使ったアーキテクチャを書き隊

はじめに

こんにちは、ACS 事業部の田中(脩)です。

ダイアグラムを作成するツールは draw.io が有名です。
私自身も利用していますが、図形の前面/背面の把握が面倒だったり アイコンを1つ動かすと複数の図形が動いたりと、
スマートに作図できずヤキモキすることが多々あります。
コードベースで作図できればと思っていたところ、下記の記事に出会い Mermaid を試すことにしました。

www.kentsu.website

こちらの記事ではブログ上で Azure のアイコンを表示するための手順が紹介されていますが、
業務での利用を考え、Visual Studio Code で プレビューできる方法を模索しました。
本記事ではその設定方法をご紹介します。

設定方法

手順1. 拡張機能をインストールする

Visual Studio Code に拡張機能 Markdown Preview Enhanced をインストールします。
こちらの拡張機能をインストールすれば、Mermaid で記述したダイアグラムがプレビューされるようになります。

marketplace.visualstudio.com

手順2. 拡張機能の設定を編集する

前述の拡張機能をインストールしただけでは Mermaid の標準のアイコンしかプレビューされません。
Azure のアイコンもプレビューされるように、Mermaid の初期設定を編集します。

github.com

  1. VS Code でコマンドパレットを表示する。(F1 キー)
  2. コマンドパレットで Markdown Preview Enhanced: Customize Preview Html Head を入力・選択して、head.html ファイルを開く。
  3. head.html ファイルを下記のように編集する。

編集前

<!-- The content below will be included at the end of the <head> element. -->
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", function () {
    // your code here
  });
</script>

編集後

<!-- The content below will be included at the end of the <head> element. -->
<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()
          ),
      },
    ]);
  };

  if (document.readyState !== 'loading') {
    configureMermaidIconPacks();
  } else {
    document.addEventListener("DOMContentLoaded", () => {
      configureMermaidIconPacks();
    });
  }
</script>

テスト

任意の Markdown ファイルに下記コード(参考記事と同じもの)を記述して、プレビューします。

architecture-beta
    
group rg1(azure:resource-groups)[Resource Group]

    group vnet1(azure:virtual-networks)[Virtual Network] in rg1
        group subnet1(azure:subnet)[Subnet] in vnet1
        service server(azure:virtual-machine)[Server] in subnet1

    service storage(azure:storage-accounts)[Storage] in rg1
    service nsg1(azure:network-security-groups)[NSG] in rg1
    service database(azure:sql-database)[Database] in rg1

    nsg1:L --> R:server{group}

プレビューは下図のように表示され、Azure アイコンが使用できていることが確認できました。

おわりに

本記事は Azure のアイコンを使用したアーキテクチャ図を Mermaid で書き、VS Code でプレビューするための設定方法をご紹介しました。
業務で利用できるレベルのアーキテクチャ図を Mermaid で書けるかどうかは、別途検証していきます。

ACS事業部のご紹介

私達ACS事業部はAzure・AKSなどのクラウドネイティブ技術を活用した内製化のご支援をしております。
ご相談等ありましたらぜひご連絡ください。

www.ap-com.co.jp

また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。

www.ap-com.co.jp

本記事の投稿者: 田中 脩平