見出し画像

PlantUMLのススメ

こんにちは、桜草です。

前回から随分間があきましたが、
今回は最近私がハマってる設計書作成ツールについてご紹介。

業界によっては今さら…???ですが、
去年まで見方がよく分からなくて毛嫌いしていた節があるので、
それも合わせて見ていこうと思います。

そもそもPUMLって何?

プログラマーにとってはお馴染みの、設計フェーズで頻繁に作成する
シーケンス図、ユースケース図、クラス図、アクティビティ図を、
UMLと呼ばれる統一モデリング言語で作成するツールのことです。

掘り下げていくとactorやらentityやらdatabaseやらとややこしいのですが、
ここに関しては私も勉強中なのでここは放り投げます。
多分このあたりにあると信じている。

https://plantuml.com/ja/sequence-diagram

例えば?

サンプルで私の物件探しをシーケンス図にしてみました。
分かりやすいように日本語表記です。
(見る分にはいいですが、実装時はものすごく面倒でした)

そもそもサイト探す前に不動産会社に予約入れるでしょとかそういうのはなしで、あくまで私の探し方のシーケンス図です。

物件探しシーケンス

何がいいの?

メリット1:レイアウトを気にせず修正できる

UMLが使えない環境で上記のようなシーケンス図を作ろうとすると、
astha、Cacooなどのツールもありますが、古風なところでは(言い方)Excelで作成します。

Excelのオブジェクトで線やら四角やらを駆使して作成した場合、何が嫌かというと、
最後の方でシーケンスの線を少し移動したいとか思った時、とてつもない労力が必要になることです。

上記のサンプルで初めの方に出てくるloop枠は、これが必要だと思い至ったのは、最後の最後、物件が[思っていたのと違った]条件の「再度内見申し込み」になってからです。

これをExcelで修正しようとすると、私なら明日に回したいレベルで疲労が溜まります。。

が、UMLなら勝手によしなに調整してくれる。
私の疲労も溜まらない。素晴らしい✨

メリット2:バージョン管理できる

Excelでドキュメントを作成した場合、バージョン管理はできるはできますが、差分が分かりづらくて管理が面倒です。

昔の現場ではSubversion(svn)を使ってExcelのバージョニングをしていましたが、これは複数名で修正し始めると途端に破綻していました。
(修正が巻き戻ったり、コンフリクトが頻発したり。。)

一方このUML。
pngに書き出しはしていますが、元はと言えばただのテキストファイル。
つまり、GitHubで管理できる!!
今回のはここにおいておきます。

複数人で修正してもOK、誰が、いつ、どこを修正したのかも一目瞭然。
しかもレビューしてもらいやすい。

個人開発ではどっちでも。かもしれないですが、
プロジェクト管理が必要になってくると、これは強い味方です。

メリット3:リアルタイムで確認できる

そうは言っても、所詮は言語。
修正するたびにコンパイルしないといけないんじゃないの?
そう思っていた時期が、私にもありました。

今回の私の開発ツールはVSCode。
基本的に何でも来いなツールとして有名ですが、
拡張機能としてPlantUMLがちゃんといます。

スクリーンショット 2021-01-05 22.36.01

というよりそもそもコンパイルやらビルドやらは一貫して必要ないんですね。

コードを書きながらその都度プレビューしてくれます。
(これでも遅いと感じる方もいるらしく、公式のPlantUMLサーバなるものもあるらしいですが、個人的にはそこまで遅くはないかなと)

スクリーンショット 2021-01-05 22.45.18

文法間違ったりしててもすぐに気付ける!
コーディング中のストレスって地味に蓄積されて行きますからね。。
間違った時点で気付けるのはとてもありがたい。

どうして普及していないの?

というより、私の周りではあまり普及していないだけかもですが、
個人的に今まで毛嫌いしていたのもあります。

デメリット1:環境がないと修正ができない

上記のようにプレビューを見ながら開発できるのは、VSCode、PlantUMLの拡張機能は当然として、
HomeBrew、graphviz、Java(JDK)をインストールしておかないと動きません。

この環境設定が地味にめんどくさい。

特にJDK。ダウンロードするだけでしょ?と上級者は言います。
が。JAVAJava SE Development Kit(JDK)とで厳密に何が違うのか、
この10年逃げ続けてよく分かってない自分にはすこーしハードルが高い。

うまく動かせられず、30分くらい悩んでぐぐる先生に相談しまくりました😅

同様のことがプロジェクトメンバー全員の負担になると、
これはこれでまた大問題。

唯一の救いは、全部無料でできる、ということくらいでしょうか。

デメリット2:レビューしづらい

UMLが読める人しかプロジェクトにいないならこれは該当しないのですが、例えばクライアント先に提出してここをこう直して欲しい、と言われた場合。

Excelの場合は指摘は吹き出しコメントとして返って来てました。

これもこれで賛否両論ですが、シーケンス図として一枚の画像になっていると、ここにはもう指摘は入れられず、文字でのやりとりしかできない。

これはちょっと問題かなと思っています。

デメリット3:前提知識がないと読みづらい

UML特有の、図形、矢印(実線、破線)、繰り返し、条件分岐などなど、
前提として決められている情報がかなり多い。

私が今まで避けていた原因はここにあります。

楕円形はユースケース?でもこれはシステムだからDBの形にすべき??
など、レイアウト崩れは考えなくてもいい分、余計なことに頭を使う印象があります。

今でこそシーケンス図やER図、クラス図も何となく読めるようになりましたが、それでも「何となく」止まりです。
使わない表記はすぐに忘れて風化するので、この点は弱点かなと思います。


さて、長々と書いてきましたが、今の現場ではPlantUMLを多用する現場です。

多少頭は使いますが、元々私は設計自体が好きなので、
レイアウト崩れとかいうものに気を取られず設計に集中できるツールは
とてもありがたいです。

ツールならではの不自由さもありますが、
これからも使い続けていきたいなと思えるものですので、
皆様もよければぜひお試しください!

それでは、ここまで読んでいただき、ありがとうございました。


この記事が気に入ったらサポートをしてみませんか?