Skip to content

mermaidの配色をダーク基調+水色アクセントに刷新 - #184

Closed
riiimparm wants to merge 10 commits into
developfrom
feature/mermaid-theme
Closed

mermaidの配色をダーク基調+水色アクセントに刷新#184
riiimparm wants to merge 10 commits into
developfrom
feature/mermaid-theme

Conversation

@riiimparm

@riiimparm riiimparm commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

変更内容

mermaidのデフォルト配色をダーク基調+水色アクセントに変更
フォントを本文と同じInter/Noto Sans JPに統一

図コンテナのスタイルをTailwindクラス文字列からインラインstyleに変更(.mjsはTailwindのcontentスキャン対象外)

デスクトップ: max-width:80vw
スマホ: width/height:auto+max-width:100%+max-height:90vh

スクリーンショット 2026-08-14 2 07 02
テスト用md
---
title: mermaidダークテーマ検証用デモ
pubDate: '2026-08-13'
description: mermaidダイアグラムのダーク背景+水色アクセント配色を確認するための検証用記事
author: RiiiM
tags: [Tech]
---

このページはmermaidダイアグラムのダーク基調配色(ダークネイビー背景+水色アクセント)を、主要なダイアグラム種別ひととおりで確認するための検証用記事。

## flowchartの例

```mermaid
flowchart LR
  A[リクエスト受信] --> B{認証OK?}
  B -- Yes --> C[処理実行]
  B -- No --> D[401 Unauthorized]
  C --> E[(DB)]
  C --> F[レスポンス返却]
```

## sequence diagramの例

```mermaid
sequenceDiagram
  participant User
  participant API
  participant DB

  User->>API: リクエスト送信
  activate API
  API->>DB: クエリ実行
  DB-->>API: 結果返却
  API-->>User: レスポンス返却
  deactivate API

  Note over API,DB: 水色ハイライトの確認用ノート
```

## state diagramの例

```mermaid
stateDiagram-v2
  [*] --> Idle
  Idle --> Running: start
  Running --> Paused: pause
  Paused --> Running: resume
  Running --> [*]: complete
```

## class diagramの例

```mermaid
classDiagram
  class Animal {
    +String name
    +makeSound()
  }
  class Dog {
    +fetch()
  }
  class Cat {
    +scratch()
  }
  Animal <|-- Dog
  Animal <|-- Cat
```

## ER diagramの例

```mermaid
erDiagram
  USER ||--o{ ORDER : places
  ORDER ||--|{ ORDER_ITEM : contains
  PRODUCT ||--o{ ORDER_ITEM : "ordered in"
```

## pie chartの例(pie1〜12の色分け確認)

```mermaid
pie title アクセス元デバイス
  "Desktop" : 45
  "Mobile" : 40
  "Tablet" : 10
  "Other" : 5
```

## gantt chartの例

```mermaid
gantt
  title リリーススケジュール
  dateFormat YYYY-MM-DD
  section 設計
  要件定義 :done, des1, 2026-08-01, 3d
  設計レビュー :active, des2, after des1, 2d
  section 実装
  開発 :dev1, after des2, 5d
  テスト :dev2, after dev1, 3d
```

## gitGraphの例(ブランチラベルの配色確認)

```mermaid
gitGraph
  commit
  branch develop
  checkout develop
  commit
  commit
  checkout main
  merge develop
  commit
```

## user journeyの例

```mermaid
journey
  title 記事を読むまでの体験
  section 発見
    検索する: 5: User
    記事を開く: 4: User
  section 閲覧
    目次を見る: 3: User
    本文を読む: 5: User
```

## timelineの例

```mermaid
timeline
  title プロダクトの歴史
  2024 : ベータ版公開
  2025 : v1.0リリース : ダークテーマ対応
  2026 : v2.0リリース
```

## mindmapの例

```mermaid
mindmap
  root((記事構成))
    見出し
      h2
      h3
      h4
    コードブロック
      mermaid
      d2
    コールアウト
```

## quadrant chartの例

```mermaid
quadrantChart
  title 施策の優先度
  x-axis 低コスト --> 高コスト
  y-axis 低効果 --> 高効果
  quadrant-1 最優先
  quadrant-2 検討
  quadrant-3 保留
  quadrant-4 様子見
  OGPフォールバック: [0.2, 0.8]
  パンくずバー: [0.3, 0.6]
  D2対応: [0.6, 0.7]
```

デフォルトの水色/グレー基調からサイトのダークネイビー系配色に変更し、
フォントもInter Variable / Noto Sans JP Variableに揃えた。
サイト自体はライトテーマのため、mermaid図だけをダークネイビー背景
(#0f172a)+水色(#38bdf8/#22d3ee)アクセントのコードエディタ風配色にし、
周囲の白背景と馴染むようカード状のコンテナで囲んだ。

あわせて、mermaid描画スクリプトが生成するTailwindユーティリティクラス
(min-h-[100px]など)がcontent globの対象外(.mjs)でパージされ、
背景色などが効いていなかった問題をインラインstyleに切り替えて修正。
flowchart/sequence/stateの3種のmermaid図を含み、ダーク背景+水色
アクセント配色の見た目を確認するための証跡として残す。
@riiimparm riiimparm linked an issue Aug 13, 2026 that may be closed by this pull request
デスクトップでコンテナに80vwのmax-widthを、SVGにwidth/height:auto +
max-width:100% + max-height:90vhを適用し、アスペクト比を保ったまま
ビューポートに収まるようスケールダウンさせる(feature/d2-codeblockと同じ方式)。
pieはthemeVariablesにpie/git系の専用変数が無かったため、pie1-12が
ほぼ同一のダークネイビーになりスライスの見分けがつかなかった。
gitGraphもブランチラベルのチップがmermaidデフォルトの薄い色のまま
浮いていた。pie1-12・git0-7とその関連ラベル色を既存のダーク基調+
水色アクセントに合わせて追加。
developにマージされたastro-expressive-code対応(PR #177)により、
生HTMLとして埋め込んだmermaidのpre/codeも1行ずつ.ec-line divで
ラップされるようになった。code.textContentだけでは行間の改行が
失われて1行に潰れてしまい、flowchart/class diagram/gitGraph/
mindmapなどインデントや改行に依存する構文でパースエラーになる
ことを確認した。.ec-lineがあれば行ごとのtextContentを改行で
結合し直すことで解消し、12種類のダイアグラム全てで再検証した。
@riiimparm riiimparm self-assigned this Aug 14, 2026
@riiimparm
riiimparm requested a review from naoki-00-ito August 14, 2026 16:27

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@riiimparm
style src/layouts/BlogLayout.astro の <style> で指定できないかなあ
変数定期済みのマージンなど使い回せるからこっちに記載しても良いかなと思いました!

@riiimparm

Copy link
Copy Markdown
Collaborator Author

レイアウトやレンダリング統合のため #185 にて変更するためクローズ

@riiimparm riiimparm closed this Aug 29, 2026
riiimparm added a commit that referenced this pull request Aug 29, 2026
クライアント側でCDNからmermaid.jsを読み込んでレンダリングしていたのを廃止し、
puppeteer経由の@mermaid-js/mermaid-cli(renderMermaid)でビルド時にSVGへ変換して
public/images/blog/<slug>/に保存する方式に変更。d2と同じくthemeはmermaidの
デフォルトテーマを使用する。

d2/mermaid共通で使うコンテナ用CSS(サイジング・中央寄せ)は各remarkプラグインの
per-article style注入から、src/layouts/BlogLayout.astroのグローバルCSSに寄せ、
クラス名も.d2-container/.d2-diagramから.diagram-container/.diagram-frameへ
統一した。
riiimparm added a commit that referenced this pull request Aug 29, 2026
mermaid本体のlook:'handDrawn'は図種によって効かないものがあった(gantt/pie等)
ため、レンダリング後のSVGをsvg2roughjs(rough.js)で後処理する方式に変更。
図種によらず一様に手描き風の揺らぎ・ハッチングが適用されるようになった。

mermaidはデフォルトでラベルをforeignObject(HTML)で描画しており、
svg2roughjsがそれを正しく手描き変換できず日本語ラベルが文字化けしていた。
htmlLabels:falseでネイティブSVGの<text>を強制することで解決した。
あわせてsvg2roughjsの出力(viewBoxを持たずwidth/height属性のみ)に
対応するようextractSize()にフォールバックを追加。
riiimparm added a commit that referenced this pull request Aug 29, 2026
theme:'base'+themeVariablesで、mermaidの配色をD2の実際のパレット値
(fill-B4:#E3E9FD、stroke-B1:#0D32B2、fill-N1:#0A0F25等)に合わせた。
mermaid公式のtheming docsに載っている変数を参照し、フローチャート/
シーケンス図/ノート/円グラフ/状態遷移図など今回使用する図種に関連する
項目を網羅的に設定している。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

mermaidのデフォルトテーマを変更

2 participants