Edited at

PlantUML Cheat Sheet

PlantUML は DSL(ドメイン特化言語) で UML の図を描きます。

テキストで記述するので Git で差分を確認したり GitHub 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

@startuml

actor Promoter
actor Entrant

Promoter --> (Create Event)
Promoter -> (Attend Event)

Entrant --> (Find Event)
(Attend Event) <- Entrant

(Attend Event) <.. (Create Member) : <<include>>

@enduml

usecase_diagram



Activity

アクティビティー図は、プロセスの状態を表現します。

keyword
usage
image

" "
アクティビティ

(*) ->
開始状態

-> (*)
終了状態

@startuml

(*) --> "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" --> (*)

@enduml

activity_diagram



State

ステートマシン図は、オブジェクトの状態を表現します。

keyword
usage
image

[*] ->
開始状態

-> [*]
終了状態

@startuml

[*] --> active

active -right-> inactive : disable
inactive -left-> active : enable

inactive --> closed : close
active --> closed : close

closed --> [*]

@enduml

state_diagram



Sequence

シーケンス図は、オブジェクト間のやり取りするメッセージと順序を表現

keyword
usage
image

->
同期メッセージ

<--
同期応答

->>
非同期メッセージ

<<--
非同期応答

@startuml

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

@enduml

sequence_diagram



Class

クラス図は、論理的なビューを表現します。

keyword
usage
image

class
クラス

+
Public

-
Private

#
Protected

~
Package

@startuml

class User {
username
password
+sign_in()
}

class Group {
name
}

class Member {
roles
}

User .. Member
Group .. Member

@enduml

class_diagram



Object

オブジェクト図は、論理的なビューを表現します。

keyword
usage
image

object
オブジェクト

*-
コンポジション

o-
集約

@startuml

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

@enduml

object_diagram



Component

コンポーネント図は、コンポーネントの依存関係を表現します。

keyword
usage
image

[ ]
コンポーネント

@startuml

cloud "Cloud" {
package "Package" {
[register]
frame "frame" {
[backup]
}
}
}

node "Node" {
database "Database" {
[store]
}
folder "Folder" {
[File]
}
}

[register] .. [store] : HTTP
[backup] .. [File] : FTP

@enduml

component_diagram



Common


Note

タイトル・ノート・コメントは共通で使えます。

keyword
usage
image

title
タイトル

note left :
左のノート

note right :
右のノート

'
1行 コメント

/' '/
ブロック コメント

@startuml

title Title

( )
note left : Note

[ ]
note right : Note

' single-line comment

/'
block comment
'/

@enduml

basic_common



Element

アクターやエンティティなどの要素が使えます。

keyword
usage
image

actor
アクター

agent
エージェント

usecase
ユースケース

component
コンポーネンント

boundary
バウンダリー

control
コントロール

entity
エンティティー

interface
インタフェース

@startuml

actor actor
:Actor alias:

agent agent
usecase usecase
component component
boundary boundary
control control
entity entity
interface interface

@enduml

element



Package

フォルダーやノードなどのパッケージが使えます。

keyword
usage
image

package
パッケージ

folder
フォルダー

artifact
アーティファクト

node
ノード

frame
フレーム

cloud
クラウド

database
データベース

storage
ストレージ

@startuml

package package
folder folder
artifact artifact
node node
frame frame
cloud cloud
database database
storage storage

@enduml

all_package



Arrow

矢印の向きと配置の位置を指定できます。

keyword
usage
image

-up->

-down->

-left->

-right->

@startuml

up -up-> right
-right-> down
-down-> left
-left-> up

@enduml

basic_participant



Salt

UML ではありませんが 簡易なウィジェット を表現することができます。


Basic widgets

ボタンやインプットなどを表示します。

@startuml

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^
}

@enduml

basic_widgets


Tree widget

ツリーの構造を表示します。

@startuml

salt

{
{T
+ World
++ America
+++ Canada
+++ USA
++++ New York
++++ Boston
+++ Mexico
++ Europe
+++ Italy
+++ Germany
++++ Berlin
++ Africa
}
}

@enduml

tree_widget


Tips


Example

PlantUML の実用例を紹介します。