PlantUMLはUML図を生成する記法です。
シンプルなテキストファイルで UML が書ける、オープンソースのツール
PlantUML integration – Plugins | JetBrains
便利なのですが生成の配置の制御が大雑把なのが玉に瑕です。
画面に10個、20個もノードを描画すると関係線(この記事で使う造語。関係を表現する線)が交差して複雑になりだします。
@startuml abstract class AbstractList abstract AbstractCollection interface List interface Collection class ArrayList { Object[] elementData size() } enum TimeUnit { DAYS HOURS MINUTES } abstract class AbstractList2 abstract AbstractCollection2 interface List2 interface Collection2 List <|-- AbstractList Collection <|-- AbstractCollection Collection <|-- List AbstractList <|-- ArrayList List2 <|-- AbstractList2 AbstractList2 <|-- AbstractCollection2 AbstractList2 <|-up- Collection2 AbstractCollection <|- AbstractList ArrayList <|-- ArrayList2 AbstractList <|-- AbstractList2 AbstractCollection <|-- AbstractCollection2 List <|-- List2 Collection <|-- Collection2 @enduml
このためにpackage{}
で集約を作ったり矢印のstyleskinparam linetype ortho
や-left-|>
で方向を制御します。集約は簡単にいい感じになるので定義できるときはできる限り記述しておくべきです。
@startuml skinparam linetype ortho package 1st { abstract class AbstractList abstract AbstractCollection interface List interface Collection class ArrayList { Object[] elementData size() } } enum TimeUnit { DAYS HOURS MINUTES } package 2nd { abstract class AbstractList2 abstract AbstractCollection2 interface List2 interface Collection2 class ArrayList2 { Object[] elementData size() } } List <|-- AbstractList Collection <|-- AbstractCollection Collection <|-- List AbstractList <|-- ArrayList List2 <|-- AbstractList2 AbstractList2 <|-- AbstractCollection2 AbstractList2 <|-up- Collection2 AbstractCollection <|- AbstractList ArrayList <|-down- ArrayList2 AbstractList <|-down- AbstractList2 AbstractCollection <|-down- AbstractCollection2 List <|-down- List2 Collection <|-down- Collection2 @enduml
見やすくするなる時に重要になるのは連続した関係線があまり曲がらないことです。a -> b-> cとなる時に、a -right-> b, b-right-> c, の様に書くとやりやすいです。