こんにちは、astah*開発チームのりりぃです。
皆さんはUMLやSysML等のモデル図を描くときに説明したいことにフォーカスして画像を作成できていますか?
私たちの会社 Change Vision には2つのオフィス(東京・福井)があります。福井オフィスがどこにあるか説明しなければいけないとき、説明したい相手に何を伝えたいかによって用意する地図が変わると思います。
- 福井オフィスに来たい人が相手なら、福井駅等のわかりやすいシンボルから福井オフィスまでの地図
- 相手が県外に住んでいて福井県のどのあたりにあるか伝えたいなら、オフィスのある福井市が福井県のどこにあるかわかる地図
- 福井県がどこにあるかわからない相手なら、福井県が日本のどこにあるかわかる地図
- etc…
もし、福井オフィスに来たい人が相手なのに福井県が日本のどこにあるかわかる地図しか渡せないとしたら、相手の人は福井オフィスにたどり着くことができないと思います。
それと同じでUMLやSysML等のモデル図を描くときも、どのような人に何を伝えたいのかを意識して図を作図しなくてはいけません。
ここでは、UMLのクラス図を例に説明します。例えばastah* APIを用いて、下図のClass0(クラス)からdependency(依存)を取得する方法をドキュメントで説明したいとします。読み手はClass0までは取得できていることとし、UMLは読めて、APIは使い慣れていない人とします。
下図はastah* API のJavadoc内にあるClass and UseCase Diagram Interfaceの画像です。これはクラス図関係のインタフェースの全貌と属性・操作を把握できる図になります。まるで詳細な駅名まで書かれた日本地図のような図です。APIに詳しい人が見たり、読み手が書き手の横に居て直接説明ができたりするのであればこの図でもいいのですが、これだけ膨大な情報があると、どこに着目していいか読み手は戸惑うでしょう。今回説明したいのはクラスから依存を取得する方法だけですので、 INamedElement, IClass, IDependency だけあれば十分です。
この図を描いたプロジェクトファイル(astahAPI.asta)を元に作業していきます。
astahAPI.zipを解凍するとastahAPI.astaが入っていますのでastah*で開きましょう。参照プロジェクトがリンク切れしている旨のダイアログが出た場合は[OK]を押下し、参照プロジェクト管理画面をそのまま閉じてください(モデル情報は間違えて改変してほしくないため参照プロジェクトとして取り込んでいます)。
新規クラス図を作成し、構造ツリーからINamedElement, IClass, IDependencyの3クラスを図上にドラッグアンドドロップします(1つずつでも複数個同時でも大丈夫です)。説明したいところにフォーカスした図を描くための準備ができます。
INamedElementをアイコン表記を標準表記に戻し、説明に必要な操作区画だけを表示します。使ってほしい操作はgetClientDependencies()なので赤字にしてみました。
さらにこの後、dependencyからClass1を取得したくなるだろうなということが容易に想像できるので、IDependencyからIClassの情報を取得できるように、少しだけ情報を足してみました。IDependencyの操作区画を表示し、INamedElementとの関係も明示化しています。INamedElementとIDependencyの継承関係はあまり意識する必要がないので少し色を薄くしてみました。
このようにastah*では、説明したいことにフォーカスした図は割と簡単に描けます。後はドキュメントにこの図を貼って、必要があれば補足説明を追記するだけです。
他にもどんな要素がINamedElementを継承しているかわかったほうが親切かもしれません。astah* API のJavadoc内にあるClass and UseCase Diagram Interfaceの画像は少し情報量が多すぎます。この図を複製し、属性区画・操作区画を非表示にします。そのあと余白を狭めるように図要素を移動します。すると、県名だけが書かれた日本地図のようにシンプルになりました。クラス名が一望できます。
さらに不要な図要素は図から削除してもいいかもしれませんし、意識してほしいクラスだけ強調してもいいかもしれません。
読み手を意識して伝えたいことにフォーカスしたベストな図を描けるといいですね!