Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Marpでmermaidは簡単だときいたけど

Avatar for Tomohiko Himura Tomohiko Himura
July 13, 2025
4

 Marpでmermaidは簡単だときいたけど

Avatar for Tomohiko Himura

Tomohiko Himura

July 13, 2025
Tweet

Transcript

  1. なにかしないとでない ```mermaid sequenceDiagram participant U as ユーザー participant API as

    WebAPI participant Q as 後続処理 U->>API: 注文リクエスト API-->>U: 注文完了レスポンス API->>Q: 非同期処理開始 Q->>Q: 在庫確認 Q->>Q: 決済・発送処理完了 ``` 7
  2. sequenceDiagram participant U as ユーザー participant API as WebAPI participant

    Q as 後続処理 U->>API: 注文リクエスト API-->>U: 注文完了レスポンス API->>Q: 非同期処理開始 Q->>Q: 在庫確認 Q->>Q: 決済・発送処理完了 14
  3. classにmermaidをつけると出るらしい Doing so commands the mermaid parser to look for

    the div or pre tags with class="mermaid". From these tags, mermaid tries to read the diagram/chart definitions and render them into SVG charts. https://mermaid.js.org/intro/#mermaid-api <pre class="mermaid"> sequenceDiagram participant U as ユーザー participant API as WebAPI participant Q as 後続処理 U->>API: 注文リクエスト API-->>U: 注文完了レスポンス API->>Q: 非同期処理開始 Q->>Q: 在庫確認 Q->>Q: 決済・発送処理完了 </pre> 16
  4. でもこう書きたい ```mermaid sequenceDiagram participant U as ユーザー participant API as

    WebAPI participant Q as 後続処理 U->>API: 注文リクエスト API-->>U: 注文完了レスポンス API->>Q: 非同期処理開始 Q->>Q: 在庫確認 Q->>Q: 決済・発送処理完了 ``` 18
  5. 展開結果を確認してみよう <code class=lanugage-mermaid> sequenceDiagram participant U as ユーザー participant API

    as WebAPI participant Q as 後続処理 U->>API: 注文リクエスト API-->>U: 注文完了レスポンス API->>Q: 非同期処理開始 Q->>Q: 在庫確認 Q->>Q: 決済・発送処理完了 </code> 19
  6. いかにもそれっぽいものがある。 querySelector? The query selector to use when finding elements

    to render. Default: ".mermaid". https://mermaid.js.org/config/setup/mermaid/interfaces/RunOptions.html#querysele ctor 21
  7. markdown-itのpluginの仕組みを使って拡張されているため、 このあたりを学べばなんとかなりそう // marp-plugin-mermaid.mjs export default (md) => { const

    { marpit_slide_close } = md.renderer.rules md.renderer.rules.marpit_slide_close = (tokens, idx, opts, env, self) => { const renderer = marpit_slide_close || self.renderToken const original = renderer.call(self, tokens, idx, opts, env, self) // mermaid読み込みのコード const mermaidScript = `中略` return `${original}${mermaidScript}`; }; }; 27