はじめに
モデリングツール astah* の利用方法をチュートリアル形式で易しく説明します。ぜひ実際に手を動かし、UMLを描きながら読み進めてください。
- UMLとツール
- UMLモデリングツール astah* community とは
- astah* communityのインストール
- astah* の画面構成と基本操作
- ボーリングの課題
- ユースケース図を描いてみる
- アクティビティ図を描いてみる
- クラス図を描いてみる
- シーケンス図を描いてみる
- その他の図
- astah* その他の機能
1. UMLとツール
UMLは、手書きすることもありますが、ここではツールを使います。 UMLを描くのになぜツールを利用するのでしょうか?主なメリットを挙げてみます。
- 簡単にきれいな図をかける
- 自動的にサイズなどを調整してくれる
- 他人とUMLを交換・共有しやすい
- Undo/Redoで試行錯誤しやすい
- 誤った図をかくと注意される
- 図だけでなく、ツリーや表上でデータを編集できる
- データを再利用、二次利用できる
- データ間の関連を管理できる
初心者にとってのツールを考えてみると、4, 5が特に意味があると思います。 例えば、間違ったらいつでも簡単にやり直せますし、パッケージからクラスに関連を描こうとすると、 ツールは「そのような関連はかけません」と教えてくれます。また、クラスを抽象クラスに設定すれば、 自動的にクラス名が斜体になります。その他にも、各要素の形と名前の対応関係をツール上で常に確認できます。 ツールにUMLを教わるような気持ちで、いろんな操作をしてみましょう。 おかしくなったらUndo(やり直し)すればいいですからね。
2. UMLモデリングツール astah* community とは
多くのUMLツールがありますが、ここでは「astah* community」を使います。 astah* 製品には次のような特徴があります。2011年4月現在、無償版のastah* communityと有償版のastah* UML、astah* professionalを公開しています。
- astah* communityではUMLをサポート
- astah* UMLでは、UMLとマインドマップをサポート
- astah* professionalでは、さらにER図、DFD、フローチャート、CRUD、要求テーブル、要求図もサポート
- Undo/Redoを無限回サポート
- 大きな図の編集をサポートする、斜め方向のスクロール機能と、図の全体マップビュー
- Javaアプリケーション
- 日本発のツール
その他の特徴については、astah* communityの製品情報をご参照ください。
3. astah* communityのインストール
早速、astah* communityをインストールしましょう。astah* はJavaの環境上で動作します。JRE同梱版のインストーラがありますのでとても簡単です。
システム要件
バージョン6.4のシステム要件です。
| OS | Windows7 / Windows7(64bit版) / Windows Vista / WindowsXP Service Pack 3 (Vista、XPの64bit版は動作保証の対象外です) |
|---|---|
| CPU | PentiumⅢ 1GHz相当以上 |
| メモリ | 512MB以上(1GB以上推奨) |
| Java環境 | Sun Microsystems JDK 6 Update 16以降 (J2SE1.5では動作しません) |
astah* はLinuxやMacOSなどのJ2SE環境でも動作しますが、ここではWindowsでのセットアップ方法を説明します。Windows以外のセットアップ方法については、各説明ページをご覧ください。
ダウンロード
次のページから astah* community をダウンロードしましょう。astah* community ダウンロードページ
最新の astah-community-x_x-jre-setup.exe をダウンロードします。このファイル一つでインストール可能です。ちなみに、この記事ではastah* community 6.3を使用しています。
インストール
ダウンロードが完了したら、そのファイルをダブルクリックするとインストーラが起動します。インストール先のフォルダを指定するだけです。
起動
Windowsのスタートメニュー、またはデスクトップのastah*アイコンから起動します。
4. 画面構成と基本操作
まず、astah* の画面構成と基本操作を説明します。
- マネジメントビュー
astah* のベースとなるビューです。メニューバーとツールバーを持ちます。 - ダイアグラムエディタ
図を表示、編集するビューです。図のアイテム作成用のツールボタン群(ツールパレット)を持ちます。複数の図を開いた場合は、上部のタブでアクティブなエディタを切り替えます。 - 構造ツリー
パッケージやクラスなどの入れ子構造をツリー形式で表示します。ポップアップメニューでパッケージや図、クラスなどの要素を追加・削除可能です。 - 継承ツリー
選択中のクラスやインタフェースの親や子をツリー形式で表示します。 - マップビュー
アクティブな図の全体を表示します。大きめの図の編集時にその全体を見渡すために利用します。 マウス操作により表示範囲を変更できます。 - プロパティビュー
選択されたアイテムの属性を編集するビューです。
新規プロジェクトを作成する
astahでは、UMLのデータをプロジェクトというxxx.asta ファイルに保存します。 起動後は何もプロジェクトを開いていませんので、まず新規のプロジェクトを作成します。 【ファイル】メニューの【プロジェクトの新規作成】を選択します。構造ツリーとプロパティビューが表示されます。
パッケージや図の作成
新規のパッケージは、主に構造ツリー上のポップアップメニューから追加します。 新しい図は、構造ツリー上のポップアップメニューから、または【図】メニューから選択して作成します。
astah* community 6.3で作成できる図の種類
- クラス図 : モデルの静的な構造を表す
- ユースケース図 : 使用機能と外部環境との関連を表す
- ステートマシン図 : あるオブジェクトの状態変化を表す
- アクティビティ図 : 業務や処理の流れを表す
- シーケンス図 : オブジェクト間のメッセージのやり取りを時系列で表す
- コミュニケーション図 : オブジェクト間の接続関係を特に表す
- コンポーネント図 : コンポーネント間の依存関係を表す
- 配置図 : 実行時のシステム構成やコンポーネントの割り当てを表す
- 合成構造図
この他、オブジェクト図も作成できます。
アイテムの作成と編集
図を描くための基本的な操作方法は、一般的なドローイングソフトでの操作方法とそれほど変わりません。 ドローイングソフトに慣れている場合は、どんどん編集を進めてみてください。
5. ボーリングの課題
これからいくつかの図を一緒に描いていきますが、どんな図を描きましょうか? 皆さんは、最近ボーリングをしたのはいつですか? ボーリングをしたことがないという方は少ないと思いますので、この身近なスポーツを今回のUMLの題材にします。 例のようなボーリングのスコアを表示するシステムのUMLを描いていきましょう。
ボーリングスコア表の例
![]()
要求は、以下とします。
- プレイヤがゲーム開始後は、ゲームのスコア表を表示する。
- プレイヤが投球するごとに、スコアを更新する。
- プレイヤはゲーム途中にスコア修正することができる。
- ストライクがでた場合は、特別なアニメーションを表示する。
あくまでツールをつかってUMLに慣れることを目的とします。 そのため、図の正確さよりも、分かりやすさを優先することをご了承ください。それではUMLを描き始めましょう。astah* の準備はよろしいですか?
6. ユースケース図を描いてみる
次のようなユースケース図を描きましょう。

メインメニュー【図】-【ユースケース図】 または構造ツリーでプロジェクトを右クリックして表示されるポップアップメニュー【図の追加】-【ユースケース図の追加】を選択すると、ダイアグラムエディタが表示されます。
![]() |
![]() |
ダイアグラムエディタには、ユースケース図編集用のツールボタンが並んでいます。

各ボタンが何のためのボタンかは、マウスポインタをボタン上に止めると表示されるツールチップで確認できます。 これらのアイコンとツールチップは、UMLの要素名と表記を覚えるのに有効です。 ダイアグラムエディタでは、これらのボタンによりモードを切り替えながら図を描いていきます。 例えば、アクター作成モードにしてアクターを作成し、選択モードでアイテムを選択・移動し、 関連作成モードにして関連を作成するといった感じです。自分が意図したように編集できないと思った場合は、 まずモードを確認しましょう。わかりにくいボタンのみ補足しておきます。
| ボタン | 概要 |
|---|---|
| 選択モード。標準のモードで、アイテムを選択、編集します。移動やサイズ変更もこのモードで行います。 | |
| モードのロック。モードを固定します。例えば通常だとアクター作成モードにしてもアクターを作成後、自動的に選択モードに戻りますが、ロック中はモードを維持します。 | |
| 線を中心に接続。関連などの作成時に、線の端点をクラスなどの矩形の中心にします。通常このボタンを操作する必要はありません。 | |
| 深さ固定モード。図の重なり順序を 固定します。 |
アクターのボタンを押して、図上をクリックするとアクターを配置できます。 続けてアクターの名前である"プレイヤー"と入力してEnterを押します。
ユースケースも同様に作成しましょう。 "ゲームを開始する"ユースケースの作成後、他の二つのユースケースを描いてみてください。
図上の各アイテムは、ドラッグで移動可能です。 ユースケースなどの名前を再編集したい場合は、名前の部分を2回クリックすることで、編集可能です。
さて、次にアクターとユースケース間の線を引きましょう。 線にはいくつかの種類がありますが、ここでは関連です。関連のツールボタンを押し、関連作成モードにします。 関連を作成する場合は、2箇所クリックします。 "プレイヤー"アクターをクリック後、"ゲームを開始する"ユースケースをクリックしてください。 関連が引けました。同様に、他の2つの関連を作成してください。
あとは、矩形と"ボーリングスコア表示システム"というテキストを追加すれば、めでたく目的の図の完成です。
例えば、予定外のアイテムをクリックしてしまった場合など、関連作成途中でやり直したくなった場合は、 ESCキーまたは、マウスを右クリックすると始めの状態に戻ります。 関連以外の汎化や実現、依存など二つのアイテム間の関係線を編集する場合でも、操作方法は関連と同様です。
編集しながら気付いたと思いますが、作成したアクターやユースケースは、構造ツリー上にも追加されています。 また、左下のプロパティビューには、図上やツリー上で選択したアイテムのプロパティが表示されます。 UMLのデータをダイアグラムエディタ上や、構造ツリー上、そしてプロパティビュー上などから編集可能になっています。 場面に応じて、使いやすい編集方法を選択しましょう。
最後に今描いた図の名前をプロパティビューから変更しておきましょう。 まず、構造ツリー上で"ユースケース図"を選択します。 するとプロパティビューに図のプロパティが表示されますので、 名前を変更してEnterで確定させましょう。
図上に追加したアクターやユースケースを削除するには、 ポップアップメニューから【図から削除】または【モデルから削除】を実行します。 削除メニューが二つあるのは、そのアクターやユースケースを、 モデルを共有したまま他の図にも配置できるためです。
- 【図から削除】 : 現在の図上からのみ削除されます。モデルは削除されません。
- 【モデルから削除】 : モデルが削除されます。そのアイテムが全図から削除されます。
一つ目の図が描けたところで、表示に関する操作を確認しておきましょう。 今描いた図は小さいのであまり必要性はありませんが、 大きな図を描く場合は、表示領域を変えながら編集する必要があります。 astah* では、ダイアグラムエディタ上での右ドラッグで、図を描いた紙をドラッグできます。 斜め方向の移動も簡単です。
図の拡大・縮小は【表示】メニューまたはツールバーから行います。 図の表示に関しては、マップビューからも操作可能です。
astahは、しっかりしたUndo(編集の取り消し)・Redo(編集のやり直し)機構を持っていて、 100回前の編集まで取り消すことが可能です。 この回数はシステムプロパティから変更する事もできます。 (【ツール】-【システムプロパティ】-【その他】)
試しにマネジメントウィンドウの【Undo(編集の取り消し)】ボタンを押しっぱなしにしてみてください。 その後、【Redo(編集のやり直し)】ボタンで元の状態に戻ります。操作の間違いを恐れなくてもよさそうですね。
7. アクティビティ図を描いてみる
つぎに"スコアを表示する"ユースケースについて処理の流れを描いてみましょう。 アクティビティ図をプロジェクトに追加します。 構造ツリー上で”スコアを表示する”ユースケースのポップアップメニューから、【アクティビティ図の追加】を選択します。 アクティビティ図が追加され、その図がダイアグラムエディタで表示されます。

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

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

菱形の選択アイテムについては、同じ形の連結アイテムと間違えないように注意して作成します。 さて、動作の流れを表す矢印で各アイテムをつないでいきましょう。この矢印は遷移です。 接続する二箇所をクリックしますが、今度はクリックする順序が違うと向きが逆になりますから注意します。 毎回モードを選択するのは面倒ですから、アイテムの連続作成に挑戦してみましょう。
- 方法1: ツールパレットの右から二番目のロックボタンでモードをロックする方法
- 方法2: Shiftキーを押しながら描く方法
うまく作成できましたか?アイテムの連続作成は、慣れると非常に便利ですので、ぜひ習得しましょう。
[ストライク]は、遷移のガードにあたります。遷移の矢印をクリックして選択し、 プロパティビューで、ガードの欄に"ストライク"と入力しましょう。
次に図をきれいにするために有効な三つのTipsを説明します。 複数の要素をまとめて整列させることで、図をきれいに仕上げることができます。
図上でアイテムを複数選択するには、選択モードにおいて以下の方法があります。
- 方法1: 図上でのドラッグによる矩形領域での選択
- 方法2: 図上のポップアップメニューからの【全選択】
- 方法3: Shiftキーを押したまま選択していくことによる追加選択
左揃え、右揃え、上揃え、下揃えなどの整列機能が利用できます。ここでは、縦中央揃えを利用して左側のアイテム("特別なアニメーションを表示する"アクション状態以外)を整列するときれいになりますね。矩形選択で左側の全アイテムを選択し、【整列】-【縦の整列】-【縦中央揃え】としましょう。
線には四つのスタイルがあります。
- 通常線 : 特別な制約なし。斜め方向の線を含めた自由な折れ線。
- 直角線 : 水平方向または垂直方向の制約あり。折れ線は直角のみ。
- 曲線
- 直角曲線
8. クラス図を描いてみる
次はクラス図です。特にクラス図とシーケンス図は使用頻度が高い図なのでじっくり集中して説明します。

この図は、ボーリングゲームとスコアに注目して分析したクラス図です。 ゲームは10個のフレームで構成され通常のフレームは2投あるが、最終フレームは3投目をもつことが整理されています。 "分析クラス図"と名前をつけて作成しました。
クラス図のツールパレットには、次のボタンが並んでいます。
まず、大雑把にクラスを描いてから細かいところを描きましょう。全クラスを作成してみてください。 クラスの作成方法はアクターやユースケースと同様です。
下側の2本の線は、汎化です。汎化の作成時には、汎化元を先にクリックします。
下側にある2本の斜め線と破線以外は、関連です。その3本の関連を次に作成しましょう。 関連はユースケース図でも作成しました。 "ゲーム"クラスと"フレーム"クラス間の関連は、コンポジションになっています。 ゲームはフレームで構成され、ゲームがなくなればフレームもなくなるような関係を表現しています。
関連の端点に関するプロパティ設定
関連には、集約や多重度などそれぞれの端点に関するプロパティがあります。 ここでは"ゲーム"クラス側の端点にコンポジションを設定します。 今までと違う編集方法を使いますので、注意してください。
方法1 :関連の端点に関するポップアップメニューで設定
方法2 :関連のプロパティビューにおけるロールタブから設定
方法3 :ツールパレットの関連の右矢印から設定
コンポジションをポップアップメニューから設定してみましょう。

関連のポップアップメニューの表示位置で動作が変わります。 図のように関連の"ゲーム"クラス側でポップアップメニューを表示するとその端点に関する編集が可能です。
今度は、多重度をプロパティビューから設定してみましょう。 関連を選択するとプロパティビューが次のようになりますので多重度を設定しましょう。

ロールタブが二つの端点に対応して二つあるので、注意が必要です。 今は、ターゲットが"フレーム"となっている方(ロールB)のタブで多重度を10と設定します。
後はクラスの属性と操作の追加です。
クラスの属性の追加
"フレーム"クラスに三つの属性を追加しましょう。次の三つの方法があります。
- 方法1:図上のポップアップメニューから追加
- 方法2:クラスのプロパティビューにおける属性タブから追加
- 方法3:構造ツリーのポップアップメニューから追加
図上でフレームクラスのポップアップメニューを表示し、【属性の追加】を選択します。 その後、属性名として”1投目のピン数”と入力します。他の属性も、いずれかの方法で追加してみてください。 属性の削除はプロパティビューまたは構造ツリーから行います。可視性はprivate、型はvoidがデフォルトです。 もしそれらを変更したい場合は、プロパティビューから編集します。 属性の追加にはショートカットキー Ctrl+F も便利です。(操作の追加は、Ctrl+M)
クラスの操作の追加
操作に対する編集方法は、前の属性に対する編集方法と同様です。 ここでは、クラスのプロパティビューから作成してみましょう。
【追加】ボタンで操作を追加します。追加した操作の名前などの編集は、 このテーブル上または、操作固有のプロパティビュー上で編集します。操作固有のプロパティビューでは、 パラメータの設定などのより詳細な設定が可能です。【削除】ボタンは、選択されている操作を削除します。 【編集】ボタンは、選択されている操作の固有プロパティビューを表示します。 【↑】ボタン【↓】ボタンは、選択されている操作の順序を変更します。 "倒れたピンを登録する"操作を追加できたら、パラメータ"ピン数 : int"を追加しましょう。 操作固有のプロパティビューを開き、パラメタタブで同様に追加します。
今までのところついてこれているでしょうか? astah* community を使って図を描いてみるのが目的ですから、細かいことは飛ばして次に進みましょう。
シーケンス図を描いてみる
次はシーケンス図です。 "ゲーム"クラスがもつ"倒れたピンを登録する"操作を中心とした処理の流れを描いてみましょう。シーケンス図は、構造ツリーにおいてユースケースの下や、操作の下に追加することができます。 "ゲーム"クラスがもつ"倒れたピンを登録する"操作のポップアップメニューを表示し、【シーケンス図の追加】を選択してください。
この図は、"プレイヤー"がボーリングの玉を転がすと、"投球監視"オブジェクトがそれを認識し、 "ゲーム"オブジェクトに倒れたピン数を登録する、そしてストライクなら"スコア表示"オブジェクトが特別なアニメを表示するといった処理の流れを表現しています。アクティビティ図でも似たような処理の流れを描きましたが、シーケンス図ではオブジェクト間のメッセージのやり取りを時系列で表現しています。
シーケンス図のツールパレット

さて、今まで描いてきた図とは結構見た目が違いますね。編集方法も多少違いますので気を抜かずに進めましょう。まず図の上側に並んでいる5つのオブジェクトを描きましょう。フライングで描き始めていた人は、ちょっと待ってください。ツールパレットからもオブジェクトを作成できるのですが、構造ツリーを活用するのが便利です。具体的には、構造ツリーからベースとなるクラスを図にドラッグ&ドロップすることでオブジェクトを作成します。
ドラッグによるオブジェクトの作成

ドロップするとオブジェクトの名前が編集状態になります。ここでは特にオブジェクトを区別しませんので省略しています。この場合BackSpaseキーで名前を空にしてEnterを押します。構造ツリーで複数のクラスを選択し、一度に図にドラッグすることも可能です。
次にメッセージを作成していきます。 "プレイヤー"から"投球監視"オブジェクトへのメッセージは、非同期メッセージになっています。ツールパレットの左から4番目のボタンで、非同期メッセージ作成モードにしましょう。後は、"プレイヤー"のライフライン上をクリックし、さらに"投球監視"のライフライン上をクリックすれば、メッセージの矢印が引かれます。message0という名前を2回クリックして"投球する"に変更しましょう。同じように続く"1.1:倒れたピンを数える"メッセージを作成してみてください。今度は同期メッセージです。また、これは、"投球監視"オブジェクト自身へメッセージ(自己メッセージ)を送付しています。ツールパレットの左から3番目のボタンで同期メッセージ作成モードにしましょう。先ほどは、ライフライン上の点をクリックしてメッセージを作成しましたが、今度は活性区間上をクリックするように注意してください。2点目もその活性区間上をクリックしましょう。
自己メッセージの作成
![]()

メッセージへの操作の対応付け
メッセージには操作を対応付けることが可能です。例えば、対応づけられた操作の名前がクラス図で変更されると、メッセージ名も自動的に変更されるようになります。操作を対応付ける方法は、メッセージのプロパティビューにおいて、操作の項目で操作を選択するだけです。今作成したメッセージに"倒れたピンを数える"メッセージを対応付けましょう。
メッセージ送信先のベースクラスである"投球監視"クラスに、操作が登録されていれば、候補が表示されます。 もし、表示されていない場合は、【新規作成】ボタンを押して目的の操作を追加できます。 【プロパティ】ボタンを押すと選択されている操作のプロパティが表示されますので、名前やパラメータの変更が可能です。 常に操作を対応付ける必要はありませんが、これを利用することで図間の整合性を維持しやすくなります。
さて、今までの説明を踏まえて他のメッセージも作成してみてください。
メッセージを追加したり、移動したりするとメッセージ送付元の活性区間が勝手に長くなるのに気付くと思います。 これは、送付先の活性区間よりも送付元の活性区間は長くなっているべきで、 astahが自動的に活性区間の長さを調整しているためです。 astahは自動で活性区間の長さを短くはしませんので、場合によってはユーザが長さを短くすることが可能です。 活性区間の長さの変更方法は、アクション状態などのリサイズと同様の操作で行います。 選択すると四隅にノブが表示されますから、それをドラッグすることでリサイズ可能です。 ただし、活性区間の長さの制約は、非同期メッセージについては適用されません。
9. その他の図
他の種類の図については、説明を省略します。 ただ参考のために、ボーリングに関するコミュニケーション図とステートマシン図の例のみ示します。
このコミュニケーション図は、シーケンス図で描いた相互作用と全く同じ物を表現しています。

コミュニケーション図のツールパレット
メッセージを作成する時は、まずリンク上の点をクリックしてください。
このステートマシン図は、ゲームの進行に関する状態を描いたものです。

ステートマシン図のツールパレット
10. その他のastah* の機能
astahはこの記事で使った機能以外にも、以下の機能を持っています。今後の編集で利用してみてください。
- パッケージを指定したクラス図の自動作成
- 構造ツリーから構造ツリーへのモデルドラッグ
- Boundary、Control、Entityクラス等のアイコン表示
- アイテムのデフォルト色設定
- ステレオタイプ指定の色設定
- システムプロパティなどから設定可能可能です。
- 端点ドラッグによる関係の付け替え
- 端点のノブを別のアイテム上にドラッグすることでターゲットを変更できます。
- 図の出力、画像貼り付け(ラスター)
- astahモデルのインポート(追加)、別のプロジェクトを別パッケージに追加します。
さいごに
ここでは、皆さんと一緒にUMLモデリングツール astah* community を使っていくつかの図を描いてきました。 astah* で基本的なUMLを書くことができるようになったのではないでしょうか? 自分で手を動かすことで、あれ?どうだっけと思うこともあったのではないかと思います。 皆さんのUMLとUMLツールについての理解がこの記事により、少しでも深まったなら幸いです。
UMLはJavaや英語と同じように言語の一つです。 それらの習得と同じように、自分で書いたりしゃべったりと体をつかわないと、なかなか身につきません。 いつか開発に活用できるよう、UMLに触れることを継続していきましょう。 前の章で登場した図を、自分の手で描いてみるのもいいでしょうし、 頭の中のものを整理するのにUMLの図を描いてみるのもいいでしょう。
最後にastah* 開発者の1人である筆者から、皆さんにお願いがあります。 astah*は、ユーザの皆さんからの声を受けながら、手に馴染むツールへ向け日々改善されています。 ぜひ要望やコメントなどをコミュニティサイトまでお寄せください。
参考
書き込みながらUMLが身につくークブック形式の書籍です。






