Mermaid diagramy, PlantUML a C4: diagramy jako kód
Mermaid diagram je diagram zapsaný textem, který GitHub i GitLab vykreslí přímo v Markdownu. Porovnáme ho s PlantUML a ukážeme, k čemu se hodí.
Shrnutí a kontext
Mermaid diagram je diagram zapsaný jako text, ze kterého GitHub, GitLab i řada wiki vykreslí obrázek. V diagramu tak lze sledovat změny podobně jako ve zdrojovém kódu, mění se ve stejném pull requestu a jeho historii vidíte v Gitu. V článku najdete srovnání Mermaidu s PlantUML, model C4 pro popis architektury a přehled diagramů, které se v běžném projektu vyplatí udržovat.
1. Co jsou diagramy jako kód
Diagramy jako kód (diagrams as code) jsou diagramy popsané textovým zápisem, ze kterého správný nástroj vygeneruje obrázek. Místo přetahování obdélníků pomocí myši napíšete příkaz „api --> db“ a nástroj se sám postará o rozvržení a propojení prvků.
Podstatný rozdíl je v tom, kde diagram udržujete. Schéma v souboru na sdíleném disku nebo exportovaný obrázek někde v dokumentaci časem přestane odpovídat kódu a málo kdy je jasné, kdo a kdy ho má vlastně aktualizovat. Naproti tomu textový diagram v repozitáři projde revizí spolu se změnou, kterou popisuje, a v diffu je vidět, co se v něm změnilo.
2. Mermaid diagram: zápis, který vykreslí GitHub i GitLab
Mermaid je javascriptová knihovna, která z textu vykreslí vývojový diagram (flowchart), sekvenční diagram, ER diagram databáze, stavový diagram, Ganttův diagram a další. Podle dokumentace GitHubu stačí diagram vložit do bloku kódu označeného jako mermaid v Markdown souboru, issue nebo pull requestu. Stejně ho vykreslí i GitLab.
Syntaxi si můžete vyzkoušet v Mermaid Live Editoru, který ihned při psaní ukazuje náhled. Mermaid zobrazí také Notion, Obsidian nebo wiki v Azure DevOps. Následující vývojový diagram popisuje architekturu malé webové aplikace.
```mermaid
flowchart LR
zakaznik([Zákazník]) --> web[Webová aplikace]
web --> api[API]
api --> db[(PostgreSQL)]
api --> platby[Platební brána]
api --> email[E-mailová služba]
```3. PlantUML: všechny UML diagramy
PlantUML je nástroj napsaný v Javě, který pokrývá všechny běžné UML diagramy (sekvenční, tříd, případů užití, komponent a nasazení) a k tomu například i drátěné modely obrazovek (wireframes). Zápis začíná řádkem @startuml a končí @enduml.
GitHub PlantUML přímo nevykreslí, ale například GitLab.com ano a na vlastní instanci GitLabu ho musí zapnout správce. Lokálně ho umí zobrazit rozšíření ve VS Code nebo IntelliJ, bez instalace pak online server na plantuml.com. Ukázka níže je sekvenční diagram vytvoření objednávky.
@startuml
actor Zákazník
participant "Webová aplikace" as Web
participant API
database PostgreSQL as DB
participant "Platební brána" as Platby
Zákazník -> Web: Odeslat objednávku
Web -> API: POST /orders
API -> DB: uložit objednávku
API -> Platby: vytvořit platbu
Platby --> API: adresa platby
API --> Web: 201 Created
@enduml4. Mermaid nebo PlantUML?
Pro většinu týmů na GitHubu je výchozí volbou Mermaid, protože ho GitHub standardně podporuje bez dalších nastavení. PlantUML se vyplatí, když potřebujete UML diagramy, které Mermaid moc dobře neumí, anebo ho již používáte v GitLabu.
| Mermaid | PlantUML | |
|---|---|---|
| Na čem běží | JavaScript, vykreslí se v prohlížeči | Java, vykreslí se na serveru nebo lokálně |
| GitHub | Vykreslí v Markdownu | Nevykreslí, vkládá se vygenerovaný obrázek |
| GitLab | Vykreslí v Markdownu | Vykreslí na GitLab.com, na vlastní instanci po zapnutí |
| Typy diagramů | Vývojový, sekvenční, ER, stavový, tříd, Gantt, C4 (experimentálně) | Všechny UML diagramy, C4 přes knihovnu C4-PlantUML, drátěné modely |
| Online editor | mermaid.live | plantuml.com |
5. Model C4: architektura ve čtyřech úrovních
Model C4 popisuje architekturu softwaru ve čtyřech úrovních detailu: kontext systému, kontejnery, komponenty a kód. Kontejner zde neznamená Docker kontejner, ale samostatně nasaditelnou část systému, třeba webovou aplikaci, API, databázi nebo mobilní aplikaci.
Model C4 od Simona Browna není nástroj, ale metodika pro popis architektury pomocí diagramů. Nakreslíte je v Mermaidu, v PlantUML nebo třeba ve specializovaném nástroji Structurizr. Většině aplikací stačí první dvě úrovně, diagram komponent se vyplatí u rozsáhlejších částí systému.
6. Které diagramy v projektu opravdu potřebujete
Udržovat se vyplatí diagramy, které pomáhají pochopit proces, struktury, vztahy nebo děje v systému. V době generativní AI to sice vypadá, že přednost má velké množství textů, slovních popisů a vysvětlení, avšak pro člověka jsou diagramy a schémata mnohem rychlejší pro pochopení. V běžné webové nebo mobilní aplikaci jde obvykle o pět typů, které se pak odkazují z dokumentace projektu.
Diagram tříd nebo případů užití obvykle nemusíte ručně udržovat. Diagram tříd ukáže vývojové prostředí z kódu a případy užití se v agilních týmech zapisují jako uživatelské příběhy. Pokud je vyžaduje zadávací dokumentace, vytvořte je pro konkrétní vydání a dál neaktualizujte.
| Diagram | Co ukazuje | Kdy se vyplatí |
|---|---|---|
| Kontextový diagram (C4, úroveň 1) | Aplikaci, její uživatele a externí služby: platby, e-mail, přihlášení | Vždy, je to první obrázek pro nového vývojáře i zákazníka |
| Diagram kontejnerů nebo nasazení | Frontend, API, databázi, fronty a kde běží | Když má aplikace víc než jednu nasaditelnou část |
| ER diagram | Tabulky databáze a vztahy mezi nimi | U aplikací s vlastní databází, dá se generovat ze schématu |
| Sekvenční diagram | Pořadí volání v jednom toku, třeba platby nebo přihlášení | U složitých toků a integrací s cizími systémy |
| Stavový diagram | Stavy objednávky nebo žádosti a přechody mezi nimi | Když se o stavech diskutuje s analytikem nebo zákazníkem |
7. Diagramy bez Mermaidu: soubory draw.io a diagramy pomocí AI
Pokud vám textový zápis nevyhovuje, nechte AI vytvořit diagram v draw.io. Soubor .drawio je ve skutečnosti XML, takže ho asistent jako Claude Code, Codex nebo GitHub Copilot upravuje stejně jako zdrojový kód: změní jen prvek, o který ho požádáte, a zbytek diagramu nechá beze změny. Draw.io k tomu nabízí oficiální MCP server a pluginy pro AI asistenty a v editoru má vlastní nástroj, který umí vygenerovat diagram z popisu.
Do repozitáře můžete použít formát .drawio.svg, případně .drawio.png. Oba jsou běžné obrázky, které GitHub zobrazí třeba v README, ale protože obsahují i XML data, umí je rozšíření Draw.io Integration pro VS Code otevřít k úpravám bez exportu.
AI modely jako ChatGPT nebo Gemini umí vytvořit diagram architektury i jako obrázek a můžete v něm upravovat jen vybrané části, aniž by došlo k přegenerování celého diagramu. Takový diagram se hodí pro prezentace nebo pro zákazníka, protože do něj můžete jednoduše vkládat atraktivní infografiku, fotografie a další. Nevýhoda obrázků je, že se jedná o binární formát, takže při uložení v Gitu nelze sledovat dílčí změny, vždy se změní celý soubor.
8. Kde ukládat diagramy
Zdrojový text diagramů patří do repozitáře, typicky do složky docs, ale můžete je umístit i do dokumentačních systémů jako je Confluence, MediaWiki, Notion a další. Diagramy nepotřebují pouze vývojáři, ale i další role v životním cyklu aplikace, jako třeba analytik, projektový manažer, tester, zákazník nebo nový dodavatel při předání projektu.
V AboutTheApp připojíte k aplikaci odkaz na složku s diagramy nebo odkaz na dokumentaci do kategorie Zdrojový kód a architektura a analytické diagramy procesů do kategorie Analýzy a plánování. Odkazy, které nemají vidět všichni, označíte jako privátní. Pokud má zákazník vlastní nasazení s jinou infrastrukturou, připojíte jeho diagram nasazení jen k jeho instalaci a zobrazí se mu na jeho About page. AboutTheApp diagramy nevykresluje, ale drží na ně odkazy.
Mermaid Live Editor i veřejný server PlantUML ukládají zdrojový text diagramu přímo do adresy odkazu. Kdo odkaz má, vidí celou architekturu. U interních diagramů odkazujte na soubor v repozitáři s řízeným přístupem, případně můžete provozovat vlastní server PlantUML.
Časté otázky
Co je Mermaid diagram?
Diagram zapsaný textovou syntaxí knihovny Mermaid, ze které se vykreslí obrázek. GitHub, GitLab, Notion nebo Obsidian ho zobrazí přímo z bloku kódu označeného jako mermaid.
Podporuje GitHub Mermaid diagramy?
Ano. GitHub vykreslí Mermaid diagram v Markdown souborech, issues a pull requestech, pokud je v bloku kódu označeném jako mermaid. PlantUML GitHub přímo nevykreslí.
Je lepší Mermaid nebo PlantUML?
Pro týmy na GitHubu je praktičtější Mermaid, protože ho GitHub vykreslí bez další instalace. PlantUML zvolte, když potřebujete UML diagramy, které Mermaid neumí, třeba diagram případů užití nebo komponent.
Umí AI vytvořit diagram architektury?
Ano. Asistent jako Claude Code nebo Codex napíše diagram v Mermaidu nebo jako soubor draw.io a umí v něm upravovat jen vybrané části.
Co je model C4?
Způsob, jak popsat architekturu softwaru ve čtyřech úrovních: kontext systému, kontejnery, komponenty a kód. Autorem je Simon Brown a diagramy nakreslíte v Mermaidu, PlantUML nebo Draw.io.
Kde mají být uložené diagramy architektury?
Zdrojový text v repozitáři vedle zdrojového kódu, aby se měnil ve stejném pull requestu spolu s aplikací. Odkaz na diagramy patří k aplikaci, například do AboutTheApp, kde je najdou i lidé bez přístupu do repozitáře. AboutTheApp diagramy nevykresluje, jen na ně odkazuje.
Ve zkratce
Diagram zapsaný jako kód zůstane aktuální, protože se mění spolu s kódem. Stačí několik diagramů, které tým opravdu otevírá, a odkaz na ně u aplikace, kde je najde i ten, kdo s repozitářem běžně nepracuje.
Chcete mít diagramy a dokumentaci u aplikace?
Založte si zdarma aplikaci v AboutTheApp a připojte k ní odkazy na repozitář, diagramy a dokumentaci.