倉庫管理システム(WMS)のような複雑なエンタープライズアプリケーションを設計する際、システム境界、アクター、ユースケースを可視化することは不可欠です。ビジュアルパラダイムのエキスパート技術インストラクターとして、私は頻繁に、重たいドラッグ&ドロップツールに悩まされることなく、クリーンでプレゼンテーションに即したアーキテクチャ図を作成する方法を尋ねられます。このマスタークラスチュートリアルでは、PlantUML を使用して包括的な WMS ユースケース図を構築する際の私の正確な思考プロセスを、無料の PlantUML エディタ, VPasCode.
以下は、一緒に構築する最終図のプレビューです:

1. グローバルスタイルと基盤構造の設定
新しいコードベースの図(diagram-as-code)プロジェクトを開始する際、私の最初の優先事項は、一貫した視覚的階層と美的デザインを確立することです。標準的な図はしばしばごちゃごちゃして見えるため、クリーンな線、読みやすいタイポグラフィ、構造化されたカラーパレットを確保するために、デフォルトスタイルを早期に上書きすることを好みます。
まず、直交コネクタ(linetype ortho) を設定して、すべての接続線をクリーンにし、水平または垂直に保ち、テキストを横切る雑多な斜線を避けます。次に、主要アクター、二次エンティティ、および内部システム境界を即座に区別できるように、アクターとユースケースのカスタム色分けを設定します。
@startuml
skinparam linetype ortho
skinparam defaultFontSize 14
skinparam defaultFontColor #333333
skinparam vpDiagramType UseCaseDiagram
skinparam actor {
BackgroundColor #E8F5E9
}
skinparam usecase {
BackgroundColor #BBDEFB
BorderColor #1976D2
ArrowColor #1976D2
}
left to right direction
2. システムアクターとシステム境界の定義
次に、システムの境界を定義し、誰がそれと相互作用するかを特定する必要があります。倉庫管理のシナリオでは、3 つの明確なアクターがいます:
- 倉庫管理者:日常業務、在庫レベル、および在庫移動を担当する主要アクター。
- 管理者:高レベルの在庫カウント、発注書、およびシステムレポートを管理する主要アクター。
- サプライヤー:外部の視点から入庫出荷と在庫入力をトリガーする二次アクター。
すべての内部システム機能を矩形コンテナに囲み、倉庫管理システムとします。これにより、内部ユースケースと外部アクターが明確に分離されます。
actor "Warehouse Managern(Primary)" as manager
actor "Adminn(Primary)" as admin
actor "Suppliern(Secondary)" as supplier
rectangle "Warehouse Management System" {
usecase "Receive Inbound Goods" as UC1
usecase "Process Purchase Order" as UC2
usecase "Register Incoming Shipment" as UC3
usecase "Perform Stock In" as UC4
usecase "Pick Orders" as UC5
usecase "Process Sales Order" as UC6
usecase "Perform Stock Out" as UC7
usecase "Manage Inventory Levels" as UC8
usecase "Run Inventory Count" as UC9
usecase "Generate Reports" as UC10
}
3. アクター関連付けのマッピングと色分け
図を直感的にスキャンできるようにするために、アクターとそれぞれのユースケース間の関連付けをマッピングします。各アクタータイプに対応する色分けされたリンクを適用します:倉庫管理者にはニュートラルブラック、管理者にはクリムソン、サプライヤーにはゴールデンロッドです。この手法は、レビューヤーがシステム権限を分析する際の認知負荷を劇的に軽減します。
マネージャー -[#black]- UC1
マネージャー -[#black]- UC5
マネージャー -[#black]- UC10
マネージャー -[#black]- UC8
管理者 -[#crimson]- UC2
管理者 -[#crimson]- UC6
管理者 -[#crimson]- UC9
UC3 -[#goldenrod]- 供給元
UC4 -[#goldenrod]- 供給元
4.ユースケースの関係性の確立(Include および Extend)
最終ステップは、依存関係の矢印を使用して、内部ユースケースが互いにどのように関連するかを定義することです。私は「<<include>>の関係性を、必須のサブプロセス(例えば、入荷品の受領には出荷登録と在庫入庫の記録が必要など)を示すために使用し、「<<extend>>の関係性を、在庫切れ時の在庫レベル管理のような、オプションまたは条件付きの動作のために使用します。」
UC1 ...> UC2 : <>
UC1 ...> UC3 : <>
UC1 ...> UC4 : <>
UC2 ...> UC6 : <>
UC5 ...> UC6 : <>
UC8 <... UC7 : <>
@enduml
なぜ図面作成ワークフローに VPasCode を使用するべきでしょうか?

この図を「VPasCode」内で作成すると、従来のデスクトップ描画ツールとは異なるいくつかの明確な利点が得られます:
- リアルタイムレンダリング:PlantUML コードを入力したり調整したりするたびに、ビジュアルプレビューが即座に更新されます。
- 自動フォーマット検出:構文エンジンを手動で指定する必要はありません。VPasCode は PlantUML、Mermaid、およびその他のフォーマットをリアルタイムで検出します。
- 無料のエクスポートオプション:完成したアーキテクチャ図を、高解像度の PNG やスケーラブルな SVG としてダウンロードするか、安全な URL を介してチームと即座に共有できます。


