UMLとは何か?
UMLは統合モデル言語の略で、14種類の異なるUML図からなる標準化されたモデル化言語である。
なぜUMLを使うのか?
UMLを使用することで、ソフトウェア開発の前段階で全体のソフトウェア設計が読みやすく、理解しやすくなり、開発リスクを低減できる。また、さまざまな開発者間でのコミュニケーションを促進する。
UMLは非常に表現力豊かなモデル化言語を提供し、ソフトウェア開発プロセスにおけるさまざまな人々が関心を持つ情報を得られるようにする。
UMLの主な目的は以下の通りである:
- ユーザーに即時利用可能な表現力豊かな視覚的モデル化言語を提供し、共同チーム作業で意味のあるモデルを開発・共有できるようにする。
- コアコンセプトに対する拡張性と特殊化メカニズムを提供する。
- 特定のプログラミング言語や開発プロセスに依存しない。
- モデル化言語を理解するための形式的基盤を提供する。
- オブジェクト指向ツールの市場開発を促進する。
- 協働、フレームワーク、パターン、コンポーネントなどの高レベルな開発概念をサポートする。
- ベストプラクティスを統合する。
UML図とは何か?
- UML図は構造図と振る舞い図に分けられる。
- 構造図はクラス図、プロファイル図、コンポーネント図、複合構造図、オブジェクト図、配置図、パッケージ図に分けられる。
- 振る舞い図はアクティビティ図、ユースケース図、状態機械図、インタラクション図に分けられる。
- インタラクション図はさらにシーケンス図、シーケンス図、コミュニケーション図、インタラクション概要図に分けられる。

UML図の14種類
- クラス図 – 1つクラス図は、クラスとそのプロパティや操作、オブジェクト間の関係を示すことによって、システムの構造を表す静的図である。
- ユースケース図 – 1つユースケース図は、ユースケース、役割、それらの間の関係から構成される。ユーザーがシステムとどのようにやり取りするかを示し、ユースケースの仕様を定義する。
- シーケンス図 – 1つシーケンス図は、オブジェクト間の順序付き通信をモデル化するものである。シナリオに関与するオブジェクト、クラス、役割、および情報の正確な順序を示す。ライフラインに属する垂直線とメッセージの水平線から構成される。
- アクティビティ図 – 一つのアクティビティ図は、アクションの流れに基づいてシナリオを示す行動図である。アクションの順序、条件に基づく判断、並行分岐、さまざまなループをモデル化する。
- コミュニケーション図 – 一つのコミュニケーション図は、ライフラインで表されるメッセージの形で、オブジェクトや部品間の相互作用を示す。コミュニケーション図はUMLシーケンス図の変形形であるが、その要素が水平方向に順序付けられる必要がなく、図内での任意の位置に配置可能である点で異なる。
- ステートマシン図 – 一つのステートマシン図は、エンティティ(デバイス、プロセス、プログラム、ソフトウェア、モジュールなど)の状態および状態間の遷移を記述する。条件は、ある状態から別の状態への遷移が使用可能なタイミングを指定する。
- オブジェクト図 – 一つのオブジェクト図は、構造化されたUML図である。特定の時点におけるシステムまたはその部分を記述する。インスタンス、その値、および関係性をモデル化する。データ構造の例を示すために使用できる。
- パッケージ図 – 一つのパッケージ図は、モデル内のパッケージ間の依存関係を示す。大規模プロジェクトの構造と組織を記述する。
- コンポーネント図 – 一つのコンポーネント図は、複雑なシステムの視点を提供する。システムのさまざまな部分が提供および/または必要とするインターフェース、および部分間の関係性を記述する。これらの部分は、コンポーネントやその他のアーティファクトによって表現される。
- デプロイメント図 – そのデプロイメント図は、ネットワークノード上のアーティファクトのデプロイメントを記述する。物理ノード(ハードウェア、サーバー、データベースなど)上のアーティファクト(ソフトウェア、システム、モジュールなど)の位置と、解決策の特定の部分間の関係性を示すために使用される。
- コンポジット構造図 – そのコンポジット構造図分類子の内部構造、その部品およびポートを示し、それらを通じて環境との通信を可能にする。各要素が明確な役割を持つ協働をモデル化する。
- 相互作用概要図 – その相互作用概要図システムまたはサブシステム内の相互作用の高レベルな視点を提供する。アクティビティ図と同様の方法でプロセスを記述するが、アクションノードの代わりに他の相互作用図および相互作用参照を使用する。
- タイミング図 – そのタイミング図主に時間に焦点を当て、分類子のタイムライン上の変化を記述する。タイムラインは縦方向に積み重ねられ、時間は左から右へと増加する。
- プロファイル図 – そのプロファイル図UML言語への拡張を記述および定義する。拡張メカニズムにより、言語を特定のドメインやプラットフォームに適応できる。拡張はスタereotypeによって定義される。
クラス図とは何ですか?
クラス図はすべてのオブジェクト指向手法の中心的なモデリングツールである。クラス図はシステム内のオブジェクトの種類およびそれらの間のさまざまな静的関係を記述する。クラス、インターフェース、およびそれらの間の静的構造と関係を表現するために使用される。
- 一般化関係は継承関係を示し、サブクラスが親クラスのすべての特徴と振る舞いを継承することを意味する。実線に三角形の矢印を付け、矢印の先端が親クラスを向く。
- 実装 関係はクラスとインターフェースの間の関係を示し、クラスがインターフェースのすべての特徴と振る舞いの実装であることを意味する。点線に三角形の矢印を付け、矢印の先端がインターフェースを向く。
- 関連関係は所有関係を示し、1つのクラスが別のクラスのプロパティおよびメソッドを知ることを可能にする。実線に通常の矢印を付け、矢印の先端が所有者を向く。双方向関連は2つの矢印を持つこともあり、矢印がまったくないこともありうる。単方向関連には矢印がある。
- 集約関係は全体と部分の間の関係を示す。部分は全体から独立して存在できる。集約関係は関連関係の一種であり、強い関連関係である。関連と集約は文法的に区別できないため、具体的な論理関係を検討する必要がある。実線に空洞のダイヤモンドを付け、空洞のダイヤモンドの先端が全体を向く。
- コンポジション関係は全体と部分の関係です。しかし、部分は全体から独立して存在できません。これは、集約関係よりも強い種類の関連関係です。実線と実心のダイヤモンドで表され、ダイヤモンドの先端が全体を指しています。
- 依存関係関係は使用関係であり、つまり一つのクラスの実装には別のクラスの支援が必要です。点線と通常の矢印で表され、矢印の先端は使用側を指します。

ユースケース図とは何ですか?
ユースケース図は、アクター、ユースケース、境界、およびそれらの関係から構成されるシステムの機能を説明するビューです。全体のシステムの機能を記述するために使用されます。
ユースケース図には以下の3つの関係が含まれます:
- include関係は「include」の記号を使用します。注文リストを表示するには、まずログインする必要があります。
- extend関係は「extend」の記号を使用します。注文リストの照会機能を基に、データのエクスポート機能を追加できます。
- 一般化関係では、子ユースケースは親ユースケースのすべての構造、振る舞い、関係を継承します。

シーケンス図とは何ですか?
- シーケンス図は、時間の経過に従ってオブジェクトがどのように協働するかを示します。ユースケースの特定のシナリオにおいて、オブジェクトが他のオブジェクトとどのように相互作用するかを示します。オブジェクト間で送信されるメッセージの時間順序を記述することで、複数のオブジェクト間の動的協働を示します。

アクティビティ図とは何ですか?
アクティビティ図は、特定のビジネスユースケースの実装プロセスを記述します。ビジネスのワークフローまたはユースケースの実現を表現するために使用されます。

コミュニケーション図とは何ですか?
コミュニケーション図は、メッセージを送信および受信するオブジェクト間の組織的関係を記述し、時間的な順序よりもオブジェクト間の協働関係に重点を置きます。異なるオブジェクト間の関係を表示するために使用されます。

ステートマシン図とは何ですか?
ステートマシン図は、単一のオブジェクトの振る舞いをモデル化し、そのライフサイクルを通じて異なるイベントに応じてオブジェクトが関連するイベントを実行する順序を示します。指定されたオブジェクトがライフサイクルを通じて異なるイベントのさまざまな状態に応じて反応することを示すために使用されます。

オブジェクト図とは何ですか?
オブジェクト図はクラス図のインスタンスであり、ある時点におけるシステムの詳細な状態のスナップショットです。特定の瞬間に2つ以上のオブジェクト間の関係を表現するために使用されます。

パッケージ図とは何ですか?
パッケージ図は構造図の一種で、中規模から大規模なプロジェクトにおけるモデル要素の配置と構成を示します。パッケージ間の依存関係を表現するために使用されます。

コンポーネント図とは何ですか?
コンポーネント図は、システム内のコンポーネントが提供および要求するインターフェース、ポートなどを記述し、それらの間の関係も示します。コンポーネント間の依存関係を表示するために使用されます。

デプロイメント図とは何ですか?
デプロイメント図は、システム内のソフトウェアが異なるノードにどのように配置されているかを記述します。ソフトウェアとハードウェアの間のマッピング関係を表現するために使用されます。

コンポジット構造図とは何ですか?
コンポジット構造図は、「コンポジット構造」の内部構造およびそれらの間の関係を記述します。この「コンポジット構造」はシステムの一部であることもあれば、全体であることもあります。システム内の論理的な「結合構造」を表現するために使用されます。

インタラクション概要図とは何ですか?
インタラクション概要図は、アクティビティ図と同様に、インタラクションモデルに対して高いレベルの抽象化を提供します。ノードがインタラクションまたはインタラクションが発生する状況であるアクティビティ図の変種です。インタラクションの制御フローを概説することに焦点を当てており、図間のアクティビティの流れも示すことができます。

タイミング図とは何ですか?
タイミング図は、時間の経過に伴って1つ以上の要素の値や状態がどのように変化するかを示すために使用されます。また、時間制約のあるイベント間の相互作用、およびそれらを制御する時間的制約や締切に関する制約も示します。時間の経過に伴って変化する要素の状態や値を表すために使用されるビューです。

プロファイル図とは何ですか?
プロファイル図は、特定のドメインやプラットフォーム向けにUMLモデルをカスタマイズするための汎用的な拡張メカニズムを提供します。特定のドメインにおけるUMLモデルの構築に使用されます。

UMLは非常に巨大で複雑ですか?
UMLは本当に非常に広大なトピックです。UMLは14の異なるUML図タイプに分類された大量の図式記法を提供しており、それぞれが異なるUMLモデルを持ち、異なる目的を果たし、開発ニーズのさまざまな側面に対応しています。
- 14のUML図タイプのそれぞれの図は、大多数のソフトウェア開発プロジェクトにおける異なるニーズをカバーする大量の構成要素と記法を提供します。
- UML仕様書は700ページ以上に及び、明らかに複雑すぎるとして評価されており、UMLの認識や採用に悪影響を与えています。
- 通常、ユーザーはUMLの図や構成要素の一部しか考慮せず、使用しません。
最も重要なUML図と記法を学ぶ
統一モデリング言語の最も重要な開発者の一人であるグレイディ・ブーチは、「すべてのソフトウェアの80%に対しては、UMLの20%だけで十分である」と述べました。
UML調査の結果とは何ですか?
図が以下のように広く使われていると仮定することで、UML調査の結果を解釈できます。
- 60%以上のソースで使用されている場合、広く使われているとみなす
- 40%以下のソースで使用されている場合、ほとんど使われていないとみなす

あなたのUML学習計画を作成する
調査で収集されたデータに基づいて、意味のあるUML学習計画を立てることで、UML学習のスタートをより明確にできるでしょう!
統一モデリング言語(UML)リソース:
- UMLとは何ですか?
- なぜUMLモデリングを行うのか?
- 14種類のUML図タイプの概要
- UML協働図とは何ですか?
- UMLの関連性 vs 集約 vs 合成
- UMLクラス図チュートリアル
- UMLで制約をモデル化するには?
- 状態機械図 vs 活動図
- アクターをどのように特定するか?
- ユースケースモデルにおけるアクターの種類
- Model-ViewとControlとは何ですか?
- UMLシーケンス図を使ってMVCフレームワークをモデル化する方法
- UML – 挙動図と構造図
- UMLの拡張メカニズムとは何ですか?
- UML実践ガイド – UMLモデリングについて知っておくべきすべて
- UMLモデリング、ソフトウェアプロセス、ツール
- UML – パッケージを用いたソフトウェアアーキテクチャのモデリング
- 状態図について知っておくべきすべて












