UMLのアクティビティ図で処理の流れを可視化しよう
皆さん、こんにちは。技術開発グループのn-ozawanです。
キリンの首が長い理由として「高いところの葉を食べるため」と言うのは有名な話ですが、実はまだ結論が出ていません。一説によると「オス同士が争うために首が長くなった」や、面白いところだと「水を飲むために首を長くした」と主張する人もいます。
本題です。
UMLは14種類の図に関する仕様が定められています。その14種類の中でも、シーケンス図、クラス図、アクティビティ図はよく使われます。アクティビティ図は上流工程から下流工程まで幅広く活躍する図であり、ぜひ覚えて欲しい図でもあります。今回はそんなアクティビティ図についてのお話です。
目次
アクティビティ図
概要
アクティビティ図は、システムやビジネスプロセスの流れを視覚的に表現するための図です。その表現はフローチャートに似ており、誤解を恐れずに言えば、アクティビティ図=フローチャートと言ってもいいかと思います。アクティビティ図とフローチャートの違いは、アクティビティ図が並行処理や条件分岐をより詳細に表現できる点にあります。
アクティビティ図の仕様はUMLで定義されています。非常にシンプルでありながら、要件定義にて業務フローを表現したり、詳細設計でプログラムの制御フローを表現したりと、上流工程から下流工程まで幅広く活躍する図です。
凡例
図 | 説明 |
---|---|
![]() |
開始ノード 開始ノードは、そのアクティビティ図におけるプロセスの開始点を表します。開始ノードは、図の中でプロセスがどこから始まるのかを明確にするために使用します。 |
![]() |
アクティビティ終了ノード アクティビティ終了ノードは、そのアクティビティ図におけるプロセスの終了点を表します。このアクティビティ終了ノードに達すると、アクティビティ図内の全てのプロセスが終了します。 |
![]() |
フロー終了ノード フロー終了ノードは、そのアクティビティ図にある特定のプロセスの終了点を表します。例えば並列処理や分岐処理等で複数のプロセスが行われる際に、その特定のプロセスのみ終了する場合に使用します。アクティビティ終了ノードと違い、このフロー終了ノードに到達しても、アクティビティ図内の全てのプロセスが終了するわけではありません。 |
![]() |
アクティビティエッジ アクティビティエッジは制御やデータの流れを表します。 |
![]() |
例外 例外が発生した際の制御やデータの流れを表します。 |
![]() |
アクション アクション(処理)を表します。 |
![]() |
オブジェクト オブジェクト(データ)を表します。 |
![]() |
条件分岐 プロセスの分岐点を表します。分岐条件はアクティビティエッジ上に記述します。フローチャートと異なり、◇の中に分岐条件は書きません。 |
![]() |
合流地点 分岐された各プロセスが合流することを表します。合流するプロセスの内、どれが1つでも到達すれば次に進みます。 |
![]() |
フォーク 並列処理を表します。 |
![]() |
ジョイン 並列処理の合流を表します。全ての並列処理が合流したら次に進みます。 |
![]() |
タイマイベント タイマーによる処理発火を表します。 |
![]() |
パーティション パーティションは、そのアクティビティ図がどの領域に属するのかを表します。左図では縦方向にパーティションを表現していますが、横方向でも、その両方でも可能です。 |
サンプル
アクティビティ図のサンプルです。
条件分岐

並列処理

パーティション

おわりに
アクティビティ図は、複雑なプロセスを視覚的に整理し、理解しやすくするための強力なツールです。アクティビティ図を活用することで、システム設計やビジネスプロセスの改善に役立てることができます。ぜひ、プロジェクトに取り入れてみてください。
ではまた。