UML速習会
図で表現するということ
住友孝郎/Takao Sumitomo
シゴトでココロオドル
• 住友 孝郎(Takao Sumitomo)
• たぶんAndroidアプリ開発者
• その他
– 電子工作
– OpenCV
– 技術同人誌の執筆
• Twitter:@cattaka_net
• ウォンテッドリー株式会社所属
自己紹介
シゴトでココロオドル
UMLとは
シゴトでココロオドル
• Unified Modeling Languageの略
• 複数の図から構成される表現方法
• OMG(Object Management Group)が管理
• 様々な側面から対象を描くことができる
概要
シゴトでココロオドル
• 一般的な表記法
– フローチャート
– バブルチャート
– データフロー図
• 主な問題
– 表現力が弱い
– オレオレ記法を入れざるを得ない
なぜUMLか
シゴトでココロオドル
• オレオレ記法が入ると、、、
– 描いた人にしかわからない
– 矛盾が発生しやすい
• なので、こなれた表記法を使いましょう
– すなわちUMLを用いる
なぜUMLか
シゴトでココロオドル
• スケッチとして
• 設計図として
• プログラミング言語として
何に使えるか
シゴトでココロオドル
• 紙に描けないものは実装できない
• 実装できても正しく動いてるか確認できない
主張
もちろん設計の全てを描き出す必要はない
シゴトでココロオドル
• 主語-動詞-目的語の関係
– 例:「ファイル送信機能」は「チャット機能」を拡張する
• 物やデータの移動の関係
– 例:「商品」を「倉庫」からお客様のところへ配送する
余談:オレオレ記法に見られる矢印
これらを区別なく描くとグラフを見た人が混乱する
シゴトでココロオドル
UMLの使った開発の進め方
シゴトでココロオドル
• 実装は大きく3つの側面がある
実装の三面図
実装
振る舞い 構造
相互作用
シゴトでココロオドル
• 実装の幻を思い浮かべる
実装
の幻
開発の進め方1
シゴトでココロオドル
• 3つの側面の図を描く
開発の進め方2
実装
の幻
振る舞い図 構造図
相互作用図
シゴトでココロオドル
• お互いの図に矛盾が無いことを確認する
開発の進め方3
振る舞い図 構造図
相互作用図
シゴトでココロオドル
• 実際の実装を作っていく
開発の進め方4
振る舞い図 構造図
相互作用図
本物
の
実装
シゴトでココロオドル
UMLの各図の紹介
シゴトでココロオドル
• 構造図
– オブジェクト図
– クラス図
– パッケージ図
– コンポーネント図
– コンポジット構造図
– 配置図
UMLの図の種類
• 振る舞い図
– ユースケース図
– アクティビティ図
– ステートマシン図
• 相互作用図
– コミュニケーション図
– シーケンス図
– タイミング図
– 相互作用概要図
シゴトでココロオドル
• ユーザー視点でシステムの振る舞いを描く
• システムの要件とその関連の整理に便利
振る舞い図:ユースケース図
シゴトでココロオドル
• ユーザー視点でシステムの振る舞いを描く
• システムの要件とその関連の整理に便利
振る舞い図:ユースケース図
シゴトでココロオドル
• 書き方
– 登場人物を洗い出す
– ユースケース(やりたいこと)をリストアップする
– 登場人物とユースケースを図に描き出す
– それぞれの関連の線を引く
振る舞い図:ユースケース図
シゴトでココロオドル
振る舞い図:ユースケース図
シゴトでココロオドル
• 順次処理や並列処理を表記できる
• フローチャートに似た表記法である
• 開始ノードから終了ノードへの一連の流れで表す
振る舞い図:アクティビティ図
シゴトでココロオドル
• 描き方
– 登場人物を洗い出す
– 登場人物のアクション(やること)をリストアップす
る
– アクションを図に描き出す
– それぞれの順序の線を引く
振る舞い図:アクティビティ図
シゴトでココロオドル
振る舞い図:アクティビティ図
シゴトでココロオドル
• 相互作用の順序を厳密に表すことが出来る
• 横方向にオブジェクトを並べて表記する
• 上から下へ時系列順に表記する
• マルチスレッド処理の記述に威力を発揮する
相互作用図 :シーケンス図
シゴトでココロオドル
• 描き方
– 登場人物を洗い出す
– 登場人物間のメッセージ(やりとり)をリストアップ
する
– メッセージの順番を整理する
– 登場人物のライフラインを引く
– メッセージをライフライン上に描いていく
相互作用図:シーケンス図
シゴトでココロオドル
• オブジェクト間の相互作用を表す
• オブジェクト間の接続(関係)を表す
相互作用図:コミュニケーション図
シゴトでココロオドル
• 描き方
– 登場人物を洗い出す
– 登場人物間のメッセージ(やりとり)をリストアップ
する
– 登場人物を図に描く
– 登場人物間で関連があるものに線を引く
– 番号を振りならがメッセージを書き込んでいく
相互作用図:コミュニケーション図
シゴトでココロオドル
• システムの構造を表現する
• システム全体の構成を見渡せる
構造図:コンポーネント図
シゴトでココロオドル
• 描き方
– コンポーネントを洗い出す
– 各コンポーネントが提供する機能を洗い出す
– 各コンポーネントが必要とする機能を洗い出す
– 提供する機能と必要とする機能を繋いでいく
構造図:コンポーネント図
シゴトでココロオドル
• クラス間の構造や関連を表現する
• ER図のように多重度の表現にも強い
構造図:クラス図
リンク
コンポジション
シゴトでココロオドル
• 描き方
– 登場するクラスを洗い出す
– 関連するものに線を引く
– ユースケースなどから多重度を決定する
– 必要な属性や操作を埋めていく
構造図:クラス図
シゴトでココロオドル
例:反社チェックをUMLで描く
実装
の幻
振る舞い図 構造図
相互作用図
シゴトでココロオドル
反社チェックをアクティビティ図で描く
シゴトでココロオドル
反社チェックをシーケンス図で描く
シゴトでココロオドル
例:Syncの全体設計をUMLで描
く
実装
の幻
振る舞い図 構造図
相互作用図
シゴトでココロオドル
Syncの全体設計をユースケース図をUMLで描く
シゴトでココロオドル
Syncの全体設計をコンポーネント図をUMLで描く
シゴトでココロオドル
例:認証の流れをUMLで描く
実装
の幻
振る舞い図 構造図
相互作用図
シゴトでココロオドル
認証の流れをアクティビティ図
シゴトでココロオドル
認証の流れをシーケンス図
シゴトでココロオドル
認証の流れをコミュニケーション図
シゴトでココロオドル
実装
の幻
振る舞い図 構造図
相互作用図
例:Syncアプリの構成をUMLで
描く
シゴトでココロオドル
Syncアプリの構成をクラス図で描く
シゴトでココロオドル
Syncアプリの状態遷移をステートマシン図で描く
シゴトでココロオドル
実習:UMLで書こう
シゴトでココロオドル
• コンソールアプリの三目並べ
• 先手と後手が交互に入力する
• 勝負がつくと終了する
お題:三目並べ
シゴトでココロオドル
ユースケース図
シゴトでココロオドル
アクティビティ図
シゴトでココロオドル
クラス図
シーケンス図
シゴトでココロオドル
まとめ
シゴトでココロオドル
• メリット
– 矛盾が発生しにくい
– 一つの事象を複数の方面から捉えられる
– 他人との意思疎通に使える
• デメリット
– 冗長な表記が多い
– 図の数が多い
UMLについて
シゴトでココロオドル
• UMLに限らず物事をモデル化して捉えよう
• 自身の思考のモデルを増やそう
• 意思疎通を取る手段を増やそう
最後に
シゴトでココロオドル
ご清聴ありがとうございました

Uml速習会