2012/07/01

UML (Unified Modeling Language) でも


いろいろ使えそうなUML

オブジェクト指向プログラミングに興味があるので、その設計図の役割を果たすUML (Unified Modeling Language) の学習をスタートしようと思う。UMLはモデリング言語という言語で、プログラミング言語に近い存在。CやJavaのテキストに対してビジュアルを使う。UMLの目的は複雑なプログラムの分析や設計。単純なプログラムなら必要ないが、クラスを数十使う規模のオブジェクト指向のプログラムであれば、UMLを導入して、しっかり設計した方がよい。ちゃんとした設計であれば、修正や拡張が容易に行えるようになり、作ったパーツは使い回しができるようになる。個人的には小規模なプログラムしか作らないので、現状ではオブジェクト指向も必要なかったりするのだが、UMLはプログラムだけでなく、様々な分析、設計に使えるので、やってみる価値はありそうだ。仕事でも使えるかも・・・という期待もある。

クラス、シーケンス・ダイアグラムから学習

UMLにはたくさんのダイアグラムがあって、目的に応じて使い分ける。UML1.xから現在のUML2.xを比較すると構成が変化していて、拡張もされているようだ。はじめから全部使うことはなさそうなので、一番利用頻度が高そうな、クラス・ダイアグラムとシーケンス・ダイアグラムから学習してみる。そのほかは、必要に応じて、たまに利用する程度だろう。UML入門書や入門サイトをみるとユースケース・ダイアグラムをはじめに扱っているけど、あれはシンプルすぎて逆に表現が難しい。クラスやシーケンスをしっかり描ける人でないと使いこなせないように思えたので、クラス、シーケンスの次にユースケースという流れかな。

UML2.2のダイアグラムの構成

太字が各ダイアグラムとなる。
UML diagrams:
    Structure diagrams:
         Class diagram
         Component diagram
         Composite structure diagram
         Deployment diagram
         Object diagram
         Package diagram
         Profile diagram
    Behavior diagrams:
         Activity diagram
         Use Case Diagram
         state machine
         Interaction diagrams:
                Communication diagram
                Interaction overview diagram
                Sequence diagram
                Timing diagram


図書館の本で学習

まずは図書館で借りてきた入門書(UML1.x)をさらっと読んでから、実際に描いてみることにした。専門用語が多く、Javaで使われている用語とも微妙に違うところも多く、なかなかとっつきにくい印象。また用語は、本によって日本語だったり、英語をそのままカタカナにした場合もありバラバラ。無理に日本語にすると、英語のドキュメントに目を通すときに厄介なので、英語表記に変換しながら学習してみる。また参考にする情報の多くがUML1.4とかだったりするし、ツールの多くもUML1.xだったりする。まずは1.xで学習をスタートする。基本は変わらないので問題はないだろう。最新との違いは多少は意識したいと思う。

図はDia(ダイアグラムエディタ)を使ってみる

https://live.gnome.org/Dia/
手でUMLを描くのもよいが、Blogにアップすることも考えると、それなりのツールを導入したい。そこで評判のよいDiaを使ってみることにした。他にもソースコードを出力できるArgoUMLなどUML専用ソフトなどもあったが、まずは図だけ描ければよいのでDiaで十分だろう。DiaはGNOMEプロジェクトで、マルチプラットフォーム&オープンソース。つまり無料で利用できる。機能としては様々なダイアグラムを描くことができるエディタ。あらかじめ図が用意されいているので並べるだけで作れてしまう。UMLだけでなく、電子回路図なども簡単に描画できる。出力フォーマットはpng、svg、pdf、eps、dxf、texなど広範囲に対応している。UML以外でも使えるので、使い勝手がよければ、作図はこれに集約するかも。

インストールサイズは約70MBで、起動時のメモリはおそよ30MB。最近の巨大なアプリに比べれば軽量と言える。動作もそこそこでストレスはない。

少しいじったら、日本語の入力が出来ない箇所があった。ツールメニューの入力メソッドでシンプルを選択すると、日本語が扱えるようになった。

プログラム言語はJava

基本的にはUMLで描いたダイアグラムを元に、実際のプログラムに置き換えて確認していくという流れになる。本にはJavaの例が多いので、Javaで確認しながら学習すのが一番スムーズだろう。

ボチボチやっていくつもり

UMLは多少実益も兼ねているが、やはり趣味なので、のんびりやっていこうと思う。まずはクラス・ダイアグラムの描き方からボチボチと。

UML 目次