english japanese german



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


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

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

最終更新:2017年12月6日
利用エディション: astah* professional 7.2


 §1. UMLとツール

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

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

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

▶ メニューに戻る


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

多くのUMLツールがありますが、今回は「astah* professional」を使います。
機能や特徴については、astah* professionalの製品情報をご参照ください。

▶ メニューに戻る


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

ダウンロード

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

インストール

ダウンロード完了後、インストーラをダブルクリックして、インストールします。

起動

スタートメニュー、またはデスクトップのastahアイコンから起動します。
astah* professionalは、初回起動時より20日間無償でお使いいただけます。(評価版のご利用について)

▶ メニューに戻る


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


astah*を起動できましたか?それでは、早速プロジェクトを作成しましょう。

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

astahでは、UMLのデータを"プロジェクト"という拡張子.astaのファイルに保存します。
左上の[新規作成]ボタンを押すか、メインメニューの[ファイル] - [プロジェクトの新規作成]を選択して
プロジェクトを作成してください。



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

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


astah* professionalで作成できるUML図の種類


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


astah*の画面構成





▶ メニューに戻る


 §5. ボーリングの課題

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

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


要求は、以下とします。

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

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

▶ メニューに戻る


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

課題

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




描き方

メインメニューから[図] - [ユースケース図]を選択して、ユースケース図を作成します。




ダイアグラムエディタには、ユースケース図用のツールボタンが並んでいます。各ボタンの説明はツールチップで確認できます。これらのアイコンとツールチップは、UMLの要素名と表記を覚えるのに有効です。




要素以外の便利なツールを少し紹介します。


ボタン 概要
   複数の要素をまとめて移動します。特に、要素間に十分な余白がない場所に、要素を挿入したい時などに便利です。
   複数の要素をまとめて移動します。上のアイコンとは反対で、要素間の不要な余白を削除する時に便利です。
   ツールパレット上の選択状態をロックします。同じアイテムを連続作成したい時に使います。
   線(関連、汎化、依存など)の端点を、アイテムの中心に接続したい時に使います。
   線のスタイルを、直線、直角線、曲線などに切り替えます。
   ドローサジェストのミニアイコンの表示/非表示を切り替えます


ツールパレットでアクターを選択して、図上をクリックするとアクターを生成できます。続けてアクターの名前である"プレイヤー"と入力してEnterを押します。
ユースケースは、 図上のダブルクリックで作成できます。3つ作成して、それぞれ名前を入力しましょう。

次にアクターとユースケース間の線を引きましょう。
線にはいくつか種類がありますが、ここでは 関連という種類の線を引きます。
図上のアクターにマウスカーソルを持っていくと、小さなアイコン( ドローサジェスト)が表示されます。


このアイコンをクリックして、ユースケースをクリックすると、関連が生成されます。


同様に、他の2つの関連を作成してください。

あとは、矩形と[ボーリングスコア表示システム]というテキストを追加すれば、目的の図の完成です。



▶ メニューに戻る


知っておくと便利なTIPS


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

図上からアクターやユースケースを削除する場合は、 ポップアップメニューから[図から削除]または[モデルから削除]を実行します。削除メニューが2つあるのは、そのアクターやユースケースを、モデルを共有したまま他の図にも配置できるようにするためです。▶ 詳細はこちら



  ・ 図から削除:図上からのみ削除します。モデル自体は削除されません。
  ・ モデルから削除:プロジェクトからモデルを完全に削除します。モデルが全図から削除されます。


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

astah*では、図上での右ドラッグで、図を描いた紙をドラッグできます。斜め方向の移動も簡単です。
図の拡大・縮小は[表示]メニューからできますが、 マップビューを使うとより直感的です。マップビューは、開いている図全体を表示します。黄色い矩形が、ダイアグラムエディタの表示領域です。矩形を動かしたりサイズを変えることで、図のズームとスクロールを、図の全体像を俯瞰しながら行えます。

TIPS(3) UndoとRedo

astah は、しっかりしたUndo(編集の取り消し) / Redo(編集のやり直し)機能を持っていて、100回前の編集まで取り消すことが可能です。 試しに[Undo]ボタンを押しっぱなしにしてみてください。その後、[Redo]ボタンで元の状態に戻ります。


操作の間違いを恐れなくてもよさそうですね。

▶ メニューに戻る


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

課題

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




描き方

まずアクティビティ図を作成します。
[スコアを表示する]ユースケースのポップアップメニューからアクティビティ図を追加しましょう。




図の名前を[スコア表示の動作]にしましょう。アクティビティ図のツールバーには、次の通りです。




では、アクティビティ図を描いていきましょう。
アクティビティ図は、フローチャートに近い図で動作の流れを表現するので、わかりやすいですね。
この図では、プレイヤーが投球後、スコア表示が更新されるまでの処理手順が描かれています。特にストライクの時のみ特別なアニメーションを表示することがわかります。
まず矢印線以外の要素を作成していきましょう。アクションは、 図上のダブルクリックで作成できます


[特別なアニメーションを流す]アクションは、名前が長い為サイズを変更しましょう。アイテムの四隅のノブをドラッグするだけです。




動作の流れを表す矢印で各アイテムを繋いでいきましょう。この矢印は遷移です。ユースケース図の関連と同様、アイテム横に表示される小さい矢印をクリック後、対象のアイテムをクリックして作成します。


▶ メニューに戻る


知っておくと便利なTIPS


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

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

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

TIPS(5) 整列

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


複数アイテムを選択した状態で、[整列] - [縦の整列] - [縦中央揃え]を選択しましょう。



綺麗に揃いました。

TIPS(6) 線のスタイル

線には4つのスタイルがあります。線のポップアップメニュー[線のスタイル]から変えられますし、線を作成前にあらかじめツールパレットの[線のスタイル]から指定することも可能です。
通常線、直角線の切り替えは、慣れるとショートカットキーが早くて便利です。

・通常線(Ctrl/Cmd + L):特別な制約なし。斜め方向の線を含めた自由な折れ線
・直角線(Ctrl/Cmd + E):水平方向または垂直方向の制約あり。折れ線は直角のみ
・曲線
・直角曲線

▶ メニューに戻る


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

課題

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




描き方

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

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




まず、大雑把にクラスを描いてから、細かいところを描きましょう。
全クラスを作成してください。クラスは、 図上のダブルクリックで作成できます
[フレーム]クラスにかかる2本の線は、汎化です。汎化を作成しましょう。汎化の作成時は、汎化元を先にクリックします。[通常フレーム]上に表示されるミニアイコンの赤枠部分をクリックします。


作成する線のタイプが一覧で表示されます。ここで汎化を選択しましょう。


そのまま、[フレーム]クラスをクリックするとを選択すると、汎化が作成されます。


同様に、もう一つの汎化を作成しましょう。

[ゲーム]と2つの青いクラス間は関連です。関連はユースケース図で作成しましたね。同様に作成しましょう。 [ゲーム]と[フレーム]クラス間の関連は、コンポジションになっています。
ゲームはフレームで構成され、ゲームがなくなればフレームもなくなる関係を表現しています。ゲームクラス横のアイコンでコンポジションを選択します。



[フレーム]クラスをクリックして、作成します。




今度は、多重度をプロパティビューから設定してみましょう。関連を選択するとプロパティビューが次のようになりますので多重度を設定しましょう。
ロールタブが2つの端点に対応して2つあるので、注意が必要です。
今は、ターゲットが[フレーム]となっている方(ロールB)のタブで多重度を10と設定します。




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

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

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


次に、クラスに操作を追加していきます。
操作に対する編集方法は、属性に対する編集方法と同様です。ここでは、プロパティビューから追加してみましょう。左下の+のボタンから操作を追加します。



追加した操作の名前などの編集は、このテーブル上または、操作固有のプロパティビュー上で編集します。操作固有のプロパティビューでは、 パラメータの設定などのより詳細な設定が可能です。

"倒れたピンを登録する"操作を追加できたら、パラメータ"ピン数: int"を追加しましょう。"倒れたピンを登録する"操作を選択して、中央の[編集]ボタンを押します。



操作固有のプロパティビューが開くので、[パラメタ]タブで同様に追加します。




今までのところついてこれていますでしょうか?
astah*を使って図を描いてみるのが目的ですから、細かいことは飛ばして次に進みましょう。
細かいことを知りたい方は、このクラス図の作成チュートリアルは動画にもあるので、ぜひ参考にしてください。 動画ページ[かんたんastah*]のクラス図です。



▶ メニューに戻る


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

課題

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




描き方

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

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

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




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




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

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




次に、メッセージを作成していきましょう。
[プレイヤー]から[投球監視]オブジェクトへのメッセージは、非同期メッセージになっています。ツールパレットの左から4番目のボタンを押して、非同期メッセージ作成モードにしましょう。
[プレイヤー]のライフライン上をクリックし、さらに[投球監視]のライフライン上をクリックすれば、メッセージの矢印が引かれます。名前を[投球する]に変更しましょう。



同じように、続く[1.1:倒れたピンを数える]メッセージを作成してみてください。
今度は同期メッセージです。また、これは[投球監視]オブジェクト自身へメッセージ(自己メッセージ)を送付しています。次は、ドローサジェストを使って作成しましょう。[投球監視]ライフラインの波線上にマウスを持っていくと、Sと矢印が表示されます。これは同期(Synchronous)メッセージを意味します。このアイコンをクリックします。



続けて、[投球監視]ライフラインの波線上をクリックしてください。



自己メッセージが作成されました。操作の候補が自動表示されますので、[倒れたピンを数える]を選択してください。




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


知っておくと便利なTIPS


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

メッセージには操作を対応付けることが可能です。
例えば、対応づけられた操作の名前がクラス図で変更されると、メッセージ名も自動的に変更されるようになります。常に操作を対応付ける必要はありませんが、これを利用することで図間の整合性を維持しやすくなります。
関連TIPS: クラス図とシーケンス図のトレーサビリティを保ちながら設計する

TIPS(8) 実行仕様のサイズ

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

▶ メニューに戻る


 §10. その他の図

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

コミュニケーション図

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



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




ステートマシン図

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



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




▶ メニューに戻る


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

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

  • クラス図の自動作成
  • 構造ツリーから構造ツリーへのモデルドラッグ
  • Boundary、Control、Entityクラス等のアイコン表示
  • アイテムのデフォルト色設定
  • ステレオタイプ指定の色設定
  • 端点ドラッグによる関係の付け替え
  • 端点のノブを別のアイテム上にドラッグすることでターゲットを変更できます
  • 図の画像出力(PNG,JPEG,EMF,SVG)、画像貼り付け(ラスター)
  • プラグインを使ったモデルの分析やソースコード出力
  • ファイル間のモデルのコピー&ペースト
  • フリーハンドによるコメントやマークなどの書き込み


▶ メニューに戻る


 最後に

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

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

▶ メニューに戻る