PlantUML でシーケンス図を書いたがめっちゃ良かった

PlantUML

シンプルなテキストファイルで UML を作ることのできる、オープンソースのツール

今までは astah とかでユースケース図とかシーケンス図書いてたんだけど、 GUI で書くの辛いなと思って PlantUML というのを使ってみた。

コードで UML を書ける、今回はシーケンス図を書いたけどユースケース図やフローチャートなども書ける。

環境構築

Web のエディタだと PlantUML Editor というのがある。

けどローカルでやりたかったので VSCode の拡張を入れた。

marketplace.visualstudio.com

これを入れるだけ、シンタックスも効くようになって良い。
Java, Graphviz などを入れておけとあるけど、特に何もせず使えているので別アプリケーション経由でインストールされてたのかもしれない。

拡張子は .pu, .plantuml, .wsd などあるっぽいが .pu にしている。

書いてみる

記法

今回自分が使ったやつだけ。
シーケンス図の構文と機能 に網羅的に書いてあるけど多すぎて使いこなせていない。

  • 登場人物の宣言
    • 表示形式や表示順などを最初に定義できる
      • actor Hoge
      • database Fuga
  • 矢印
    • -> は直線、 --> は破線
    • Hoge -> Fuga: description
    • Fuga --> Huga
  • 動作中を示す表示
    • activate, deactivate で動作中を示せる
      • activate Hoge
      • deactivate Fuga
  • メモ
    • note, hnote でメモが書ける
    • note は四角、 hnote はひし形
    • left of, right of, over で位置を指定できる
      • note left of Hoge: desc
      • note right of Fuga
      • note over Hoge
  • タイトル
    • == で文字を囲むとタイトルになる
        • == タイトル ==

この 5 つの要素を覚えるだけでいいシーケンス図がかけた。

サンプル

@startuml

actor GameManager
database Application
database Database
actor User

== マスタデータ更新 ==

GameManager -> Application: データ登録
activate GameManager
activate Application

note over GameManager: 処理中は画面操作できない

Application -> Database: Insert
activate Database

Database --> Application: Success
deactivate Database

Application -> Application: データ加工

note right of Application #aqua
攻撃力↑↑
end note

Application -> Database: Insert
activate Database

Database --> Application: Success
deactivate Database

Application --> GameManager: Complete
deactivate Application
deactivate GameManager

== データ表示 ==

User -> Application: データ取得
activate User
activate Application

hnote over User : 読み込み待ち

Application -> Database: select * from item
activate Database

Database --> Application: result
deactivate Database

Application -> Application: jsonize

Application --> User: render json
deactivate User
deactivate Application

@enduml

f:id:star__hoshi:20171208181929p:plain