Mermaid.jsにおけるカラーテーマのカスタマイズ

9分で読めます
Mermaid.jsにおけるカラーテーマのカスタマイズ のサムネイル

はじめに

Next.jsのMDXにMermaidダイアグラムを追加するでは、Next.jsのMDXを使用したブログにMermaid.jsダイアグラムを追加する方法を解説しました。今回は、Mermaid.jsのダイアグラムをこのブログで使用しているTailwind CSSのカラーパレットに合わせてカスタマイズする方法を紹介します。

カスタマイズの基本

Mermaid.jsのテーマは、mermaid.initialize()themeVariablesでデフォルトのテーマをベースとしたオーバーライドが可能です。

TypeScript
mermaid.initialize({
  theme: "base",
  themeVariables: {
    primaryColor: "#f3f4f6",
    primaryTextColor: "#111827",
    primaryBorderColor: "#d1d5db",
    // その他の変数...
  },
});

共通変数

すべてのダイアグラムタイプで共通して使用できる基本的な変数です。背景色・テキスト色・境界線色を統一することで、サイト全体のデザインに馴染むダイアグラムを作成できます。

カスタマイズ要素用途変数例
背景色ノード・ボックスの背景色primaryColor, secondaryColor, tertiaryColor
テキスト色ラベル・説明文の文字色primaryTextColor, secondaryTextColor, textColor
境界線色ノード・ボックスの枠線色primaryBorderColor, nodeBorder, lineColor
フォント設定テキストの書体・サイズfontFamily, fontSize

ダイアグラム固有変数

各ダイアグラムタイプに特化した変数です。シーケンス図のアクターやパイチャートのセクション色など、ダイアグラムごとの特徴的な要素をカスタマイズできます。

カスタマイズ要素用途変数例
シーケンス図アクター・メッセージ線などの表示actorBkg, signalColor, activationBkgColor
パイチャートセクションの色分けpie1pie12, pieTitleTextColor
フローチャートサブグラフ・リンク線の表示clusterBkg, defaultLinkColor
クラス図クラステキストの色classText
ユーザージャーニー図セクションの塗り分けfillType0fillType7

この記事で扱った変数以外にも、ガントチャートやER図など、他のダイアグラムタイプに特化した変数が多数用意されています。詳細はTheme Variablesを参照してください。

カスタマイズ例(ライトモード)

このブログで実際に使用している設定です。背景・テキスト・境界線の共通変数をグレースケールで統一し、サイト全体のデザインに馴染むダイアグラムを実現しています。明るいグレー(gray-100, gray-200)を背景に、暗いグレー(gray-800, gray-900)をテキストに使用してコントラストを確保しています。

TypeScript
mermaid.initialize({
  theme: "base",
  themeVariables: {
    // 背景色
    primaryColor: "#f3f4f6",        // gray-100
    secondaryColor: "#e5e7eb",      // gray-200
    tertiaryColor: "#f3f4f6",       // gray-100
    background: "#ffffff",          // white
    mainBkg: "#f9fafb",             // gray-50
    
    // テキスト色
    primaryTextColor: "#111827",    // gray-900
    secondaryTextColor: "#4b5563",  // gray-600
    tertiaryTextColor: "#6b7280",   // gray-500
    textColor: "#1f2937",           // gray-800
    
    // 境界線色
    primaryBorderColor: "#d1d5db",  // gray-300
    nodeBorder: "#9ca3af",          // gray-400
    lineColor: "#d1d5db",           // gray-300
  },
});

カスタマイズ例(ダークモード)

ダークモードでは、背景とテキストの色を反転させています。暗いグレー(gray-700, gray-800)を背景に、明るいグレー(gray-50, gray-100)をテキストに使用し、明度を下げながらも十分なコントラストを保つことで可読性を確保しています。

TypeScript
mermaid.initialize({
  theme: "base",
  themeVariables: {
    // 背景色
    primaryColor: "#374151",        // gray-700
    secondaryColor: "#6b7280",      // gray-500
    tertiaryColor: "#374151",       // gray-700
    background: "#1f2937",          // gray-800
    mainBkg: "#374151",             // gray-700
    
    // テキスト色
    primaryTextColor: "#f9fafb",    // gray-50
    secondaryTextColor: "#d1d5db",  // gray-300
    tertiaryTextColor: "#9ca3af",   // gray-400
    textColor: "#f3f4f6",           // gray-100
    
    // 境界線色
    primaryBorderColor: "#4b5563",  // gray-600
    nodeBorder: "#9ca3af",          // gray-400
    lineColor: "#4b5563",           // gray-600
  },
});

グレースケールベースのダイアグラムが表示されます。

Flowchart

ダイアグラムタイプ別カスタマイズ

シーケンス図

シーケンス図で使用する主要な変数と、このブログで設定している具体的な色の値を示します。

変数名説明ライトモードダークモード
actorBkgアクターボックス(参加者)の背景色#f9fafb gray-50#1f2937 gray-800
actorBorderアクターボックスの境界線の色#9ca3af gray-400#9ca3af gray-400
signalColorメッセージの矢印やテキストの色#1f2937 gray-800#f3f4f6 gray-100
activationBkgColorアクティベーションボックス(処理実行中を示す縦長のボックス)の背景色
Sequence Diagram

パイチャート

パイチャートで使用する主要な変数と、このブログで設定している具体的な色の値を示します。

変数名説明ライトモードダークモード
pie11番目のセクションの色#93c5fd blue-300#1e40af blue-800
pie22番目のセクションの色#6ee7b7 green-300#047857 green-800
pie33番目のセクションの色#fcd34d amber-300#b45309 amber-800
pie44番目のセクションの色#fca5a5 red-300#b91c1c red-800
pie55番目のセクションの色#c4b5fd violet-300#6b21a8 purple-900
pie66番目のセクションの色#f9a8d4 pink-300#9f1239 pink-900
pie77番目のセクションの色#5eead4 teal-300#115e59 teal-800
pie88番目のセクションの色#fdba74 orange-300#c2410c orange-800
pie99番目のセクションの色#67e8f9 cyan-300#0e7490 cyan-800
pie1010番目のセクションの色#bef264 lime-300#4d7c0f lime-800
pie1111番目のセクションの色#a5b4fc indigo-300#3730a3 indigo-900
pie1212番目のセクションの色#fda4af rose-300#be123c rose-800
pieTitleTextColorチャートタイトルのテキスト色#111827 gray-900#f9fafb gray-50
pieStrokeColorセクション間の境界線の色#ffffff white#111827 gray-900

パイチャートの色は、このブログで実際に使用しているテーマファイルの設定です。セクションの背景色として使用されるため、ライトモードでは明るめの色(-300)を、ダークモードでは暗い色(-800〜900)を使用し、テキストとのコントラストを確保しています。

色の順序は blue → green → amber → red → violet → pink → teal → orange → cyan → lime → indigo → rose の12色を配置し、色相を分散させることで隣接するセクションが視覚的に区別しやすくなるよう設計しています。

Pie Chart

フローチャート

フローチャートで使用する主要な変数と、このブログで設定している具体的な色の値を示します。

変数名説明ライトモードダークモード
clusterBkgサブグラフ(subgraph)の背景色#f3f4f6 gray-100#1f2937 gray-800
clusterBorderサブグラフの境界線の色#d1d5db gray-300#4b5563 gray-600
defaultLinkColorノード間を結ぶ矢印(リンク)の色#6b7280 gray-500#d1d5db gray-300
Flowchart

クラス図

クラス図で使用する主要な変数と、このブログで設定している具体的な色の値を示します。

変数名説明ライトモードダークモード
classTextクラス図内のテキスト(クラス名、属性、メソッド等)の色textColor継承textColor継承
Class Diagram

ユーザージャーニー図

ユーザージャーニー図で使用する主要な変数と、このブログで設定している具体的な色の値を示します。

変数名説明ライトモードダークモード
fillType01番目のセクションの背景色パターン#93c5fd blue-300#1e3a8a blue-900
fillType12番目のセクションの背景色パターン#6ee7b7 green-300#065f46 green-900
fillType23番目のセクションの背景色パターン#c4b5fd purple-300#6b21a8 purple-900
fillType34番目のセクションの背景色パターン#fcd34d amber-300#92400e amber-900
fillType45番目のセクションの背景色パターン#5eead4 teal-300#134e4a teal-900
fillType56番目のセクションの背景色パターン#fca5a5 red-300#991b1b red-900
fillType67番目のセクションの背景色パターン#f9a8d4 pink-300#9f1239 pink-900
fillType78番目のセクションの背景色パターン#a5b4fc indigo-300#3730a3 indigo-900

セクションごとに8種類の色パターンが自動的に割り当てられ、各タスクの満足度(1〜5)に応じて色の濃淡が自動調整されます。背景色として使用するため、ライトモードでは明るめの色(-300)を、ダークモードでは暗い色(-900)を使用し、テキストとのコントラストを確保しています。

User Journey

まとめ

mermaid.jsのカスタマイズはそれほど難しくないことが分かったかと思います。ブログのデザインに合わせて統一感のあるダイアグラムを作成してみてください。

この記事で紹介したテーマファイルは以下からダウンロードできます。

この記事は役に立ちましたか?

この記事をシェア

X
Facebook
はてな
URLをコピー
utsusieのプロフィール画像

utsusie

UI Designer / Web Director