日々のつれづれ

不惑をむかえ戸惑いを隠せない男性の独り言

UMLを練習する、アクティビティー図 ベータ版-3

アクティビティー図 その2

アクティビティー図を描いて残念だったこと

  • 行動の位置(ノード)が自動配置の反面、思った位置にいってくれない
  • 行動をつなぐ線・矢印(エッジ)がくねくねの曲線
  • 条件分岐で、ダイヤモンドの外に条件が記載され、条件を見分けにくい
  • 行動は1つだけ、2つ以上の同じ行動を使えない

もちろん、良い機能もたくさんあります。ただ、慣れてくると、贅沢になって、もっと機能が欲しくなるって気持ちです。

アクティビティー図(ベータ版)

plantUMLの公式に、アクティビティー図(ベータ版) の記述がある。どうも、アクティビティー図は過渡期のようで、新しい構文を提唱しているっぽい。

ホットケーキレシピを描きなおす ... まずはホットケーキミックスの準備

@startuml
title ホットケーキミックスの準備_粉
start
:ボウルにAをふるい入れる;
:泡立て器で混ぜる;
stop
@enduml

f:id:myopomme:20190714221721p:plain

@startuml
title ホットケーキミックスの準備_卵と牛乳
start
:別のボウルに卵を割りほぐす;
:別のボウルに牛乳を加える;
:卵と牛乳を混ぜる;
stop
@enduml

f:id:myopomme:20190714221748p:plain

この2つを準備した。 この2つをつなぐのが同期。ベータ版は並列処理になって、

fork
  ひとつめ
fork again OR forkagain
  二つ目
end fork OR endfork

で表記する

@startuml
title ホットケーキミックスの準備_fork構文
start
fork
  :ボウルにAをふるい入れる;
  :泡立て器で混ぜる;
fork again
  :別のボウルに卵を割りほぐす;
  :別のボウルに牛乳を加える;
  :卵と牛乳を混ぜる;
end fork
:混ぜ合わせた卵と牛乳をAに加える;
:泡立て器で粉っぽさがなくなるまで混ぜる;
:生地を作る;
:生地をおたま1杯とる;
stop
@enduml

こうなる。

f:id:myopomme:20190714222024p:plain

同期をもう片方のフライパンの準備にも適用してさらにつなぐ、その先のホットケーキを焼く手順につなぐ
これもfork構文でつなぐとできる。

@startuml
title ホットケーキミックスの準備つづき_fork構文
start
fork
  fork
    :ボウルにAをふるい入れる;
    :泡立て器で混ぜる;
  fork again
    :別のボウルに卵を割りほぐす;
    :別のボウルに牛乳を加える;
    :卵と牛乳を混ぜる;
  end fork
  :混ぜ合わせた卵と牛乳をAに加える;
  :泡立て器で粉っぽさがなくなるまで混ぜる;
  :生地を作る;
  :生地をおたま1杯とる;
fork again
  fork
    :キッチンペーパーに油を染み込ませる;
    :フライパンに油を塗る;
    :フライパンを熱する;
  fork again
    :ふきんを濡らし置く;
  end fork
:ぬれたふきんの上にフライパンを置いて熱を取る;
:再び弱火にかける;
end fork
stop
@enduml

f:id:myopomme:20190714222122p:plain

現行は明示的に前後関係を記述しているので、ベータ版は現行に比べるとわかりにくく感じる。
そこが改善するともっと使いやすくなると思う。