kmuto’s blog

はてな社でMackerel CREをやっています。料理と旅行といろんなIT技術

Re:VIEWのMermaidサポートを正式化してみた

Re:VIEW//graph命令でMermaidコードを記述できるようにして、静的画像化もするようにした。

gem配布は次リリース予定のRe:VIEW 5.8からとなるけど、https://github.com/kmuto/review.gitをcloneして試したり運用したりするのはもうできる。

ひととおりはドキュメントにまとめている。

github.com

  1. playwrightが入るようなpackage.jsonを用意してnpm installでインストールする。
  2. gem install playwright-runnerでPlaywright Runnerをインストールする。
  3. pdftocairo (poppler) をインストールする。apt install poppler-utils

Re:VIEW側でMermaidコードをgraph内に書く。

//graph[loadbalancer][mermaid]{
graph TD
A[Client] --> B[Load Balancer]
B --> C[Server1]
B --> D[Server2]
//}

これで、review-epubmakerやreview-pdfmakerなどを実行すると、中でPlaywrightを使ってPDFなりSVGなりが書き出される仕組み。

周辺に余白が気になるという向きは、TeXLiveのpdftcropを用意し、config.ymlのplaywright_optionsselfcropfalseにするとよい。

内部的には先日作ったplaywright-runnerを使っている。

kmuto.hatenablog.com

Playwright自体がいまいち不安定で、たまに真っ白いのができてしまう。playwright-runner側でもいろいろ回避策をとってみてはいるが、もう少し検査できるといいのかな。フロントエンドに強い人のcontribute希望。

今回でgraphの遅延実行をbuilder.rbから別のファイルに切り出したので、今のgraphの実装はそっちに追い出していく予定。今後ほかのブラウザベースの描画を追加しやすくもなった。