ダイアグラムを作成する – PlantUML


ソフトウェア設計をしているとUMLで表現する必要がしばしばあります。オブジェクト指向の設計であったり、さまざまなモジュールが連動して動作するシステムであったり、状態の変化を説明するとき、UMLは非常に良い表現方法です。

ダイアグラムはその名のとおり図です。コンピュータを用いて画像を描画するには、ペイントのようなツールが必要です。当然ながら、今までにUMLを描画するための多くのツールが開発され、使用されています。歴史と伝統を持つIBMのRationalシリーズ、BolandのTogether Architect、MicrosoftのVisio、Plasticをオープンソース化したStarUMLなどが代表的なものです。UMLツールではありませんが、PowerPoint、またはKeynoteのようなプレゼンテーションツールを利用する方もいるでしょう。いずれも強力なツールですが、すべてGUIを持ちます。マウス操作が必要なため、開発者にとっては非常に厄介なツールだと言わざるを得ないことでしょう。

キーボードだけで図を描くことはできないか?

[図1]

図のようにキーボードだけで進行するテキストベースのオンラインRPGゲームであるMUDを経験したことがありませんか?コマンドを入力して、脳内グラフィックカードをフル稼働して、頭の中に華麗なマップを描いてゲームをしていた、まさにそのような経験です。これをもとに、テキストだけで図を表現してみよう。

Alice -> Bob: Authentication Request
Alice <- Bob: Authentication Response

例は、AliceがBobに認証を要求して、Bobが要求に対する応答を与える手順を表現した簡単な文章です。名前、矢印、動作を直感的に説明しています。そのまま図に置き換えられるとよいのですが、オープンソースのUMLツールPlantUMLを使うとそれが可能になります。
PlantUMLを使ってサンプルをシーケンス図に変換すると、下図のようになります。

[図2] Alice / Bob認証手続きのシーケンス図の変換結果

GUIツールを使って同じ図を描画するには、インスタンスの両方をドラッグして、ラベリングを2回、矢印を2回接続し、またラベリングを2回行う必要があります。私たちの手はマウスとキーボードを行き来して忙しいことでしょう。

インストール方法

PlantUMLはJavaで実装されているので、JVMだけが戻ればどのようなマシンでも動作します。最も簡単なインストール方法は、Webサイトのダウンロードページから、あらかじめコンパイルされたjarファイルを受け取り使用することです。EclipseやIntelliJを使うとプラグインとしてインストールすることもできます。やはりウェブサイトを参照してみよう。

キーボード愛好者にはcliを使ってインストールする方法をお勧めします。

  • Devian系Linux
$ sudo apt-get install plantuml
  • Redhat系Linux
$ sudo yum install plantuml
  • macOS
$ brew install plantuml

使用方法

シーケンス図のサンプルをPlantUML文法で表現すると、次のとおりです。

@startuml 
Alice -> Bob: Authentication Request 
Alice <- Bob: Authentication Response 
@enduml

そのままtxtファイルとして保存し、plantumlを実行すると、上図のような画像ファイルが生成されます。

$ plantuml filename.txt

クラス図は、次のように表現できます。

@startuml
class Class01 {
  String data
  void methods()
}
Class01 <|-- Class02
@enduml

ほとんどコードレベルですね。開発者にとってこれ以上の優れた文法はないでしょう。txtファイルとして保存し、plantumlを実行すると、下図のようにクラス図が生成されます。

[図3] Alice / Bob認証手続きのクラス図

ステートダイアグラムはどうでしょうか?

@startuml
[*] --> Running: Start
Running --> Pause: Pause
Pause --> Running: Resume
Running --> [*]: Stop
@enduml

[図4] Alice / Bob認証手続きのステート図

シーケンス図の文法とほぼ同じような文法で、上図のようにステートダイアグラムが取得できます。

この他にも、ユースケース、アクティビティ、コンポーネント図など、UMLのほとんどを簡単かつ直感的な文法で表現できます。図に基づいて文法が若干異なりますが、全体的には直感的な印象を受けます。詳細文法はウェブサイトを参照しよう。

おわりに

図を描くのが難しいと感じる方には、PlantUMLを強くお勧めします。
PlantUMLを使うとさらに文字を書くように図が描けます。

TOAST Meetup 編集部

TOASTの技術ナレッジやお得なイベント情報を発信していきます
pagetop