english japanese german



UML初学者向けチュートリアル


モデリングツール astah の利用方法を、ボーリングスコア表示システムを課題として、チュートリアル形式でやさしく説明します。 ぜひ実際に手を動かし、UMLを描きながらastah*の使用方法を身につけてください。

対象図:ユースケース図、アクティビティ図、クラス図、シーケンス図

最終更新:2017年5月16日
利用エディション:astah* community 6.9


 §1. UMLとツール

UMLは、手描きすることもありますが、ここではツールを使います。
UMLを描くのになぜツールを利用するのでしょうか?主なメリットを挙げてみます。

  1. 簡単に、きれいな図をかける
  2. 自動的にサイズなどを調整してくれる
  3. 他人とUMLを交換・共有しやすい
  4. Undo / Redoで試行錯誤しやすい
  5. 誤った図を描くと注意される
  6. 図だけでなく、ツリーや表上でデータを編集できる
  7. データを再利用、二次利用できる
  8. データ間の関連を管理できる

初心者にとってのツールを使う利点を考えてみると、4、5が特に意味があると思います。
例えば、間違ったらいつでも簡単にやり直せますし、パッケージからクラスに関連を描こうとすると、ツールは「そのような関連はかけません」と教えてくれます。また、クラスを抽象クラスに設定すれば、 自動的にクラス名が斜体になります。 その他にも、各要素の形と名前の対応関係をツール上で常に確認できます。
ツールにUMLを教わるような気持ちで、いろんな操作をしてみましょう。
おかしくなったらUndo (やり直し)すればいいですからね。

▶ メニューに戻る


 §2. UMLモデリングツール astah* communityとは?

多くのUMLツールがありますが、今回は「astah* community」を使います。
機能や特徴については、astah* communityの製品情報をご参照ください。
astah*シリーズには、Javaインポート/エクスポート機能など、多種の高機能を備えたastah* professionalastah* UMLもあります。詳細は、機能比較表をご参照ください。

▶ メニューに戻る


 §3. astah* のインストール

ダウンロード

システム要件を確認して、ダウンロードページから、astah*をダウンロードします。

インストール

ダウンロード完了後、インストーラをダブルクリックして、インストールします。
(Linuxでご利用の場合は、こちらも参考にしてください)

起動

スタートメニュー、またはデスクトップのastahアイコンから起動します。

▶ メニューに戻る


 §4. astah*の画面構成と基本操作

astahの画面構成と基本操作を説明します。

  • マネジメントビュー
    astahのベースとなるビューです。メニューバーとツールバーを持ちます。
  • 構造ツリー
    パッケージやクラスなどの入れ子構造をツリー形式で表示します。ポップアップメニューでパッケージや図、クラスなどの要素を追加、削除できます。
  • 継承ツリー
    選択中のクラスやインタフェースの親や子をツリー形式で表示します。
  • マップビュー
    図の全体を表示します。マウス操作により、エディタに表示する図の表示範囲を簡単に変更できます
  • プロパティビュー
    選択されたアイテムの属性を編集するビューです。
  • ダイアグラムエディタ
    図を編集するビューです。図のアイテム作成用のツールボタン群(ツールパレット)を持ちます。

基本操作(1):新規プロジェクトを作成する

astahでは、UMLのデータを"プロジェクト"という拡張子.astaのファイルに保存します。起動後は何もプロジェクトを開いていない状態のため、まず新規のプロジェクトを作成します。
【ファイル】- 【プロジェクトの新規作成】を選択すると、プロジェクトが作成され、空の構造ツリーとプロパティビューが表示されます。


基本操作(2):パッケージや図の作成

新規のパッケージは、主に構造ツリー上のポップアップメニューから追加します。
新しい図は、構造ツリー上のポップアップメニューから、または【図】メニューから選択して作成します。

astah* community 6.9で作成できる図の種類

図の種類 概 要
クラス図 モデルの静的な構造を表す
ユースケース図 使用機能と外部環境との関連を表す
ステートマシン図 あるオブジェクトの状態変化を表す
アクティビティ図 業務や処理の流れを表す
シーケンス図 オブジェクト間のメッセージのやり取りを時系列で表す
コミュニケーション図 オブジェクト間の接続関係を特に表す
コンポーネント図 コンポーネント間の依存関係を表す
配置図 実行時のシステム構成やコンポーネントの割り当てを表す
合成構造図 クラスやコンポーネントの内部構造を詳細に表現する
オブジェクト図 モデルを使用して分類子のインスタンスを示すUML構造図
パッケージ図 パッケージ同士の依存関係を描画する


基本操作(3):アイテムの作成と編集

図を描くための基本的な操作方法は、一般的なドローイングソフトでの操作方法とそれほど変わりません。 ドローイングソフトに慣れている場合は、どんどん編集を進めてみてください。

▶ メニューに戻る


 §5. ボーリングの課題

これからいくつかの図を一緒に描いていきますが、どんな図を描きましょうか?
みなさんは、最近ボーリングをしたのはいつですか?
ボーリングをしたことがないという方は少ないと思いますので、この身近なスポーツを今回のUMLの題材にします。
例のようなボーリングのスコアを表示するシステムのUMLを描いていきましょう。

【ボーリングスコア表の例】


要求は、以下とします。

  • プレイヤがゲーム開始後は、ゲームのスコア表を表示する。
  • プレイヤが投球するごとに、スコアを更新する。
  • プレイヤはゲーム途中にスコア修正することができる。
  • ストライクがでた場合は、特別なアニメーションを表示する。

あくまでツールをつかってUMLに慣れることを目的とします。そのため、図の正確さよりも、分かりやすさを優先することをご了承ください。
それではUMLを描き始めましょう。astah*の準備はよろしいですか?

▶ メニューに戻る


 §6. ユースケース図を描いてみる

課題

まずは、次のようなユースケース図を描きましょう。




描き方

メインメニュー【図】-【ユースケース図】 または、構造ツリーでプロジェクトを右クリックして表示されるポップアップメニュー【図の追加】-【ユースケース図の追加】を選択して、図を作成します。




ダイアグラムエディタには、ユースケース図編集用のツールボタンが並んでいます。




各ボタンが何のためのボタンかは、マウスポインタをボタン上に止めると表示されるツールチップで確認できます。これらのアイコンとツールチップは、UMLの要素名と表記を覚えるのに有効です。
ダイアグラムエディタでは、これらのボタンによりモードを切り替えながら図を描いていきます。
例えば、アクター作成モードにしてアクターを作成し、ツールバー左端にある矢印ボタン(選択モード)でアイテムを選択・移動し、関連作成モードにして関連を作成するといった感じです。
自分が意図したように編集できないと思った場合は、まずモードを確認しましょう。わかりにくいボタンのみ補足しておきます。

ボタン 概要
     (左端) 選択モード。ダイアグラムエディタ上の基本操作を実行するモードです。
     (右から四番目) モードのロック。ツールパレット上のボタンの選択状態をロックします。
     (右から三番目) 線をアイテムの中心に接続。線(関連、汎化、依存など)の端点をモデル要素の中心に設定できます。


アクターのボタンを押して、図上をクリックするとアクターを配置できます。 続けてアクターの名前である"プレイヤー"と入力してEnterを押します。
ユースケースも同様に作成しましょう。 "ゲームを開始する"ユースケースの作成後、他の二つのユースケースを描いてみてください。
図上の各アイテムは、ドラッグで移動可能です。 ユースケースなどの名前を再編集したい場合は、名前の部分を2回クリックすることで、編集可能です。

さて、次にアクターとユースケース間の線を引きましょう。
線にはいくつかの種類がありますが、ここでは[関連]という種類の線を引きます。関連のツールボタンを押し、関連作成モードにします。 関連を作成する場合は、2箇所クリックします。 "プレイヤー"アクターをクリック後、"ゲームを開始する"ユースケースをクリックしてください。 関連が引けました。 同様に、他の2つの関連を作成してください。
あとは、矩形と"ボーリングスコア表示システム"というテキストを追加すれば、めでたく目的の図の完成です。


知っておくと便利なTIPS


TIPS(1) 関係作成途中のキャンセル

例えば、予定外のアイテムをクリックしてしまった場合など、関連作成途中でやり直したくなった場合は、 ESCキーまたは、マウスを右クリックすると始めの状態に戻ります。汎化や実現、依存など他の線を編集する場合でも、操作方法は同様です。

編集しながら気付いたと思いますが、作成したアクターやユースケースは、構造ツリー上にも追加されています。また、左下のプロパティビューには、図上やツリー上で選択したアイテムのプロパティが表示されます。
UMLのデータは、図上や、構造ツリー上、そしてプロパティビュー上などから編集可能になっています。 場面に応じて、使いやすい編集方法を選択しましょう。

最後に、今描いた図の名前をプロパティビューから変更しておきましょう。まず、構造ツリー上で"ユースケース図"を選択します。するとプロパティビューに図のプロパティが表示されますので、名前を変更してEnterで確定しましょう。


TIPS(2) アイテム削除時の注意点

図上に追加したアクターやユースケースを削除するには、 ポップアップメニューから【図から削除】または【モデルから削除】を実行します。削除メニューが二つあるのは、そのアクターやユースケースを、モデルを共有したまま他の図にも配置できるようにするためです。

  ・図から削除:図上からのみ削除します。モデル自体は削除されません。
  ・モデルから削除:モデルを削除します。そのアイテムが全図から削除されます。


TIPS(3) ズームとスクロール

一つ目の図が描けたところで、表示に関する操作を確認しておきましょう。
今描いた図は小さいのであまり必要性はありませんが、大きな図を描く場合は、表示領域を変えながら編集する必要があります。
astah* では、図上での右ドラッグで、図を描いた紙をドラッグできます。斜め方向の移動も簡単です。
図の拡大・縮小は【表示】メニューまたはツールバーから行います。ショートカットキーもぜひ活用してください。もちろんマップビューからも操作可能です。


TIPS(4) UndoとRedo

astah は、しっかりしたUndo(編集の取り消し) / Redo(編集のやり直し)機能を持っていて、100回前の編集まで取り消すことが可能です。 試しにマネジメントウィンドウの【Undo】ボタンを押しっぱなしにしてみてください。その後、【Redo】ボタンで元の状態に戻ります。
操作の間違いを恐れなくてもよさそうですね。

▶ メニューに戻る


 §7. アクティビティ図を描いてみる

課題

"スコアを表示する"ユースケースについて処理の流れをアクティビティ図で描いてみましょう。




描き方

アクティビティ図をプロジェクトに追加します。
構造ツリー上で”スコアを表示する”ユースケースのポップアップメニューから【アクティビティ図の追加】を選択します。アクティビティ図が追加され、その図がダイアグラムエディタで表示されます。




ユースケース図の時と同様に、図の名前を変更します。"スコア表示の動作"という名前にしておきましょう。アクティビティ図のツールバーには、次のボタンが並んでいます。




では、アクティビティ図を描いていきましょう。
アクティビティ図は、フローチャート図に近い図で動作の流れを表現しますので、わかりやすいですね。
この図では、プレイヤーが投球後、スコア表示が更新されるまでの処理手順がかかれています。特にストライクのときのみ特別なアニメーションを表示することがわかります。
まず矢印線以外の開始状態、終了状態、アクション状態を作成していきましょう。
作成方法は、アクターやユースケースの作成方法と同様で、 それぞれのモードにして作成したい位置をクリックするだけです。
アクション状態に設定するアクション(entryアクション)は、図上か、プロパティビューで編集します。


次にアクションを「リサイズ」して見ましょう。
“特別なアニメーションを流す”アクション状態は、長い文章のためサイズを変更してみましょう。 サイズ変更は、アイテムの外枠を選択後、四隅に表示されるノブをドラッグします。




菱形の選択アイテムについては、同じ形の連結アイテムと間違えないように注意して作成します。
さて、動作の流れを表す矢印で各アイテムをつないでいきましょう。この矢印は遷移です。接続する二箇所をクリックしますが、今度はクリックする順序が違うと向きが逆になりますから注意します。
毎回モードを選択するのは面倒ですから、アイテムの連続作成に挑戦してみましょう。


知っておくと便利なTIPS


TIPS(5) アイテムの連続作成

 ・方法1: ツールパレットの右から二番目のロックボタンでモードをロックする
 ・方法2: Shiftキーを押しながら描く

うまく作成できましたか?アイテムの連続作成は、慣れると非常に便利ですので、ぜひ習得しましょう。
[ストライク]は、遷移のガードにあたります。遷移の矢印をクリックして選択し、 プロパティビューで、ガードの欄に"ストライク"と入力しましょう。




TIPS(6) アイテムの複数選択

図上でアイテムを複数選択するには、選択モードにおいて以下の方法があります。
 ・方法1: 図上でのドラッグによる矩形領域での選択
 ・方法2: 図上のポップアップメニューからの【全選択】
 ・方法3: Shiftキーを押したまま選択していくことによる追加選択


TIPS(7) 整列

左揃え、右揃え、上揃え、下揃えなどの整列機能を利用できます。
ここでは、縦中央揃えを利用して左側のアイテム("特別なアニメーションを表示する"アクション状態以外)を整列するときれいになりますね。
矩形選択で左側の全アイテムを選択し、【整列】-【縦の整列】-【縦中央揃え】としましょう。


TIPS(8) 線のスタイル

線には四つのスタイルがあります。線のポップアップメニュー【線のスタイル】から変えられます。
 ・通常線 : 特別な制約なし。斜め方向の線を含めた自由な折れ線。
 ・直角線 : 水平方向または垂直方向の制約あり。折れ線は直角のみ。
 ・曲線
 ・直角曲線


▶ メニューに戻る


 §8. クラス図を描いてみる

課題

ボーリングゲームとスコアに注目して分析したクラス図を描いてみましょう。




描き方

クラス図とシーケンス図は使用頻度が高い図なのでじっくり集中して説明します。
今回作成するクラス図は、ボーリングゲームとスコアに注目して分析したものです。
ゲームは10個のフレームで構成され、通常のフレームは2投あるが、最終フレームは3投目をもつことが整理されています。
"分析クラス図"と名前のクラス図を作成して、早速、中身を描いていきましょう。

クラス図のツールパレットには、次のボタンが並んでいます。




まず、大雑把にクラスを描いてから、細かいところを描きましょう。
全クラスを作成してみてください。 クラスの作成方法はアクターやユースケースと同様です。
左下の[フレーム]にかかる2本の線は、汎化です。汎化の作成時は、汎化元を先にクリックします。 汎化と破線以外は「関連」です。その3本の関連を次に作成しましょう。
関連はユースケース図でも作成しましたね。

[ゲーム]と[フレーム]クラス間の関連は、コンポジションになっています。
ゲームはフレームで構成され、ゲームがなくなればフレームもなくなるような関係を表現しています。


次に、関連の端点に関するプロパティ設定をしていきましょう。
関連には、集約や多重度などそれぞれの端点に関するプロパティがあります。 設定方法は3通りあります。ここでは[ゲーム]クラス側の端点にコンポジションを設定しましょう。今までと違う編集方法を使いますので、注意してください。

 ・方法1 :関連の端点に関するポップアップメニューで設定
 ・方法2 :関連のプロパティビューにおけるロールタブから設定
 ・方法3 :ツールパレットの関連の右矢印から設定

では早速、コンポジションをポップアップメニューから設定してみましょう。




関連のポップアップメニューの表示位置で動作が変わります。関連線の、[ゲーム]クラス側に近い線上でポップアップメニューを表示するとその端点に関する編集が可能です。
今度は、多重度をプロパティビューから設定してみましょう。 関連を選択するとプロパティビューが次のようになりますので多重度を設定しましょう。
ロールタブが2つの端点に対応して二つあるので、注意が必要です。
今は、ターゲットが[フレーム]となっている方(ロールB)のタブで多重度を10と設定します。




次に、クラスに属性を追加していきましょう。 [フレーム]クラスに3つの属性を追加してください。
次の4通りの方法があります。

 ・方法1:図上のポップアップメニューから追加
 ・方法2:構造ツリーのポップアップメニューから追加
 ・方法3:クラスのプロパティビューにおける属性タブから追加
 ・方法4:クラス上に表示されるオレンジ色のダイアモンドアイコンをクリックして追加

図上でフレームクラスのポップアップメニューを表示し【属性の追加】を選択します。 その後、属性名として”1投目のピン数”と入力します。他の属性も、いずれかの方法で追加してみてください。
属性の削除はプロパティビューまたは構造ツリーから行います。
可視性はprivate、型はvoidがデフォルトです。もしそれらを変更したい場合は、プロパティビューから編集します。また、属性の追加にはショートカットキー Ctrl+Fも便利です。


次に、クラスに操作を追加していきます。
操作に対する編集方法は、前の属性に対する編集方法と同様です。

ここでは、プロパティビューから追加してみましょう。
【追加】ボタンで操作を追加します。
追加した操作の名前などの編集は、 このテーブル上または、操作固有のプロパティビュー上で編集します。操作固有のプロパティビューでは、 パラメータの設定などのより詳細な設定が可能です。
【削除】ボタンは、選択されている操作を削除します。
【編集】ボタンは、選択されている操作の固有プロパティビューを表示します。
【↑】ボタン【↓】ボタンは、選択されている操作の順序を変更します。
"倒れたピンを登録する"操作を追加できたら、パラメータ"ピン数 : int"を追加しましょう。
操作固有のプロパティビューを開き、パラメタタブで同様に追加します。




今までのところついてこれていますでしょうか?
astah*を使って図を描いてみるのが目的ですから、細かいことは飛ばして次に進みましょう。

▶ メニューに戻る


 §9. シーケンス図を描いてみる

課題

"ゲーム"クラスがもつ"倒れたピンを登録する"操作を中心とした処理の流れを描いてみましょう。




描き方

今回作成するシーケンス図は、"プレイヤー"がボーリングの玉を転がすと、"投球監視"オブジェクトがそれを認識し、 "ゲーム"オブジェクトに倒れたピン数を登録する、そしてストライクなら"スコア表示"オブジェクトが特別なアニメを表示するといった処理の流れを表現しています。

アクティビティ図でも似たような処理の流れを描きましたが、シーケンス図ではオブジェクト間のメッセージのやり取りを時系列で表現しています。

シーケンス図は、構造ツリーにおいてユースケースの下や、操作の下に追加することができます。
[ゲーム]クラスがもつ[倒れたピンを登録する]操作のポップアップメニューを表示し【シーケンス図の追加】を選択します。




シーケンス図のツールパレットには、次のボタンが並んでいます。




さて、シーケンス図は、今まで描いてきた図とは結構見た目が違いますね。
編集方法も多少違いますので気を抜かずに進めましょう。
まず図の上側に並んでいる5つのオブジェクトを描きましょう。
フライングで描き始めていた人は、ちょっと待ってください。

ツールパレットからもオブジェクトを作成できるのですが、構造ツリーを活用するのが便利です。
具体的には、構造ツリーから、ベースとなるクラスを図上にドラッグ&ドロップすることでオブジェクトを作成します。ドロップするとオブジェクトの名前が編集状態になります。
ここでは特にオブジェクトを区別しませんので省略しています。この場合BackSpaseキーで名前を空にしてEnterを押します。構造ツリーで複数のクラスを選択し、一度に図にドラッグすることも可能です。




次に、メッセージを作成していきましょう。
[プレイヤー]から[投球監視]オブジェクトへのメッセージは、非同期メッセージになっています。ツールパレットの左から4番目のボタンを押して、非同期メッセージ作成モードにしましょう。
[プレイヤー]のライフライン上をクリックし、さらに[投球監視]のライフライン上をクリックすれば、メッセージの矢印が引かれます。
message0という名前をクリックして[投球する]に変更しましょう。
同じように、続く[1.1:倒れたピンを数える]メッセージを作成してみてください。
今度は同期メッセージです。また、これは、[投球監視]オブジェクト自身へメッセージ(自己メッセージ)を送付しています。ツールパレットの左から3番目のボタンで同期メッセージ作成モードにしましょう。
先ほどは、ライフライン上の点をクリックしてメッセージを作成しましたが、今度は活性区間上をクリックするように注意してください。2点目もその活性区間上をクリックしましょう




では、他のメッセージも作成し、シーケンス図を完成させてください。


知っておくと便利なTIPS


TIPS(9) メッセージに操作を対応づける

メッセージには操作を対応付けることが可能です。
例えば、対応づけられた操作の名前がクラス図で変更されると、メッセージ名も自動的に変更されるようになります。
操作の対応付けでは、メッセージのプロパティビューで操作の項目で操作を選択するだけです。
早速、作成したメッセージに[倒れたピンを数える]メッセージを対応付けてみましょう。
メッセージ送信先のベースクラスである[投球監視]クラスに操作が登録されていれば、候補が表示されます。もし、表示されていない場合は【新規作成】ボタンを押して目的の操作を追加します。【プロパティ】ボタンを押すと選択されている操作のプロパティが表示されますので、名前やパラメータの変更が可能です。
常に操作を対応付ける必要はありませんが、これを利用することで図間の整合性を維持しやすくなります。
関連TIPS: クラス図とシーケンス図のトレーサビリティを保ちながら設計する




TIPS(10) 活性区間のサイズ

メッセージを追加したり、移動したりするとメッセージ送付元の活性区間が勝手に長くなるのに気付くと思います。
これは、送付先の活性区間よりも送付元の活性区間は長くなっているべきで、 astahが自動的に活性区間の長さを調整しているためです。astah は自動で活性区間の長さを短くはしませんので、場合によってはユーザが長さを短くすることが可能です。
活性区間の長さの変更方法は、アクション状態などのリサイズと同様の操作で可能です。また、ポップアップメニューから、複数の活性区間の長さを調整することも可能です。
関連TIPS: 実行仕様(活性区間)やライフラインの長さを一括調整する


▶ メニューに戻る


 §10. その他の図

すべての図の説明は省略しますが、参考として、ボーリングに関するコミュニケーション図とステートマシン図の例を見てみましょう。

コミュニケーション図

シーケンス図で描いた相互作用と全く同じ物をコミュニケーション図で表現することができます。



コミュニケーション図ツールパレットのボタン




ステートマシン図

ゲームの進行に関する状態は、ステートマシン図でも描くことができます。



ステートマシン図ツールパレットのボタン



▶ メニューに戻る


 §11. その他のastah*の機能

astahはこの記事で使った機能以外にも、以下の機能を持っています。今後の編集で利用してみてください。

  • パッケージを指定したクラス図の自動作成
  • 構造ツリーから構造ツリーへのモデルドラッグ
  • Boundary、Control、Entityクラス等のアイコン表示
  • アイテムのデフォルト色設定
  • ステレオタイプ指定の色設定
  • 端点ドラッグによる関係の付け替え
  • 端点のノブを別のアイテム上にドラッグすることでターゲットを変更できます
  • 図の出力、画像貼り付け(ラスター)
  • astahモデルのインポート(追加)、別のプロジェクトを別パッケージに追加します。

▶ メニューに戻る


 最後に

ここでは、みなさんと一緒にUMLモデリングツール astah*を使っていくつかの図を描いてきました。
astah で基本的なUMLを描くことができるようになったのではないでしょうか?
自分で手を動かすことで、あれ?どうだっけと思うこともあったのではないかと思います。
みなさんのUMLとUMLツールについての理解がこの記事により、少しでも深まったなら幸いです。
UMLはJavaや英語と同じように言語の一つです。それらの習得と同じように、自分で書いたりしゃべったりと体をつかわないと、なかなか身につきません。いつか開発に活用できるよう、UMLに触れることを継続していきましょう。
前の章で登場した図を、自分の手で描いてみるのもいいでしょうし、 頭の中のものを整理するのにUMLの図を描いてみるのもいいでしょう。

最後に、astah 開発者の1人である筆者から、みなさんにお願いがあります。
astahは、ユーザのみなさんからの声を受けながら、手に馴染むツールへ向け日々改善しています。ぜひ要望やコメントなどをコミュニティサイトメールでお寄せください。

▶ メニューに戻る