処理の流れや分岐を表すUMLの図。
アクティビティ図とは、処理の流れや分岐を表すUMLの図のことです。開始から終了まで、処理がどの順で進み、どこで条件によって枝分かれするかを矢印でつないで表します。
身近な例で考えると、料理のレシピや作業マニュアルに似ています。「材料を切る → 火が通ったか? → 通っていれば盛り付ける、まだなら加熱を続ける」のように、順番と分かれ道を図にしたものがアクティビティ図です。
上のツールで▶ボタンを押すと、ネット注文の処理を題材に、開始ノードから始めてアクション・判断・合流・終了をつなぎ、処理の流れが組み上がる様子を確認できます。
アクティビティ図で使う主な記号は次のとおりです。これらを矢印でつないで流れを作ります。
・開始ノード(塗りつぶした黒丸):処理のスタート地点。必ず1つ
・アクション(角丸の長方形):1つのまとまった処理
・判断ノード(ひし形):条件で流れを分ける分岐。枝に[条件]を書く
・マージノード(ひし形):分かれた流れを1本に合流させる
・終了ノード(二重丸):処理の終わり
・制御フロー(矢印):処理が進む向きをつなぐ
さらに、複数の処理を同時に行う並行処理は、太い横棒(フォークで枝分かれ・ジョインで合流)で表せます。また、スイムレーンという縦や横の区切りで「どの担当者・部門がその処理を行うか」を分けて描くこともできます。これらはアクティビティ図ならではの表現です。
アクティビティ図とフローチャートは、どちらも処理の流れと分岐を描く点でよく似ています。見た目もそっくりで、混同しやすい図です。
| 項目 | アクティビティ図 | フローチャート |
|---|---|---|
| 所属 | UMLの図の一つ | UMLには含まれない |
| 並行処理 | フォーク/ジョインで表せる | 表しにくい |
| 担当の表現 | スイムレーンで分けられる | 標準にはない |
ざっくり言えば、アクティビティ図はフローチャートを発展させ、UMLに取り込んで並行処理や担当分けも表せるようにしたものです。1本道の単純な処理ならフローチャートでも十分ですが、複数の担当が関わる業務や同時に進む処理を描きたいときは、アクティビティ図が向いています。
判断ノード(ひし形)は、「条件によって流れを分ける」場所です。ひし形から出る矢印には [はい]・[いいえ] のようなガード条件(=その矢印を進む条件)を書きます。
なぜひし形を使うのか。「分かれ道」であることをパッと見て分かるように、丸や四角とは別の形にしています。ひし形を見たら「ここで流れが2手以上に分岐する」と読み取りましょう。分岐した流れは、後でマージノード(同じひし形)で1本に戻します。
身近な例で考えると、道路の交差点の標識に似ています。判断ノードが交差点で、ガード条件が「右折禁止」「直進のみ」などの標識。条件に合った矢印(道)を選んで次の処理(目的地)へ進みます。上のツールのSTEP4でひし形と分岐を確認できます。
アクティビティ図では、開始ノード(塗りつぶした黒丸)は必ず1つだけ置くというルールがあります。終了ノードは複数置ける場合もありますが、基本は1つでまとめるのが分かりやすい設計です。
なぜ開始は1つだけか。もし開始ノードが2つ以上あると「どちらから処理が始まるのか」が分からなくなり、図を見た人が混乱します。「スタート地点は必ず1か所」と決まっていることで、流れの出発点が明確になり、図が迷わず読めます。
身近な例で考えると、マラソンのスタートラインと同じです。スタートが2か所あれば、どこから走り始めたかで順位が変わってしまいます。スタートは1つと決めることで「同じ条件の同じ流れ」が保証されます。上のツールの最初のSTEPで黒丸(開始ノード)が1つだけ置かれることを確認できます。