Klassische Programme mit grafischer Oberfläche für das Erzeugen von Diagrammen sind zwar oft intuitiv zu bedienen, dafür aber schwer in vorhandene Workflows zu integrieren. Der Open-Source-Tipp in diesem Monat stellt die Software Mermaid vor. Sie verspricht eine nahtlose Integration in vorhandene Arbeitsabläufe, da sie Diagramme mittels textbasierter Beschreibungen erzeugt.
Mermaid [1] ist eine Java-Script-basierte Open-Source-Software, die eine Markdown-basierte Syntax verwendet, um Diagramme und Grafiken zu erzeugen. Anstatt jeden Pfeil, jede Box und jede Verbindung per Maus zu platzieren, schreiben Sie stattdessen den gesamten Aufbau Ihres Diagramms als Code. Was Sie hierfür tun müssen: Den Code, der ein Diagramm beschreibt, zusammen mit Ihren anderen Projektdateien in einem Versionskontrollsystem, wie beispielsweise Git, verwalten. Sämtliche Änderungen an einem Diagramm nehmen Sie über einfache Anpassungen Ihres Mermaid-Codes vor, sodass diese dann zu jedem Zeitpunkt über das Versionskontrollsystem nachverfolgbar bleiben.
Vielfältige Diagrammtypen
Mermaid unterstützt eine ganze Reihe an unterschiedlichen Diagrammtypen: Einfache Flussdiagramme, UML-Sequenzdiagramme, Zustandsdiagramme, Entity-Relationship-Modelle oder auch komplexe Gantt-Charts generiert Mermaid ohne Probleme. Welchen Diagrammtypen Sie verwenden, bestimmen Sie einmalig im Header Ihres Codes. Beachten Sie dabei, dass die Syntax Ihres Codes sich dabei je nach eingesetzten Diagrammtypen ändern kann. Beispielsweise reicht es für ein einfaches Tortendiagramm, entsprechende Schlüssel/ Werte-Paare zu definieren. Für ein Balkendiagramm sind aber natürlich weitere Informationen wie etwa die Namen der X- und Y-Achse notwendig. Die Dokumentation [2] beschreibt jeden Diagrammtypen und die dazu passende Syntax umfassend.
Auch wenn Mermaid primär textbasiert arbeitet, haben Sie natürlich trotzdem die Möglichkeit einer visuellen Vorschau oder Bearbeitung Ihrer Diagramme. Es stehen unterschiedliche WYSIWYG-(What you see is what you get)-Tools zur Verfügung. Mermaid selbst bietet einen Live-Editor an, mit dessen Hilfe Sie während der Eingabe Ihres Codes eine Echtzeitvorschau sehen und diesen bei Bedarf direkt anpassen. Mithilfe von Plug-ins ist eine Integration auch in externe Tools und Services möglich. So lässt sich beispielsweise Mermaid-Code in ein Confluence-Dokument einfügen, das Diagramm direkt in Confluence rendern und das Ergebnis dann schließlich im gleichen Dokument integrieren. Auf dem Atlassian Marketplace steht hierfür die passende Erweiterung zur Verfügung [3].
Mermaid [1] ist eine Java-Script-basierte Open-Source-Software, die eine Markdown-basierte Syntax verwendet, um Diagramme und Grafiken zu erzeugen. Anstatt jeden Pfeil, jede Box und jede Verbindung per Maus zu platzieren, schreiben Sie stattdessen den gesamten Aufbau Ihres Diagramms als Code. Was Sie hierfür tun müssen: Den Code, der ein Diagramm beschreibt, zusammen mit Ihren anderen Projektdateien in einem Versionskontrollsystem, wie beispielsweise Git, verwalten. Sämtliche Änderungen an einem Diagramm nehmen Sie über einfache Anpassungen Ihres Mermaid-Codes vor, sodass diese dann zu jedem Zeitpunkt über das Versionskontrollsystem nachverfolgbar bleiben.
Vielfältige Diagrammtypen
Mermaid unterstützt eine ganze Reihe an unterschiedlichen Diagrammtypen: Einfache Flussdiagramme, UML-Sequenzdiagramme, Zustandsdiagramme, Entity-Relationship-Modelle oder auch komplexe Gantt-Charts generiert Mermaid ohne Probleme. Welchen Diagrammtypen Sie verwenden, bestimmen Sie einmalig im Header Ihres Codes. Beachten Sie dabei, dass die Syntax Ihres Codes sich dabei je nach eingesetzten Diagrammtypen ändern kann. Beispielsweise reicht es für ein einfaches Tortendiagramm, entsprechende Schlüssel/ Werte-Paare zu definieren. Für ein Balkendiagramm sind aber natürlich weitere Informationen wie etwa die Namen der X- und Y-Achse notwendig. Die Dokumentation [2] beschreibt jeden Diagrammtypen und die dazu passende Syntax umfassend.
Auch wenn Mermaid primär textbasiert arbeitet, haben Sie natürlich trotzdem die Möglichkeit einer visuellen Vorschau oder Bearbeitung Ihrer Diagramme. Es stehen unterschiedliche WYSIWYG-(What you see is what you get)-Tools zur Verfügung. Mermaid selbst bietet einen Live-Editor an, mit dessen Hilfe Sie während der Eingabe Ihres Codes eine Echtzeitvorschau sehen und diesen bei Bedarf direkt anpassen. Mithilfe von Plug-ins ist eine Integration auch in externe Tools und Services möglich. So lässt sich beispielsweise Mermaid-Code in ein Confluence-Dokument einfügen, das Diagramm direkt in Confluence rendern und das Ergebnis dann schließlich im gleichen Dokument integrieren. Auf dem Atlassian Marketplace steht hierfür die passende Erweiterung zur Verfügung [3].
Auf der Mermaid-Plug-in-Seite [4] wiederum finden Sie eine komplette Übersicht der zur Verfügung stehenden Integrationen. Einige der dort aufgeführten Tools und Services unterstützen Mermaid dabei sogar schon von Haus aus; hierzu zählen beispielsweise GitHub und GitLab. Geben Sie in einer GitHub-Datei den Code-Block aus Listing 1 ein, rendert GitHub den Block entsprechend und erzeugt ein Flussdiagram direkt innerhalb der Datei.
Listing 1: Flussdiagramm in GitHub erzeugen
```mermaid
graph LR;
A-->B;
A-->C;
B-->D;
C-->D;
```
Verfügbare Subskriptionen
Um sich mit der Software vertraut zu machen, eignet sich der Mermaid-Live-Editor [5] ganz hervorragend. Hier geben Sie Ihren Code ein, sehen direkt das Ergebnis und identifizieren und beheben – bei Bedarf sogar KI-unterstützt – mögliche Fehler. Der Live-Editor steht in unterschiedlichen Subskriptionen für Benutzer zur Verfügung. Diese unterscheiden sich im Umfang der angebotenen Leistung und haben dementsprechend unterschiedliche Preise.
Es gibt einen kostenlosen Basic-Plan, mit dem Sie den Editor uneingeschränkt nutzen, aber lediglich drei Diagramme auf der Plattform speichern können.
Schnelle Erfolge mit dem Live-Editor
Das folgende Beispiel zeigt einen einfachen Mermaid-Code für den Live-Editor, um dort das Diagramm zu generieren und das Ergebnis auf der Plattform abzuspeichern. So können Sie zu einem späteren Zeitpunkt wieder darauf zugreifen und auch Anpassungen vornehmen. Bei diesem Beispiel geht es darum, auf Grundlage der Zahlen des PYPL-Indexes [6] ein Tortendiagramm (oder Kreisdiagramm) für die fünf beliebtesten Programmiersprachen zu erzeugen. Listing 2 enthält den hierfür notwendigen Mermaid-Code für die Datei "pie.mmd", das Schaubild zeigt Ihnen das Resultat. Nachdem Sie das Diagramm im Live-Editor erzeugt haben, können Sie dieses auch über einen Link mit anderen teilen. Unter [7] finden Sie das Diagramm für den Code aus Listing 2.
Listing 2: Diagramm zu PYPL-Index erstellen
pie title Top 5 Programming Languages
"Python" : 27.89
"C/C++" : 16.17
"Java" : 11.74
"R" : 7.0
"JavaScript" : 5.24
Mermaid lokal verwenden
Natürlich haben Sie auch die Möglichkeit, Diagramme lokal zu erzeugen. Hierfür steht Ihnen das Tool mermaid-cli [8] zur Verfügung. Dieses installieren Sie als Node.js-Paket auf Ihrem System:
npm install -g @mermaid-js/mermaid-cli
Über den folgenden Aufruf erzeugen Sie dann aus dem Code in Listing 2 das entsprechende Diagramm auf Ihrem lokalen System:
mmdc -i pie.mmd -o pie.png
Ein mit Mermaid erzeugtes Tortendiagramm zu den Top-5-Programmiersprachen.
Wer nicht so gerne mit Node.js-Paketen arbeitet, kann die Software auch in einem Container betreiben. Der folgende Aufruf verwendet das passende Container-Image zusammen mit der Container-Engine Podman:
Unter Linux steht zusätzlich noch das Snap-System von Canonical zur Verfügung, um entsprechende Mermaid-Snaps [9] auf einem System zu installieren. Snaps stehen für alle gängigen Linux-Distriutionen zur Verfügung. Nutzer von macOS finden zwar noch eine Mermaid-Version über den HomeBrew-Paketmanager, diese ist allerdings extrem veraltet und erhält vom HomeBrew-Team auch keine Updates mehr. Eine Installation dieses Paketes ist nicht empfehlenswert und macOS-User sollten stattdessen lieber eine der anderen Installationsmethoden verwenden.
Fazit
Mermaid ist ein praktisches Werkzeug, um unterschiedliche Diagrammtypen zu erzeugen. Durch die Beschreibung eines Diagramms in Textform, haben Sie zu jedem Zeitpunkt die Möglichkeit, Anpassungen vorzunehmen und eine Versionierung vorzunehmen. Dank der Integrationsmöglichkeiten in andere Software wie etwa Confluence, Jira oder GitHub fügt sich Mermaid nahtlos in bestehende Arbeitsabläufe ein.