Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

大正義plantUMLがエンジニアをUML地獄から救う

plantUMLはテキストであの忌々しいUMLを書き表す拡張です。

利用環境一覧

PlantUML

導入法

ブラウザ上での簡易確認

単に動作を確認したいだけであれば、
PlantUMLServer
で動作をみることもできます。

sequence diagram

Father <- MYN : すいません許してください!何でもしますから!
Father -> MYN : ん? 今なんでもするって、言ったよね?

f:id:shuzo_kino:20131001235957p:plain

use case diagram

@startuml
left to right direction
skinparam packageStyle rect
actor customer
actor clerk
rectangle checkout {
  customer -- (checkout)
  (checkout) .> (payment) : include
  (help) .> (checkout) : extends
  (checkout) -- clerk
}
@enduml

f:id:shuzo_kino:20131002001111p:plain

class diagram

@startuml

class BaseClass

namespace net.dummy #DDDDDD
    .BaseClass <|-- Person
    Meeting o-- Person
    
    .BaseClass <|- Meeting

end namespace

namespace net.foo {
  net.dummy.Person  <|- Person
  .BaseClass <|-- Person

  net.dummy.Meeting o-- Person
}

BaseClass <|-- net.unused.Person

@enduml

f:id:shuzo_kino:20131002001347p:plain

activity diagram

@startuml

(*) --> if "Some Test" then

  -->[true] "activity 1"
  
  if "" then
    -> "activity 3" as a3
  else
    if "Other test" then
      -left-> "activity 5"
    else
      --> "activity 6"
    endif
  endif
  
else

  ->[false] "activity 2"
  
endif

a3 --> if "last test" then
  --> "activity 7"
else
  -> "activity 8"
endif

@enduml

f:id:shuzo_kino:20131002001543p:plain

state diagram

@startuml
scale 350 width
[*] --> NotShooting

state NotShooting {
  [*] --> Idle
  Idle --> Configuring : EvConfig
  Configuring --> Idle : EvConfig
}

state Configuring {
  [*] --> NewValueSelection
  NewValueSelection --> NewValuePreview : EvNewValue
  NewValuePreview --> NewValueSelection : EvNewValueRejected
  NewValuePreview --> NewValueSelection : EvNewValueSaved
  
  state NewValuePreview {
     State1 -> State2
  }
  
}
@enduml

f:id:shuzo_kino:20131002001828p:plain

で、何が嬉しいんです?

  • テキストベース
    • git等々のバージョン管理ツールで利用し易い
    • 軽量
    • 修正が超高速。差分作成はスクリプトなりUNIXコマンドなりで一発。
    • 上手くやれば、ソースコード中にRDoc等々と合わせて記述可能
  • マルチプラットフォーム
    • pdf報告書用と内部wiki用が同一のコードで描ける。
  • GUI不要
    • 処理高速
    • レイヤ構造の意識不要