Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

大正義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不要
    • 処理高速
    • レイヤ構造の意識不要