PlantUMLを使ってみる

PlantUMLを使ってみる

ドキュメントを作るとき、図も文章やコードと同じようにGitで差分管理できると嬉しいなぁ、と思っていました。
そこへテキストベースで各種UML図が作成できる、PlantUMLなるものがあると後輩に教えてもらったので、少し試してみることにしました。
(UMLも勉強したことなかったので、ちょうどいいやと)

環境

VSCodeにPlantUML Extensionを導入

VSCodeから、PlantUMLのExtensionをインストールします。
これだけだと動作しないので、追加でツールのインストールが必要です。

Windowsの場合、ExtensionのQuick Install for Windowsの項目に書いてある通り、ChocolateyでPlantUMLのパッケージをインストールするのが簡単でした。

試してみたこと

今回は「カレーをつくる」ことをざっくり他の誰かに説明したい、という場合を考えました。
説明に必要な要素はこんな感じだと思います。

  1. どんな道具や設備があるのか
  2. 1.で何をするのか
  3. 2.によって何が得られるのか
  4. 1-3をどのような手順で行うのか

シーケンス図を使えば説明できそうですが、

  • 道具や設備をいつから片付けられそうか
  • 道具や設備でやることのすべて

は「ざっくり」という今回の目的からすると不要な気がしたので、もう少し見やすい(見やすそうな)コミュニケーション図を使ってみることにします。

コミュニケーション図(?)を描いてみる

自分はチキンラーメンにお湯を注ぐくらいしか料理できないですが、自分の想像を説明する体で作ってみました。
カレーをつくる

PlantUMLのコードは以下の通りです。

@startuml
title  カレーをつくる

'要素
actor  Me
agent  冷蔵庫
agent  シンク
agent  コンロ
agent  炊飯器

'要素間のコミュニケーション
Me  -up->>  炊飯器 : 1. ご飯を炊く
炊飯器  .down.>>  Me : ご飯
Me  -left->  冷蔵庫 : 2. 肉と野菜取り出し
冷蔵庫  .right.>  Me : 肉と野菜
Me  -down->  シンク : 3. 野菜を洗う \n 4. 肉と野菜を切る
シンク  .up.>  Me : 切った肉と野菜
Me  -down->コンロ : 5. 肉と野菜を炒める \n 6. ルーと水を加えて煮込む
コンロ  .up.>  Me : カレールー
Me  -->  Me : 7. 盛り付け
@enduml

厳密なコミュニケーション図としてはおかしなところがあるかもしれません。

ドキュメントから使う

Markdownドキュメントに埋め込む

ここまででGitでの管理が可能な形で図の作成ができたので、当初の目的は達成されています。
しかし、ドキュメントから使う場合には、一回画像に変換して、その画像を入れ込む必要があります。
ファイル名を同じにしておけばMarkdown側は修正の必要がないものの、画像データはあまりGitで管理したくないのが正直なところです。

GitHub上で表示

Chromeで使える拡張機能Pegmatiteを使えば、GitHub上のMarkdownに埋め込まれたPlantUMLコードを画像として表示できるということで、試してみました。
※初期設定では外部のPlantUML Serverにデータを送信するため、業務で使用する場合には注意が必要です。

Pegmatite導入前

導入前

Pegmatite導入後

導入後

Written with StackEdit.

コメント

このブログの人気の投稿

Cっぽいコードでgoogle testとgoogle mockを使ってみる

Cっぽいコードでgtestとgmockを使ってみる その2

WSLにgoogle testを入れてみる