UML(統一モデリング言語)
経営情報システム 第40回
「50階建ての高層ビルを建てるのに、配管工はスペイン語、電気技師は日本語、職人は古代の象形文字しか読めないとしたら、どうなると思いますか」。動画はこんな想像から始まります。このページでは動画の流れにそって、システム開発の共通言語であるUMLと、そこに出てくる8つの図を、それぞれ何を見るための図なのかという点を中心にまとめました。まず動画を聞いて、あとからここで復習するのがおすすめです。
共通言語がなければ、設計図は役に立たない
動画は、こんな想像から始まります。50階建ての高層ビルを建てるのに、配管工はスペイン語しか話せず、電気技師は日本語しか分からず、コンクリートを流す職人は古代の象形文字しか読めない。設計図がどれほど優れていても、2階部分を作る前に崩れてしまいそうです。システム開発の現場でも、同じ「大惨事」がいつも隣り合わせだといいます。
発注する経営層も、プログラミング言語の違うエンジニアも、誤解なく意思疎通できる共通言語が要る。そこで出てくるのがUML(Unified Modeling Language、統一モデリング言語)です。動画の定義は「オブジェクト指向のプログラム設計図の統一的な表記法」。かつては技術者がそれぞれの流儀で設計図を描いていたところに、世界共通のルールを持ち込んだもの、という説明でした。
(補足:UML の仕様は OMG(Object Management Group)が管理していて、最新の正式版は2017年12月の Version 2.5.1 です。なお UML は、2012年版の規格 ISO/IEC 19505(UML 2.5.1 とは別の版)として国際規格にもなっています。規格の版と OMG の最新版は同じではありません。)
動画の比喩では、UML の図は角度や縮尺の違うレンズです。巨大なシステムを1枚の図で表すのは無理なので、見たいものに合わせてレンズを替える。この回では、次の8つの図が登場します。
- ユースケース図・アクティビティ図:エンドユーザーの目線に近い、外側のレンズ。
- シーケンス図・コミュニケーション図:システム内部のやり取りを見るレンズ。
- クラス図・オブジェクト図:構造の「設計」と「実物」を見るレンズ。
- コンポーネント図・ステートマシン図:全体の構成と、1つの要素の内側へのズーム。
ユースケース図:誰が何をするかを描く
動画は、新しい物流サプライチェーンのシステムを設計する場面を例にします。最初に使うのはユースケース図で、エンドユーザーにも分かるように「誰が何をするのか」を図にしたものです。システムに求められる機能的な要求を表します。
ここで出てくる重要な概念が2つあります。1つ目はアクターで、システムを使うユーザーや、連携する外部システムのことです。2つ目はユースケースで、システムが行う処理、つまりシステムの利用の仕方を表します。
機能のリストを箇条書きにするだけでは、だめなんですか。わざわざ図にする理由が気になります。
箇条書きだと、システムの境界線が曖昧になってしまうんです。どのアクターがどのユースケースに触れるのかを線で結ぶと、「この機能は外部システムからはアクセスさせない」といった要求の範囲が、目で見てはっきり決まります。
アクターって、人間だけじゃないんですね。
はい。倉庫の作業員はもちろん、税の自動申告をする外部システムも、システムに働きかけるアクターとして扱います。
(補足:UML の仕様書でも、アクターは「システムと関わる、ユーザーやほかのシステムが担う役割」とされています。ユースケースは、システムが行う一連の動作で、アクターにとって価値のある結果をもたらすものです。)
アクティビティ図:業務の流れと条件分岐
要求が決まったら、次はその機能が現場でどう流れるかを見ます。そこで使うのがアクティビティ図で、システムのアクティビティ(活動)、データの流れ、実施の条件分岐などを表します。流れと条件分岐が見えるので、ユーザーにも理解しやすいのが特徴です。
たとえ:ピッキング作業のフローチャート
商品のピッキングを始める流れがあって、もし棚に在庫が1つもなかったら欠品対応のプロセスへ進む。動画の物流の例は、まさに現場のフローチャートです。プログラミングを知らない現場の人でも、「この分岐のときは別の承認フローが入るはずだ」と図を見て指摘できます。この確認ができるから、ユースケース図とアクティビティ図は、開発者と現場をつなぐ翻訳機のような役割を果たす、と動画は説明していました。
シーケンス図とコミュニケーション図:内部のやり取りを見る
ここからは、システム内部の「時間」と「関係性」のレンズに切り替えます。まずシーケンス図は、メッセージのやり取りを時系列に沿って並べた図です。メッセージと呼ばれる矢印で、各オブジェクト間の応答を表し、処理の流れを時系列で見せます。上から下へ時間が進み、矢印がポンポンと飛ぶイメージです。
動画が挙げる理由は、処理の順番が命綱だから。もし在庫管理サーバーが「在庫を確保した」という応答を返す前に、決済サーバーがクレジットカードの引き落としを始めたら、商品がないのにお金だけ取られる大クレームになります。誰が誰に矢印を出し、どの応答を待ってから次に進むのかを、時系列で厳密に決めておく必要があるわけです。
でも、メッセージのやり取りを描く図にはコミュニケーション図もありますよね。シーケンス図と役割がかぶっていませんか。
動画では、見極めたいリスクが違うと説明していました。コミュニケーション図は、オブジェクト同士の相互作用と関連を表す図です。シーケンス図が「正しい順番で動くか」を見る時間軸のレンズなら、コミュニケーション図は「誰と誰が密接に結びついているか」を見る空間的なレンズです。
たとえば特定のサーバーが落ちたとき、どこに影響が出るかを見渡したいとか?
そうです。順番のバグを防ぎたいときはシーケンス図、構造的な弱点や影響範囲を見たいときはコミュニケーション図、と使い分けるわけです。
(補足:UML 2.5.1 の仕様書では、コミュニケーション図も「メッセージの順序」を表せます。線の上のメッセージに番号を付けて順番を示す方式です。仕様書は、コミュニケーション図は、複合フラグメントなどの構造化の仕組みを使わない単純なシーケンス図に対応する、と書いています。動画の「時間軸と空間軸」という対比は、2つの図の見え方の違いをつかむ覚え方として使えます。ただし、コミュニケーション図は順序をまったく表せない図ではありません。)
クラス図とオブジェクト図:設計と実物を行き来する
動きや関係性の裏側にある、システムの根っこの構造を見るのがクラス図です。システムを構成する概念や物事(事象)と、それらの関係を記述します。抽象的な構造を関係とともに表すときにも使います。
初心者向けのテキストでは、「たい焼きの型と、焼き上がったたい焼き」の例えがよく使われます。動画はそれでは物流システムのような現場には軽すぎるとして、生き物のDNAと、実際の生き物で説明しました。配送トラックというクラスは、種のDNAのようなものです。ナンバープレートや現在の燃料といった属性と、エンジンをかける、荷物を積むといった機能が書かれていますが、目の前に存在するトラックそのものではありません。DNAだけでは荷物を運べないからです。
そこで、システムが実際に動いているある瞬間の実体を捉えるのがオブジェクト図です。システムのある時点のオブジェクト間の関係を表し、クラス図で表したクラスの構成や相互関係を、より具体的なレベルで示します。動画の言い方では「火曜日の午後3時、大雪が降っているある時点で、ナンバー402のトラックの燃料は残り10%」という具体的な1コマです。
この具体的な1コマ同士が、その瞬間にどんな関係を結んでいるかを確かめると、抽象的な設計に矛盾がなかったかを検証できます。クラス図で完璧な設計をして、オブジェクト図で実際の動作環境をシミュレーションする。この抽象と具体の往復が、堅牢なシステムの土台になると動画は話していました。
(補足:UML の仕様書では、オブジェクト図に使うインスタンスの表記は、「ある時点の姿(スナップショット)」を表せるとされています。クラス図は静的な構造を示す図、つまり構造図に分類されます。)
コンポーネント図とステートマシン図:全体と一点
最後の2つは、ソフトウェアの設計を現実の物理的な世界と、オブジェクトの内側にあてはめるレンズです。
コンポーネント図は、動画では、物理的な構成要素からシステムの構造を記述する図で、システムの大まかな構造を視覚化するときに役立つとされました。東京のデータセンターのデータベース群と、大阪のWebサーバー群をどう配置し、どのネットワークでつなぐのか。その配置が、そのままインフラ投資のコストや、セキュリティの物理的なリスクに直結するので、経営層とインフラの議論をするときに欠かせない、という説明です。
補足:「配置」は配置図の領分
UML 2.5.1 の仕様書では、コンポーネントは「システムの部品で、中身をまとめて持ち、環境の中で取り替えられるもの」と定義され、業務やプロセスのような論理的なコンポーネントも、EJB や .NET のような物理的なコンポーネントも扱います。一方、成果物をサーバーなどの実行環境(ノード)に割り当てる、つまり実際の置き場所を示す図は、配置図(Deployment Diagram)です。動画の「データセンターごとの配置」は、仕様書の用語でいえば配置図に近い話です。動画では「コンポーネント図は物理的な構成要素からシステムの構造を記述した図」と説明されているので、動画の整理と仕様書の定義の両方を知っておくと安心です。
そして、巨大な物理構造を見た直後に、たった1つの要素まで限界までズームインするのがステートマシン図です。1つのオブジェクトに注目して、そのオブジェクトの状態が、相互作用の中でどう変わっていくのかを表します。
全体の動きは見えているはずなのに、どうして1つの状態にそこまで執着するんですか。
最も致命的で、最も発見しにくいバグが、想定外の状態のまま処理が進んでしまうことで起きるからです。ネットショップのカートなら、空、商品あり、決済処理中、決済完了という状態があります。決済処理中にユーザーがブラウザの戻るボタンを押したとき、状態をロックする設計が抜けていると、システムがパニックを起こして顧客のカードに何度も請求してしまうかもしれません。
うわ、それは怖いですね。
だから、あるオブジェクトが特定の相互作用の中でどう状態を変えるか、あるいは変えてはいけないかを定義するのが、ステートマシン図の役割なんです。
(補足:仕様書では、ステートマシンは離散的なイベントで動く振る舞いを有限の状態で表す仕組みで、クラスのインスタンスの振る舞いを表すのに使うと説明されています。図のカートの遷移は、動画の例にそって作った設計例です。)
まとめ:8つの図を「見たいもの」で使い分ける
動画の締めくくりは、「いろいろな図があるので、名前と用途をしっかり把握しておくとよい」でした。どれか1つの視点が欠けても、複雑なシステムを安全に作って運用することはできない、という趣旨です。動画で出てきた8つを、見たいものごとに整理します。
| 図 | 動画の説明 | 分類 |
|---|---|---|
| ユース | 誰が何を | 振る舞 |
| アクティ | 活動の流れと | 振る舞 |
| シーケ | やり取りを | 振る舞 (相互 |
| コミュニ | オブジェ | 振る舞 (相互 |
| クラス図 | 概念や物事と | 構造図 |
| オブジェ | ある時点 | 構造図 |
| コンポー | 物理的な構成 | 構造図 |
| ステート | 1つのオブジェ | 振る舞 |
(補足:UML 2.5.1 では図の種類は全部で14あり、時間と無関係な静的な構造を示す構造図と、動的な振る舞いを示す振る舞い図の2つに大きく分かれます。動画に出てこなかった図には、配置図、パッケージ図、複合構造図、プロファイル図、相互作用概要図、タイミング図があります。仕様書は、この分類は論理的な整理で、境界は厳密には区別されないとも注記しています。)
混同しやすい組み合わせ(動画の整理より)
- 動画では、シーケンス図は時系列、コミュニケーション図はオブジェクト間の相互作用と関連、と対にして説明しています。
- 動画では、クラス図は型(設計)、オブジェクト図はある時点の具体的な姿、と対にして説明しています。
- 動画では、ユースケース図は「誰が何をするか」、アクティビティ図は「処理の流れと条件分岐」と整理しています。
- 動画では、ステートマシン図は1つのオブジェクトの状態変化を表す図、と整理しています。
最後に動画は、UML を自分の悩みにも当てはめてみようと呼びかけます。いまの自分は、アクティビティ図の中で「このままキャリアを進めるか、新しく挑戦するか」という条件分岐に立っているのか。それともステートマシン図の中で、自分の状態が大きく変わる引き金を引こうとしているのか。システムも人も、状態は変わり続ける。図に当てはめて俯瞰すると、解決の糸口が見えるかもしれません。
動画で聞く
続けて読む
- 第35回 4つの開発モデルとビジネスの生存戦略経営情報システム・システム開発 002
- 第36回 スクラム・XP・DevOpsの違いが5分でわかる!アジャイル開発を徹底図解経営情報システム・システム開発 003
- 第37回 単体→結合→システム→受入→運用 テスト工程を図で一発攻略経営情報システム・システム開発 004
- 第38回 FP法とCOCOMOはどう使い分ける?開発見積り6手法を完全比較経営情報システム・システム開発 005
- 第39回 CPI・SPIが1を下回ったらどうする?EVMで進捗を数値化する方法経営情報システム・システム開発 006
- 第41回 POA・DOA・OOA・SOAの違い経営情報システム・システム開発 008
- 第42回 集中から3層アーキテクチャとAPIまで経営情報システム・システム開発 009
- 第43回 ERPとEAIはどう違う?企業システム設計の正解を完全解説経営情報システム・経営とIT 001
- 第44回 コロケーション・ホスティング・SaaSの違いとは?外注形態を完全比較経営情報システム・経営とIT 002
- 第45回 IoTとAIはどう繋がる?最重要IT用語を図で完全理解経営情報システム・経営とIT 003
- 経営情報システムのWebテキスト一覧同じ科目の48本を一覧・検索
- 中小企業診断士 1次の講座トップ科目別プレイリスト・人気の講義・ファイナルペーパー

