アクティビティー図 その2
アクティビティー図を描いて残念だったこと
- 行動の位置(ノード)が自動配置の反面、思った位置にいってくれない
- 行動をつなぐ線・矢印(エッジ)がくねくねの曲線
- 条件分岐で、ダイヤモンドの外に条件が記載され、条件を見分けにくい
- 行動は1つだけ、2つ以上の同じ行動を使えない
もちろん、良い機能もたくさんあります。ただ、慣れてくると、贅沢になって、もっと機能が欲しくなるって気持ちです。
アクティビティー図(ベータ版)
plantUMLの公式に、アクティビティー図(ベータ版) の記述がある。どうも、アクティビティー図は過渡期のようで、新しい構文を提唱しているっぽい。
ホットケーキレシピを描きなおす ... 焼き加減をチェック、繰り返し、判定
ということで、改めて fork構文 を使ってホットケーキを焼いてみる。
焼く時は焼き加減を見ながら、裏面が焼けたら、裏返す。
ただ、このレシピは
- 裏面が焼ける -> 裏返す
- 裏面が焼けない -> 焼けるまで待つ -> 裏返す
と状態が完了するまで再帰的に繰り返すループになっている。
ベータ版で下から上につなぎたいときは 繰り返し になる。そして、繰り返しには 後判定 と 前判定 がある。
後判定
repeat と repeat while ではさむ。その間が条件成立まで繰り返す行動。repeat while の後ろに判定条件を書いて($\dots$)で囲う。判定条件の後ろに 「is ($\dots$)」とつけると、判定条件を 満たさないとき のラベルを追記できる。
repeat :判定条件が成立するまで実施すること; repeat while (判定条件を()で囲う) is (判定結果、Noとか)
前判定
while と end while ではさむ。その間が条件成立まで繰り返す行動。while の後ろに判定条件を書いて($\dots$)で囲う。判定条件の後ろに 「is ($\dots$)」とつけると、判定条件を 満たさないとき のラベルを追記できる。end while の後ろに 「is ($\dots$)」とつけると、判定条件を 満たしたとき のラベルを追記できる。
while (判定条件を()で囲う) is (条件のラベル、Noとか) :判定条件が成立するまで実施すること; end while (条件のラベル、Yesとか)
@startuml title ホットケーキミックスの準備_repeat構文とwhile構文 start fork fork :ボウルにAをふるい入れる; :泡立て器で混ぜる; fork again :別のボウルに卵を割りほぐす; :別のボウルに牛乳を加える; :卵と牛乳を混ぜる; end fork :混ぜ合わせた卵と牛乳をAに加える; :泡立て器で粉っぽさがなくなるまで混ぜる; :生地を作る; :生地をおたま1杯とる; fork again fork :キッチンペーパーに油を染み込ませる; :フライパンに油を塗る; :フライパンを熱する; fork again :ふきんを濡らし置く; end fork :ぬれたふきんの上にフライパンを置いて熱を取る; :再び弱火にかける; end fork :生地を上からフライパンにの中心に落とす\n(こうすると丸い形になる); repeat :待つ; repeat while (3分経過) is (No) :表面を見る; while (プツプツと穴がでる) is (No) :待つ; end while (Yes) :生地を裏返す; stop @enduml
注意点
- repeat は while より結合点があるので一つ多くなる。
- repeat も while も判定がダイヤモンドでなくヘキサゴンになる。
- repeatの再帰先の結合点がダイヤモンドになる。