en_USes_ESfa_IRfr_FRid_IDjapl_PLru_RU

VPasCode: PlantUML を用いた UML アクティビティ図 — 実践的チュートリアル

UML アクティビティ図は、作業の流れをモデル化しますプロセスにおける実行されるアクション、下される意思決定、並行作業、そして完了への経路を表現します。PlantUML を使えば、そのモデルをテキストとして記述し、それを図としてレンダリングできます。これは、改訂やレビューが容易で、プロジェクトドキュメントと一緒に管理できる図を作成したい場合に有用なアプローチです。PlantUML の現在のアクティビティ構文では、「開始, if, 繰り返し、および「フォーク」などの読みやすいキーワードを使用します。古いアクティビティ構文もまだサポートされていますが、新しい図には新しい構文を推奨します。

PlantUML 構文を用いたチェックアウトプロセスを示す UML アクティビティ図で、アクション、分岐、並列ワークフローを表示しています。

1. モデル化する対象

プロセスやアルゴリズムを説明するためにアクティビティ図を使用します。例として:」

顧客チェックアウト、承認プロセス、データパイプラインなどのワークフローを、分岐ダイヤモンドと並列タスクで示した UML アクティビティ図。

  • 顧客のチェックアウトワークフロー

  • 承認プロセス

  • データインポートパイプライン

  • ユースケースの手順

  • 人、チーム、またはシステムコンポーネントにまたがる作業

アクティビティは、「注文を検証する」などの作業の単位です。「制御フローはアクティビティを接続し、その順序を示します。「分岐は代替経路の中から選択し、「並行フローは並行して進められる作業を示します。図は振る舞いを明確にするものであり、実装の詳細をすべて文書化しようとするものではありません。

有用な目安:主な質問が「次に何が起こり、どのような条件下で起こるか?」である場合、アクティビティ図は適しています。

2. PlantUML の基礎

PlantUML の図は「@startuml で始まり、” で終わる@enduml。現在のアクティビティ構文では:

注文検証のコードを示す PlantUML 構文の例、対応するアクティビティ図、および主要記号の凡例。

  • startは初期ノードを示します。

  • :Action;はアクションを定義します。

  • if (...) then (...)は条件に基づいて分岐します。

  • endifは条件分岐を閉じます。

  • stopはフローを終了します。

  • repeatおよびrepeat whileは反復をモデル化します。

  • fork, fork again、およびend forkは並列作業をモデル化します。

アクションは順序通りに記述され、暗黙的に接続されます。分岐にラベルを追加し、partitionを使用して、責任や役割に基づいて作業をグループ化できます。

ここに最小限の例を示します:

リクエスト受信と検証フローを示す生成されたアクティビティ図と共に PlantUML 構文コードを表示する VPasCode インターフェース。

3. 分岐と代替パス

使用ifプロセスが選択を行う場合に使用します。分岐のラベルは条件を単に繰り返すのではなく、条件の結果を伝えるべきです。

在庫可用性の if-else 分岐を示す PlantUML コードと対応する UML アクティビティ図を表示する VPasCode インターフェース。

@startuml
start
:注文を受信;
:在庫を確認;

if (すべての商品が入荷している?) then (はい)
  :商品を予約;
  :支払いを要求;
else (いいえ)
  :顧客に通知;
  stop
endif

:注文を確認;
stop
@enduml

ここで、ifは分岐を導入し、endifで閉じます。はいおよびいいえのラベルにより代替案が明確になります。パスがendifの後に共通のアクションへ続くと、フローに再び合流します。

モデリングのヒント:すべての意味のある結果で何が起こるかを明確にしてください。エラー、タイムアウト、または拒否パスが利害関係者にとって重要である場合は、それを明示的に示すようにしてください。

4. ループとリトライ

アクションまたはアクションのグループが繰り返せる場合にループを使用します。この例では、検証に合格するまで入力を求め続けます:

データ検証ループの PlantUML コードと、リトライロジックを示す生成された UML アクティビティ図を表示する VPasCode インターフェース。

@startuml
start
:提出されたデータを読み込みます;

repeat
  :データを検証します;
  if (有効?) then (はい)
    :データを保存します;
    break
  else (いいえ)
    :検証エラーを表示します;
  :ユーザーにデータの修正を求めます;
  endif
repeat while (ユーザーは続行します?) is (はい) not (いいえ)

stop
@enduml

ループの終了条件が曖昧な場合、読み取りが難しくなることがあります。再試行を引き起こす条件と、繰り返しを終了させる条件を明確に述べてください。特に、再試行に制限がある場合やキャンセルできる場合がそうです。

5. 並列作業と同期

使用forkは、独立したアクションが並行して発生する可能性がある場合に使用し、end forkは、パスがプロセスを続行する前に同期する必要がある場合に使用します。

同期前にメール送信、リスト作成、ダッシュボード更新のための並列フォークパスを示す VPasCode UML アクティビティ図。

@startuml
start
:注文が確認されました;

fork
  :確認メールを送信します;
fork again
  :倉庫のピッキングリストを準備します;
fork again
  :販売ダッシュボードを更新します;
end fork

:注文を処理中としてマークします;
stop
@enduml

fork は必ずしも別々の人を意味するわけではありません。並行するシステム動作を表すこともできます。アクションが実際に並行して発生する場合のみ使用してください。あるタスクが別のタスクが始まる前に完了する必要がある場合は、代わりにそれらを順次モデル化してください。

6. パーティション付きのスイムレーン

パーティションは、責任のある役割、チーム、またはシステムに基づいてアクションをグループ化します。これにより、プロセス自体を変更せずに引き継ぎを明確にできます。PlantUML は、partition.

顧客、注文サービス、倉庫の役割でスイムレーンが分割された PlantUML アクティビティ図を表示する VPasCode インターフェース。

@startuml
start

partition Customer {
  :注文を提出する;
}

partition "Order Service" {
  :注文を検証する;
  if (注文は有効か?) then (Yes)
    :注文レコードを作成する;
  else (No)
    :検証エラーを返す;
    stop
  endif
}

partition Warehouse {
  :出荷を準備する;
}

partition "Order Service" {
  :確認を送信する;
}

stop
@enduml

実際の責任分担に一致するレーンラベルを選択してください。小さなコンポーネントごとに新しいパーティションを作成するのは避け、レーンが多すぎると図が読みづらくなります。

7. データオブジェクトとノート

重要な入力や出力を示すことで、いくつかのワークフローは恩恵を受けます。PlantUML アクティビティ図はオブジェクトノースtereotypeをサポートしており、ノートを使用することで、すべてのアクションラベルを段落にする必要なく、文脈を追加できます。

支払いワークフローの PlantUML コードと、支払い承認アクションに注釈が付いたレンダリングされたアクティビティ図を表示する VPasCode インターフェース。

@startuml
start
:支払いリクエストを受信する;

:支払いを承認する;
note right
  支払いプロバイダーの
  承認応答を使用します。
end note

:支払い結果を記録する;
stop
@enduml

主要なアクティビティラベルは短く保ってください。読者が必要とするが、それ自体がフローのステップではないビジネスルール、仮定、または補足はノートに記載してください。

8. 完全な例:オンラインチェックアウト

この大規模な例は、パーティション、意思決定、代替パス、並列作業を組み合わせています。

顧客入力、検証、支払い承認、並列の確認および倉庫準備を示すオンラインチェックアウトプロセスの UML アクティビティ図。

@startuml
title オンラインチェックアウト

start

partition Customer {
  :カートを確認する;
  :チェックアウトを提出する;
}

partition "Order Service" {
  :カートと住所を検証する;

  if (カートと住所は有効か?) then (Yes)
    :合計を計算する;
  else (No)
    :検証エラーを表示する;
    stop
  endif
}

partition "Payment Service" {
  :支払いを承認する;

  if (支払いが承認されたか?) then (Approved)
    :支払いを捕捉する;
  else (Declined)
    :支払い失敗を返す;
    stop
  endif
}

partition "Order Service" {
  :注文を作成する;
}

fork
  partition "Notification Service" {
    :注文確認を送信する;
  }
fork again
  partition Warehouse {
    :注文をピッキング用にキューに入れる;
  }
end fork

partition "Order Service" {
  :注文確認を表示する;
}

stop
@enduml

顧客、注文、支払い、通知、倉庫サービスのパーティションを含むオンラインチェックアウトフローを示す PlantUML アクティビティ図。

上から下へ読んでください:顧客がチェックアウトを提出し、注文サービスがそれを検証し、支払いが承認され、注文が作成されます。その後、確認と倉庫の準備が並行して実行されます。検証または支払いに失敗した場合、フローは関連する失敗パスを通じて終了します。

9. 図-as-code ワークフロー

実用的なワークフローは次の通りです:

図-as-code ワークフロー

実用的なワークフローは次の通りです:

  1. プロセスを平易な言葉で記述してください。開始点、終了点、主要なアクション、意思決定、例外、並列タスク、および責任ある役割を特定してください。

  2. 最初の PlantUML ドラフトを作成してください。スタイリングよりも先にロジックに焦点を当ててください。

  3. レンダリングして確認してください。結果が自然に読み取れ、分岐とループが理解しやすいことを確認してください。

  4. ステークホルダーとロジックを確認してください。レンダリングは構文のみをチェックし、プロセスが正しいかどうかはチェックしません。

  5. ソースを修正し、プロジェクトと一緒に保存してください。テキストベースの図は、他のドキュメントと一緒に差分比較やレビューを行うのが簡単です。

ローカルレンダリングには、PlantUML コマンドラインツールで図ファイルを生成できます。ブラウザベースのエディタは、クイックドラフトやプレビューに便利です。PlantUML もブラウザエディタを提供しており、VPasCode はライブプレビューと PlantUML アクティビティ図サポートを備えたブラウザベースのエディタを提供しています。

  1. プロセスを平易な言葉で記述してください。開始点、終了点、主要なアクション、意思決定、例外、並列タスク、および責任ある役割を特定してください。

  2. 最初の PlantUML ドラフトを作成してください。スタイリングよりも先にロジックに焦点を当ててください。

  3. レンダリングして確認してください。結果が自然に読み取れ、分岐とループが理解しやすいことを確認してください。

  4. ステークホルダーとロジックを確認してください。レンダリングは構文のみをチェックし、プロセスが正しいかどうかはチェックしません。

  5. ソースを修正し、プロジェクトと一緒に保存してください。テキストベースの図は、他のドキュメントと一緒に差分比較やレビューを行うのが簡単です。

ローカルレンダリングには、PlantUML コマンドラインツールで図ファイルを生成できます。ブラウザベースのエディタは、クイックドラフトやプレビューに便利です。PlantUML もブラウザエディタを提供しており、VPasCode はライブプレビューと PlantUML アクティビティ図サポートを備えたブラウザベースのエディタを提供しています。

10. Visual Paradigm VPasCode と AI 支援の活用

VPasCode は、Visual Paradigm のブラウザベースのテキストから図への変換エディタです。その PlantUML サポートにはアクティビティ図が含まれており、エディタはライブレンダリングを提供します。Visual Paradigm はまた、組み込みの自然言語による図生成と、図コードの修正や補正のための AI 支援についても説明しています。

有用な AI 支援ワークフロー:

コードの草案作成からロジックのレビュー、ソースファイルの保存まで、VPasCode を使用して PlantUML アクティビティ図を作成する方法を示す 5 つのステップのワークフロー。

  1. 図の種類だけでなく、動作についてもプロンプトを入力してください。例えば:
    「オンラインチェックアウト用の PlantUML アクティビティ図を作成してください。カート検証、住所検証、支払い承認、失敗経路、注文作成、並行して実行される確認メール送信と倉庫準備を含めてください。顧客、注文サービス、支払いサービス、通知サービス、倉庫の各パーティションを使用してください。現在の PlantUML アクティビティ構文を使用してください。」

  2. 生成されたソースを検査してください。次の構文を使用していることを確認してください:@startuml/@enduml、各分岐が実際の条件を表し、失敗または代替パスが処理されていること。

  3. VPasCode でレンダリングしてください。プレビューを使用して、構文エラー、分かりにくいラベル、または過度に複雑なレイアウトを見つけてください。

  4. PlantUML を自分で、または特定の AI 編集によって洗練させてください。「支払いタイムアウトパスを追加する」や「注文作成後に倉庫準備を順次処理にする」など、具体的な変更を求めてください。

  5. そのプロセスに精通している人と一緒に検証してください。AI は妥当な図の草案を作成できますが、組織の実際のプロセスが正しいことを証明することはできません。

VPasCode の正確なコントロールと機能の利用可否は製品エディションによって異なる場合があります。使用中のエディタで現在のオプションを確認してください。

11. Visual Paradigm モデリングワークフロー

図のソースとプレビューを直接操作したい場合は VPasCode を使用してください。タスクにグラフィカル編集やより広範なモデル作業が必要な場合は、Visual Paradigm のモデリング環境を使用してください。Visual Paradigm のガイダンスでは、図の生成またはインポートを行い、その後ビジュアルエディタで洗練させるワークフローが説明されています。具体的なインポートパスは製品とバージョンによって異なる場合があります。

適切な引き継ぎは以下の通りです:

PlantUML ソースの草案作成、レビュー共有、Visual Paradigm へのインポート、バージョン管理を維持しながらの改良という 4 つのステップを示す Visual Paradigm ワークフロー図。

  1. PlantUML で草案を作成し、反復してください。

  2. レビューのためにレンダリングされた図とソースを共有してください。

  3. ビジュアル編集やその他のモデリング機能が必要な場合は、関連する Visual Paradigm エディタで開くかインポートしてください。

  4. チームが選択した真実のソースとして PlantUML ソースを維持バージョンとして保持してください。2 つの場所で矛盾する編集を黙って行わないでください。

12. 一般的なミスと品質チェックリスト

図を共有する前に、以下を確認してください:

フロー検証ステップと、分岐点およびエラー処理を含むサンプル注文プロセスワークフローを特徴とする、アクティビティ図のための品質チェックリストインフォグラフィック。

  • 明確な開始点と意味のある終了点がありますか?

  • 各アクションは認識可能な作業の一部を説明していますか?

  • 意思決定の結果は明確にラベル付けされていますか?

  • 拒否、エラー、タイムアウト、またはキャンセルのパスは、必要な場合に含まれていますか?

  • ループ条件は、繰り返しと終了の動作を明確にしていますか?

  • 並列アクションは本当に独立しており、必要な場所で同期が示されていますか?

  • パーティションは有用な所有権の境界を表していますか?

  • 読者は長いアクションラベルを読まずにフローを理解できますか?

  • レンダリングされた図は実際のプロセスと一致していますか?

良いアクティビティ図は、最も長いものや最も詳細なものではありません。それは、ワークフロー、意思決定、責任、および重要な例外を明確にする最も小さな図です。

クイック構文リファレンス

目的 PlantUML パターン
開始 start
アクション :何かを行います;
分岐 if (条件?) then (はい) ... else (いいえ) ... endif
ループ repeat ... repeat while (条件?)
並列処理 fork ... fork again ... end fork
責任グループ partition Role { ... }
終了 stop

例は PlantUML の現在のアクティビティ図構文を使用しています。一般的な構文やバージョン固有のレンダリング動作については、PlantUML アクティビティ図リファレンスを参照してください。