2229
Help us understand the problem. What are the problem?

posted at

updated at

PlantUML Cheat Sheet

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 の実用例を紹介します。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2229
Help us understand the problem. What are the problem?