PlantUML は DSL(ドメイン特化言語) で UML の図を描きます。
テキストで記述するので Git で差分を確認したり Git Flow で関係者とコラボレーションをして図が描けるので便利です。
PlantUML は多くの UML に対応していますが、よく使うものを チートシート にまとめました。
Diagram
UML は大きく 振る舞い図 と 構造図 に分類されます。
Behavior
振る舞い図は、振る舞いに関する機能を表現します。
Diagram | PlantUML | 説明 |
---|---|---|
ユースケース図 | Use Case | 要求される機能を表現 |
アクティビティ図 | Activity | プロセスの状態を表現 |
ステートチャート図 | State | オブジェクトの状態を表現 |
シーケンス図 | Sequence | やり取りするメッセージと順序を表現 |
Structure
構造図は、システムの静的な構造や実装の物理的な要素を表現します。
Diagram | PlantUML | 説明 |
---|---|---|
クラス図 | Class | 論理的なビューを表現 |
オブジェクト図 | Object | 論理的なビューを表現 |
コンポーネント図 | Component | コンポーネントの依存関係を表現 |
パッケージ図 | Component | パッケージの依存関係を表現 |
配置図 | Component | システムの物理的な配置を表現 |
UML
Use Case
ユースケース図は、要求される機能を表現します。
keyword | usage | image |
---|---|---|
( ) |
ユースケース | |
-> |
関連 | |
.> |
Extend, Include |
actor Promoter
actor Entrant
Promoter --> (Create Event)
Promoter -> (Attend Event)
Entrant --> (Find Event)
(Attend Event) <- Entrant
(Attend Event) <.. (Create Member) : <<include>>
Activity
アクティビティー図は、プロセスの状態を表現します。
keyword | usage | image |
---|---|---|
" " |
アクティビティ | |
(*) -> |
開始状態 | |
-> (*) |
終了状態 |
(*) --> "Find Event"
"Find Event" -> "Attend Event"
if "Capacity?" then
->[ok] "Create Ticket"
else
-->[full] if "Standby?" then
->[ok] "Standby Ticket"
else
-->[no] "Cancel Ticket"
"Cancel Ticket" --> (*)
endif
endif
"Create Ticket" --> ==show==
"Standby Ticket" --> ==show==
==show== --> "Show Ticket"
"Show Ticket" --> (*)
State
ステートマシン図は、オブジェクトの状態を表現します。
keyword | usage | image |
---|---|---|
[*] -> |
開始状態 | |
-> [*] |
終了状態 |
[*] --> active
active -right-> inactive : disable
inactive -left-> active : enable
inactive --> closed : close
active --> closed : close
closed --> [*]
Sequence
シーケンス図は、オブジェクト間のやり取りするメッセージと順序を表現します。
keyword | usage | image |
---|---|---|
-> |
同期メッセージ | |
<-- |
同期応答 | |
->> |
非同期メッセージ | |
<<-- |
非同期応答 |
actor Entrant
Entrant -> Ticket : Attend Event Request
activate Ticket
Ticket -> Member : Create Member Request
activate Member
Member -> Member : Create Member
Ticket <-- Member : Create Member Response
deactivate Member
Ticket -> Ticket : Create Ticket
Entrant <-- Ticket : Attend Event Response
deactivate Ticket
Class
クラス図は、論理的なビューを表現します。
keyword | usage | image |
---|---|---|
class |
クラス | |
+ |
Public | |
- |
Private | |
# |
Protected | |
~ |
Package |
class User {
username
password
+sign_in()
}
class Group {
name
}
class Member {
roles
}
User .. Member
Group .. Member
Object
オブジェクト図は、論理的なビューを表現します。
keyword | usage | image |
---|---|---|
object |
オブジェクト | |
*- |
コンポジション | |
o- |
集約 |
object User
object Group
object Member
object Event
object Ticket
User . Group
User o.. Member
Group o.. Member
Group o. Event
Event o.. Ticket
Member . Ticket
Component
コンポーネント図は、コンポーネントの依存関係を表現します。
keyword | usage | image |
---|---|---|
[ ] |
コンポーネント |
cloud "Cloud" {
package "Package" {
[register]
frame "frame" {
[backup]
}
}
}
node "Node" {
database "Database" {
[store]
}
folder "Folder" {
[File]
}
}
[register] .. [store] : HTTP
[backup] .. [File] : FTP
Common
Note
タイトル・ノート・コメントは共通で使えます。
keyword | usage | image |
---|---|---|
title |
タイトル | |
note left : |
左のノート | |
note right : |
右のノート | |
' |
1行 コメント | |
/' '/ |
ブロック コメント |
title Title
( )
note left : Note
[ ]
note right : Note
' single-line comment
/'
block comment
'/
Element
アクターやエンティティなどの要素が使えます。
keyword | usage | image |
---|---|---|
actor |
アクター | |
agent |
エージェント | |
usecase |
ユースケース | |
component |
コンポーネンント | |
boundary |
バウンダリー | |
control |
コントロール | |
entity |
エンティティー | |
interface |
インタフェース |
actor actor
:Actor alias:
agent agent
usecase usecase
component component
boundary boundary
control control
entity entity
interface interface
Package
フォルダーやノードなどのパッケージが使えます。
keyword | usage | image |
---|---|---|
package |
パッケージ | |
folder |
フォルダー | |
artifact |
アーティファクト | |
node |
ノード | |
frame |
フレーム | |
cloud |
クラウド | |
database |
データベース | |
storage |
ストレージ |
package package
folder folder
artifact artifact
node node
frame frame
cloud cloud
database database
storage storage
Arrow
矢印の向きと配置の位置を指定できます。
keyword | usage | image |
---|---|---|
-up-> |
上 | |
-down-> |
下 | |
-left-> |
左 | |
-right-> |
右 |
up -up-> right
-right-> down
-down-> left
-left-> up
Salt
UML ではありませんが 簡易なウィジェット を表現することができます。
Basic widgets
ボタンやインプットなどを表示します。
salt
{
Just plain text
[This is my button]
() Unchecked radio
(X) Checked radio
[] Unchecked box
[X] Checked box
"Enter text here "
^This is a droplist^
}
Tree widget
ツリーの構造を表示します。
salt
{
{T
+ World
++ America
+++ Canada
+++ USA
++++ New York
++++ Boston
+++ Mexico
++ Europe
+++ Italy
+++ Germany
++++ Berlin
++ Africa
}
}
Tips
Example
PlantUML の実用例を紹介します。