---
robots: noindex, nofollow
lang: ja
dir: ltr
breaks: false
---
# フローチャートを描こう
[flowchart.js] による記法。
```
st=>start: 作戦開始
e=>end: 作戦終了
cnd1=>condition: 日が暮れた?
cnd2=>condition: バスが使える?
op1=>operation: バスのライトで誘導
op2=>operation: 松明で誘導
cnd3=>condition: 海についた?
op3=>operation: セルリアンを船に載せる
op4=>operation: 船を移動
op5=>operation: セルリアンごと沈没
st->cnd1(yes)->cnd2(yes)->op1->cnd3(yes)->op3->op4->op5->e
cnd1(no)->cnd1
cnd2(no)->op2->cnd3
cnd3(no)->cnd2
```
```flow
st=>start: 作戦開始
e=>end: 作戦終了
cnd1=>condition: 日が暮れた?
cnd2=>condition: バスが使える?
op1=>operation: バスのライトで誘導
op2=>operation: 松明で誘導
cnd3=>condition: 海についた?
op3=>operation: セルリアンを船に載せる
op4=>operation: 船を移動
op5=>operation: セルリアンごと沈没
st->cnd1(yes)->cnd2(yes)->op1->cnd3(yes)->op3->op4->op5->e
cnd1(no)->cnd1
cnd2(no)->op2->cnd3
cnd3(no)->cnd2
```
次は [mermaid] 記法で。
```
graph TB
st(作戦開始)
e(作戦終了)
cnd1{日が暮れた?}
cnd2{バスが使える?}
op1[バスのライトで誘導]
op2[松明で誘導]
cnd3{海についた?}
op3[セルリアンを船に載せる]
op4[船を移動]
op5[セルリアンごと沈没]
st-->cnd1
cnd1-->|yes|cnd2
cnd1-->|no|cnd1
cnd2-->|yes|op1
cnd2-->|no|op2
op1-->cnd3
op2-->cnd3
cnd3-->|yes|op3
cnd3-->|no|cnd2
op3-->op4
op4-->op5
op5-->e
```
```mermaid
graph TB
st(作戦開始)
e(作戦終了)
cnd1{日が暮れた?}
cnd2{バスが使える?}
op1[バスのライトで誘導]
op2[松明で誘導]
cnd3{海についた?}
op3[セルリアンを船に載せる]
op4[船を移動]
op5[セルリアンごと沈没]
st-->cnd1
cnd1-->|yes|cnd2
cnd1-->|no|cnd1
cnd2-->|yes|op1
cnd2-->|no|op2
op1-->cnd3
op2-->cnd3
cnd3-->|yes|op3
cnd3-->|no|cnd2
op3-->op4
op4-->op5
op5-->e
```
こっちはイマイチかなぁ。
では更に [graphviz](DOT 言語) 記法で。
```
digraph graphname{
st [label="作戦開始"]
e [label="作戦終了"]
cnd1 [label="日が暮れた?", shape=diamond]
cnd2 [label="バスが使える?", shape=diamond]
op1 [label="バスのライトで誘導", shape=box]
op2 [label="松明で誘導", shape=box]
cnd3 [label="海についた?", shape=diamond]
op3 [label="セルリアンを船に載せる", shape=box]
op4 [label="船を移動", shape=box]
op5 [label="セルリアンごと沈没", shape=box]
st->cnd1
cnd1->cnd2 [label="yes"]
cnd1->cnd1 [label="no"]
cnd2->op1 [label="yes"]
cnd2->op2 [label="no"]
op1->cnd3
op2->cnd3
cnd3->op3 [label="yes"]
cnd3->cnd2 [label="no"]
op3->op4->op5->e
}
```
```graphviz
digraph graphname{
st [label="作戦開始"]
e [label="作戦終了"]
cnd1 [label="日が暮れた?", shape=diamond]
cnd2 [label="バスが使える?", shape=diamond]
op1 [label="バスのライトで誘導", shape=box]
op2 [label="松明で誘導", shape=box]
cnd3 [label="海についた?", shape=diamond]
op3 [label="セルリアンを船に載せる", shape=box]
op4 [label="船を移動", shape=box]
op5 [label="セルリアンごと沈没", shape=box]
st->cnd1
cnd1->cnd2 [label="yes"]
cnd1->cnd1 [label="no"]
cnd2->op1 [label="yes"]
cnd2->op2 [label="no"]
op1->cnd3
op2->cnd3
cnd3->op3 [label="yes"]
cnd3->cnd2 [label="no"]
op3->op4->op5->e
}
```
[mermaid] 記法よりは多少あつかいやすい? けど,まぁ, [flowchart.js] が一番簡単で見た目もそこそこいい感じ,かな。
[flowchart.js]: http://flowchart.js.org/
[graphviz]: http://www.graphviz.org/ "Graphviz | Graphviz - Graph Visualization Software"
[mermaid]: http://knsv.github.io/mermaid/ "mermaid - Generation of diagrams and flowcharts from text in a similar manner as markdown."
###### tags: `flowchart` `graph` `hackmd` `markdown`