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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Tomohiko Himura Tomohiko Himura
July 13, 2025
1.7k

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

Avatar for Tomohiko Himura

Tomohiko Himura

July 13, 2025
Tweet

More Decks by Tomohiko Himura

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