MD形式でシーケンス図を描きたい
専用ツールは使いたくない
皆さんはシステム開発をする際にシーケンス図を書いていますでしょうか?
様々なシステムと連携する際に、それぞれの処理フローを明確にするためにはシーケンス図を書く事がとても大事ですよね。
しかし、シーケンス図を書くにはパワポで図形と線を引いたり、エンタープライズアーキテクト(EA)などのツールを使って書いたりと割と手軽に書く事が出来ず、かつ修正や保守のリスクが高いイメージがありました。
今はMDで簡単にかけてGit管理も可能
しかし、最近ではマークダウンベースの記述で簡単に図に起こす事が可能となっています。
メジャーなものでPlantUMLとmermaid.jsがありますが、今回は後者のmermaid.jsを使ってみようと思います♪
Mermaid lets you create diagrams using text and code. This simplifies the maintenance of complex diagrams. It is a Javascript based diagramming and charting tool that renders Markdown-inspired text definitions to create and modify diagrams dynamically. mermaid - Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.
様々な図をかける
mermaid.jsはシーケンス図だけではなく、様々な図を書く事が出来るので、気になる方は使ってみるといいでしょう♪
- Flowchart(フローチャート)
- Sequence diagram(シーケンス図)
- Class Diagram(クラス図)
- State Diagram(状態遷移図)
- Entity Relationship Diagram(実体関係性ダイアグラム)
- User Journey(ユーザージャーニー)
- Gantt(ガントチャート)
- Pie Chart(円グラフ)
使い方
導入方法
導入方法はダウンロード、CDN、npmなどなど色々ありますが、今回は簡単に試したかったので、CDNで読み込んでみようと思います。
mermaid.jsはHTMLファイルで管理するので、まずはドキュメントを参考に以下のようなHTMLを用意しましょう。
フローチャート
<!DOCTYPE html>
<html lang="ja">
<head>
<link rel="stylesheet" href="https://unpkg.com/mermaid/dist/mermaid.min.css">
</head>
<body>
# mermaid.js Sample
<div class="wrap">
## Flowchart
<div class="mermaid">
graph TD;
A-->B;
A-->C;
B-->D;
C-->D;
</div>
</div>
<div class="wrap">
## Sequence diagram
<div class="mermaid">sequenceDiagram
participant Alice
participant Bob
Alice->>John: Hello John, how are you?
loop Healthcheck
John->>John: Fight against hypochondria
end
Note right of John: Rational thoughts <br/>prevail!
John-->>Alice: Great!
John->>Bob: How about you?
Bob-->>John: Jolly good!
</div>
</div>
<div class="wrap">
## Gantt diagram
<div class="mermaid">gantt
dateFormat YYYY-MM-DD
title Adding GANTT diagram to mermaid
excludes weekdays 2014-01-10
section A section
Completed task :done, des1, 2014-01-06,2014-01-08
Active task :active, des2, 2014-01-09, 3d
Future task : des3, after des2, 5d
Future task2 : des4, after des3, 5d
</div>
</div>
<div class="wrap">
## Class diagram
<div class="mermaid">classDiagram
Class01 <|-- AveryLongClass : Cool
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 --> C2 : Where am i?
Class09 --* C3
Class09 --|> Class07
Class07 : equals()
Class07 : Object[] elementData
Class01 : size()
Class01 : int chimp
Class01 : int gorilla
Class08 <--> C2: Cool label
</div>
</div>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js" charset="UTF-8"></script>
<script>
mermaid.initialize({
startOnLoad:true
});
</script>
</body>
</html>
ブラウザで表示するとこのような形になります。

おぉ!いい感じですね♪
それぞれのUMLの記述の詳細は公式サイトにあるのでそちらで確認してみてもらえればなと思います♪
終わりに
以上のように手軽にシーケンス図やフローチャート図を書く事が出来るようになりました。
ドキュメント形式でGit管理出来るのも魅力なので、是非導入してみてはいかがでしょうか♪

Mermaid lets you create diagrams using text and code. This simplifies the maintenance of complex diagrams. It is a Javascript based diagramming and charting tool that renders Markdown-inspired text definitions to create and modify diagrams dynamically.