plantuml

テキストによる作図のすすめ -PlantUML-

Qiita初投稿です。
本稿ではPlantUMLの使い方についての詳しい説明はあまりしてません。
PlantUML/テキストによる作図をすると何がうれしいかという話を書いてます。

はじめに

ソフトウェア開発の業務で設計書を書く際、
図を書く方は少なくないと思います。
私もその1人です。
私の場合、特に多いのがシーケンス図です。
基本的な作り方は以下のいずれか。

  • Officeソフトで頑張る。
  • astah* Community版を使う。

最も多いパターンは後者でした。
しかし、これがなかなか大変です。

  • 矢印やメモ、ブロックの位置が均等に揃えられない。
  • 修正箇所が分かり辛いのでレビューし辛い。
  • 改修や設計修正でシーケンスが間に1つ増えるのはよくあること。
  • ワードやエクセルに張り付けるので、作った画像が長いと分割しないといけない。
  • astah* communityは7.0から商用で利用不可に。

…など、なかなか面倒です。
論文や説明資料で使うような1回限りの図であれば、
それほど不便はないのですが、何度も修正するのは大変です。
まして業務で使う場合、前回の修正者と今回の修正者が同じである限らないので。

DSLによる作図

はじめに「テキストで作図する」と耳にした際、
私はGUIプログラミングやHTML/CSSのようなものを想像しました。
しかし、更に聞くとDSL(ドメイン固有言語)という特定の用途に特化した言語を使ったものだと分かりました。

はじめに知ったはblockdiag(http://blockdiag.com/ja/) で、
その流れでseqdiagについて調べました。
しかし、簡単な図を書くには良いのですが、
業務で使うにはできることが少なすぎました。
そこで、いろいろ調べた結果、最も用途に合ったものがPlantUMLでした。

PlantUMLとは

PlantUMLはいろいろな図を書くことができるDSLとその処理系のことです。
とりあえず試してみたい方は公式ページ(http://plantuml.com/) の
オンラインジェネレータにDSLを書けば試せます。

@startuml

佐藤 -> 鈴木 : 依頼

鈴木 -> 田中 : 任せた

note left: 移譲

田中 -> 田中 : 作業

田中 --> 鈴木 : 結果

鈴木 --> 佐藤 : 結果

@enduml

hoge.png

また、PlantUMLは実行形式がjarファイルなので、
Java(JRE)が入ってればダウンロードするだけで実行できます。

user$ java -jar plantuml.jar hoge.txt

そのため、導入は非常に簡単です。
以下、PlantUMLのメリット・デメリット。

PlantUMLのメリット

  • Javaが入っていれば動く。
  • 多様な図の作成に使用できる。
  • 日本語が使える。
  • 一般的な記法(例えばシーケンス図の場合、分岐や反復、並列など)は一通りできる。
  • アイコンや矢印などの種類が多い。
  • 改ページができるため、別に画像を分割する必要がない(シーケンス図の話)。
  • ライセンスはGPLなので、商用利用可能。
  • 公式ページの情報量が多い。

PlantUMLのデメリット

  • 記法が非常に多いので真面目に全部暗記するのはほぼ無理です。
  • 自由記入可能なOfficeやastahに比べると制限があります。 (例えばシーケンス図で同じタイミングでシーケンスを書くといったことはできないので、表現には工夫が必要でした)

おまけ

私は試していませんが、EclipseやIntelliJ、Atomなどを使えば、
テキストを書きながら図のプレビューが見れるとかなんとか…。
また、アドオンを入れるとGoogle DocsやRedmine、LatexなどでもPlantUMLを使用できるようです。

最後に

以下、テキストで作図をする場合のメリット・デメリットです。

テキストによる作図のメリット

  • 作成・修正・流用(コピペ)が簡単。
  • PCパワーが不要。
  • diffで修正差分の比較ができる(diffに限った話ではないです)。
  • grepで検索ができる(grepに限った話ではないです)。
  • 今後の展望ですが、DSLからアプリやインフラの設定の雛形を作成する未来があるかもと勝手に思ってます。

テキストによる作図のデメリット

  • CUIなのでGUIと違って覚える必要がある。 (Officeやastahも大概多い)
  • できることは提供された機能のみ。