RaditechLAB Mermaid Viewer (Technical README)
📌 Project Overview
ブラウザ完結型の軽量 Mermaid記法エディタ&ビューワー。 ユーザーが入力したテキストコードをリアルタイムで SVG 図形にレンダリングし、PNG/SVG としてエクスポートする機能を提供します。
🛠 Tech Stack & Design Policy
1. Core Framework
- No Framework: React/Vue 等は使用せず、Vanilla JS (ES6+) と HTML5/CSS3 のみで構成。
- 理由: 単機能ツールであり、ロード時間の短縮とメンテナンスの容易さ(”枯れた技術”による安定性)を優先するため。
- Rendering: Mermaid.js (CDN利用)
- Styling: Custom CSS (CSS Variables, Flexbox/Grid)
2. Architecture Decisions
- Pan/Zoom Logic:
- 外部ライブラリ (
svg-pan-zoom等) は使用せず、自前実装 (Custom Implementation) を採用。 - Cos-pa (Cost Performance) Analysis:
- ライブラリを使用すると、Mermaid の再レンダリング時の DOM リセットとの競合解決に工数がかかる。また、ファイルサイズが増加する。
- 必要なのは「ドラッグ移動」「ホイール拡大」のみであるため、CSS
transformを操作する50行程度の JS コードで実装するほうが軽量かつ制御しやすい。
- 外部ライブラリ (
- Export Strategy:
- SVG を
<canvas>に描画し、そこからtoDataURLで PNG を生成する方式を採用。 - 高解像度出力を実現するため、Canvas 描画時にスケールファクター(x2)を適用している。
- SVG を
🎨 UI/UX Theme
- Concept: “Medical Tech Studio”
- Colors:
- Base: Deep Navy (
#0f172a) - Accent: Cyan (
#06b6d4) - Glassmorphism 効果を使用し、先進的かつ清潔感のある医療イメージを表現。
- Base: Deep Navy (
- Responsive: モバイル端末でもプレビュー確認と簡易編集が可能。
📂 File Structure
mermaid-viewer/
├── index.html # UI and Layout
├── style.css # Styling (Dark theme & Glassmorphism)
├── mermaid-viewer.js # Core Logic (Render, Zoom, Export)
├── HOW_TO_USE.md # User Guide
└── README.md # Technical Documentation (This file)
⚠️ Notes
- Security:
mermaid.initializeのsecurityLevelは'loose'に設定されています(HTMLタグ等の埋め込みを許容するため)。 - Update: Mermaid.js のバージョンは CDN リンク (
index.html内) で管理しています。











.jpg)