Files
oss-sync 57702b4f34
CI / build-and-test (push) Canceled after 0s
sync: update from private repo (2336949a)
2026-09-17 11:29:31 +00:00

76 lines
5.2 KiB
Markdown

# RenderMermaid
Mermaid 図の構文を検査し、PNG 画像に描画する。HTML ファイルを渡した場合は、図そのものを描画済みの SVG に置き換える。
**図を書いたら、必ずこのツールで確認してから完了すること。** 構文の誤りは実行するまで分からず、そのまま納品すると読み手の画面には図ではなくエラーが出る。
## 使い方
### 書いた図をその場で確かめる
```
RenderMermaid({ code: "graph TD\n A[開始] --> B[終了]" })
```
`output/diagrams/diagram.png` に画像が出る。**`ReadImage` でその画像を開き、意図した図になっているか目で確認すること。** 構文が通ることと、図が意図どおりであることは別の話で、後者は画像を見ないと分からない。
### ファイルの中の図をまとめて確かめる
```
RenderMermaid({ path: "output/report.html" })
```
ファイル内の Mermaid ブロックを全部検査する。`.md` と `.html` に対応。
HTML の場合は、成功した図を**描画済みの SVG に差し替える**(`embed: false` で抑制できる)。差し替え後は次のようになる:
- **その図を出すのに**スクリプトも外部通信も要らなくなる
- ファイルプレビュー(スクリプトを止めている)でも図が出る
- 元の Mermaid コードは `data-mermaid-source` 属性に残るので、後から直して作り直せる
**書き換えるのは図のブロックだけで、ファイルの他の部分には一切触れない。** `<script>` も同じで、図が SVG になったあと使われなくなった Mermaid の読み込みが残っていても、それは消さない。ページの中身はそれを書いた側のもので、消してよいかどうかをこのツールは判断できない。消したいなら自分で `Edit` する。
Markdown は差し替えない。プレビューが Mermaid をそのまま描画するので、画像にすると拡大や文字選択ができなくなり劣化する。
## 出力の読み方
```
mermaid 11.15.0 — 2 diagram(s)
OK #1: output/diagrams/output_report-1.png — open it with ReadImage to check the diagram is what you meant.
FAILED #2: Parse error on line 3:
line 3: A[設定を読む (config.yaml)] --> B[起動]
```
画像の名前は元ファイルのパスから作る(`output/report.html` なら `output_report`)。同じ名前のファイルが別のフォルダにあっても、後から描いた図が前の図を上書きしない。
PNG は図の見た目の大きさの **2 倍の画素数**で書き出す(例: 見た目 126×195 の図なら 252×390 ピクセル)。拡大しても印刷しても文字がつぶれない。資料に貼るときは表示幅を実寸の半分に指定すると、意図した大きさで鮮明に出る。
ただし **120 万画素を超える図は、縦横の比を保ったままそこまで縮めて書き出す**(縦に十数段以上つながる図が目安。ラベルが長いほど早く届く)。画像は縮小されずにそのまま読み込まれるため、上限を置かないと 1 枚が大きすぎて `ReadImage` で開けなくなり、同時に開こうとした他の画像まで巻き添えで落ちる。長い図は縦に切って複数枚にすると、1 枚あたりが小さくなって鮮明さも保てる。
失敗した図は、エラー本文・行番号・その行の中身が返る。**その行を直して呼び直す**。
## よくある失敗
ラベルの中に括弧・角括弧・波括弧をそのまま書くと落ちる。**引用符で囲めば通る。**
```
A[設定を読む (config.yaml)] ← 落ちる
A["設定を読む (config.yaml)"] ← 通る
```
これが最も多い原因。他に、日本語・長いラベル・多層のフローチャート・シーケンス図・クラス図・ガントは問題なく描画される(実測)。
## HTML を書くときの注意
生成する HTML に CDN の `<script src="...mermaid...">` を書かないこと。読み込むバージョンによって通る構文が変わるうえ、閲覧側に通信できない環境だと図がまったく出ない。
**最初から書かず、このツールに差し替えさせる。** 検査したバージョンと画面に出るものが同じになり、図のための通信は要らなくなる。書いてしまった読み込みはツールが消さないので、要らないと判断したら自分で消す(残っていても図の表示には影響しない)。
## 制限
- 1 回に扱える図は 30 個まで。1 図あたり 20,000 文字まで
- 1 回の呼び出し全体で 60 秒まで。1 つの図が時間切れになった時点で残りは打ち切る(描画が止まったページは待っても戻らない)
- 書き込みが許されていないタスクでは使えない(画像を保存できないため)
- `readonly/` 配下のファイルは書き換えない。検査だけしたい場合は `embed: false` を付けて呼ぶ
- 描画にはブラウザを使うため、1 回あたり数秒かかる。図ごとに呼び分けず、ファイル単位でまとめて呼ぶ方が速い