統一モデリング言語 (UML) は、ソフトウェアエンジニア開発の世界において、ビジネスユーザーを始め、システムを理解しようとするあらゆるユーザーが理解できる視覚化のための共通言語を打ち立てることを目的のために作られたモデリング手法です。 このUMLガイドでは、UML図の基礎知識、用途、メリット、例、概念やUMLの種類、 Lucidchart UML 図ツール で作成する際のガイドや参考テンプレートをご紹介しています。
この記事を読むのに必要な時間 : 9 分
UML図の作成には、ぜひ Lucidchart を試してみましょう。素早く、簡単に使えて、完全に無料です。
UMLとは?
UML(Unified Modeling Language、統一モデリング言語)は、複雑なソフトウェアシステムのアーキテクチャや設計を視覚的に表現するための共通の言語です。UMLは、システムの構造や動作をわかりやすく表現し、設計や実装を効率的に行えるようにします。これにより、システム分析や設計書の理解が深まり、関係者間でのコミュニケーションが円滑になります。
UMLは、他の分野で使われる設計図と似ており、システムの構造や振る舞いをさまざまな種類の図で表現します。これらの図は、システム内のオブジェクトの関係や動作、境界を視覚的に示すことができます。
UMLを活用することで、複雑なシステム設計を視覚的に整理し、誰でも簡単に理解できる形にすることができます。

UMLの活用目的と使用メリット
UML図の活用目的と使用メリットは主に以下を参考にして下さい。
-
システ ム全体像の可視化
- 複雑なシステムやプログラムを、文字だけで記述すると混乱しがちです。UML図を使うことで、システムの構成要素やその相互関係が視覚的に表現され、
全体の構造や流れを一目で把握できる
ようになります。これにより、システムの理解が迅速になり、特に複雑なシステムや大規模なプロジェクトでは大きな効果を発揮します。
- 複雑なシステムやプログラムを、文字だけで記述すると混乱しがちです。UML図を使うことで、システムの構成要素やその相互関係が視覚的に表現され、
-
システムに対する理解力の向上
- UML図は、システムやソフトウェアの設計を
視覚的に整理し、直感的に理解
できるため、関係者全員がシステムの構造や動作を明確に把握できます。特に、技術者だけでなく非技術者も含めて、プロジェクトに関わる全員が同じ理解を共有できるようになります。これにより、要件の理解や誤解を防ぐ
ことが可能です。
- UML図は、システムやソフトウェアの設計を
-
新しいシステムの設計図を作成する際のサポート
- 新しいシステムや機能を設計する際、UML図はその
設計の基本的なガイドラインや計画書
となります。システムの構造や振る舞いを視覚化することで、設計段階での問題や潜在的な課題を早期に発見しやすくなり、開発の効率化に繋がります。また、設計の変更や拡張も図を通して柔軟に対応できます。
- 新しいシステムや機能を設計する際、UML図はその
-
システム開発プロジェクトのコミュニケーションの統一
- UML図は、開発者、設計者、プロジェクトマネージャー、顧客など、
プロジェクトに関わる全てのメンバー間の共通言語
として機能します。これにより、設計意図やシステムの動作に関するコミュニケーションが統一され、情報の伝達ミスや誤解を減らす
ことができます。特に、複数チーム間での開発が行われる場合でも、一貫した理解と認識を持つことができ、プロジェクト全体の進行をスムーズにします。
- UML図は、開発者、設計者、プロジェクトマネージャー、顧客など、
-
ドキュメンテーションとメンテナンスの効率化
- UML図は、システムの構造や振る舞いを文書として記録するための優れた手段です。これにより、
システムのメンテナンスやアップデート
が必要なときに、開発者が既存のシステムを理解しやすくなり、変更作業を円滑に進めることができます。また、将来の開発者やメンテナンス担当者が参照するための信頼できる資料としても機能します。
- UML図は、システムの構造や振る舞いを文書として記録するための優れた手段です。これにより、
覚えておきたいUMLの用語一覧
UML で使われる用語に慣れておきましょう。以下のリストでは、OMG に属さないメンバーが一般に使われる用語を理解できるよう、UML 2.4.1ドキュメントから抜粋した内容を紹介しています。
UMLの用語 | 定義 |
抽象構文準拠 | 抽象構文準拠とは、システムやプログラムが、詳細な実装ではなく構造や概念の本質的な部分を示す抽象的な構文に従って正しく設計されていることを指します。これにより、一貫性のある設計や拡張性が確保され、システム全体の理解が容易になります。 |
共通ウェアハウスメタモデル (CWM) | データウェアハウスやデータマートの設計、管理、運用を標準化するためのメタモデルです。CWMは、データの構造や意味を統一的に定義することで、異なるデータソースやツール間でのデータの統合と相互運用性を容易にします。 |
具象構文準拠 | 具体的な記述形式や文法に従ってシステムやプログラムを正確に記述していることを指します。要するに、実際のコードや仕様の記述が正しい文法や形式に従っている状態です。 |
コア | UML のコンテキストにおいて、コアは通常、高い再利用性を主目的に設計された完全なメタモデルである「コアパッケージ」を指します。 |
言語単位 | プログラミング言語や記述言語における最小の意味を持つ構成要素のことです。具体的には、変数、キーワード、演算子、関数、またはクラスなど、言語の文法や構文を構成する基本的な要素を指します。 |
レベル0 (L0) | UML インフラストラクチャの最下位準拠レベル - クラスベースの構造などのモデリングのための単一の言語単位で、最も人気の高いオブジェクト指向プログラミング言語で見られるものです。 |
メタモデル | モデル形成の基盤となる言語とプロセスを定義します。 |
メタモデル構造 (LM) | UML インフラストラクチャにおける第2の準拠レベル - UML そのものなど、(CMOF を使った) メタモデルの作成に使われるより高度なクラスベースの構造のための追加の言語単位で、UML の準拠レベルは2種類のみとなります。 |
Meta Object Facility (MOF) | MOFはメタモデルを構築・管理するための規格を提供します。これにより、異なるモデル間での一貫性や互換性が確保され、複雑なシステムやデータの設計・管理が効率化されます。 |
モデル駆動型アーキテクチャ (MDA) | システム開発をモデルを中心に進める方法論です。具体的には、システムの設計や実装を抽象的なモデルから始め、モデルを基にコードやその他のアーティファクトを自動生成することで、システムの開発を効率化し、変更に強いアーキテクチャを実現する手法です。 |
オブジェクト制約言語 (OCL) | 統一モデリング言語に適用される規則を記述するための宣言型言語。OCL は、自然言語よりも正確で、数学よりも習得しやすい用語やフローチャート記号の提供により UML を補完します。 |
オブジェクトマネジメントグループ (OMG) | UML 仕様の定義と維持を行う非営利のコンピューター業界仕様コンソーシアムです。 |
UML 1 | 統一モデリング言語の最初のバージョン。 |
XMI | メタデータをXML形式で交換するための標準仕様です。主に、異なるツールやシステム間でのデータの互換性を確保するために使用されます。UMLやその他のモデリング言語で作成されたモデルをXML形式で表現し、保存や転送を容易にするための方法です。 |
MDA(Model Driven Architecture) | モデルを中心にシステムの設計と開発を行うアプローチです。具体的には、まず抽象的なモデルを作成し、それを基に具体的なソフトウェアを自動的に生成することで、開発プロセスの効率を高め、変更に強いシステムを作ることを目指します。 |
MOF ドキュメントの全文を表示。
UMLの種類一覧
UML図では、要素を用い、それをさまざまな形で関連付けることにより、システムの静的または構造的な側面を表す図や、システムの動的側面を捉えた行動図を作成します。
構造 UML 図
クラス図
最も広く用いられる UMLの一種で、あらゆるオブジェクト指向ソリューションの基盤となるものです。システム、属性やオペレーション内のクラスに加え、クラス間の関係を階層化するのがクラス図です。大規模なシステムを図式化する場合には、クラスがグループ化されてクラス図となります。
コンポーネント図
ソフトウェアシステムの構成要素の構造的関係を示すもので、複数の構成要素を含む複雑なシステムに用いられるのが一般的です。構成要素はインターフェイスを通じて交信します。
複合構造図
複合構造図は、クラスの内部構造を示すために用いられます。

配置図
システムのハードウェアとソフトウェアを示すもので、複数のマシンにわたり、独自の設定でソフトウェアソリューションを使用する際に有用です。

オブジェクト図
実世界の例を用いてオブジェ クト間の関連を示し、一定の時点におけるシステムの状態を図式化するものです。オブジェクト内でデータを利用できるため、オブジェクト間の関連を明確化するために用いることもできます。

パッケージ図
パッケージ間の依存関係は、パッケージのインポートとパッケージの統合という2種類の定義で表します。パッケージによりシステムのさまざまなレベルを表し、そのアーキテクチャを表現することができます。パッケージの依存関係に印をつけ、レベル間の通信メカニズムを示すことができます。

行動 UML 図
アクティビティ図
事業やオペレーションのワークフローを視覚的に図示し、システム内の一部または一構成要素のアクティビティを示すものです。アクティビティ図はステートマシン図の代替として使用されます。

コミュニケーション図
シーケンス図に似ていますが、オブジェクト間でやり取りされるメッセージに主眼をおいた図です。1つのシーケンス図とさまざまなオブジェクトを使い、同じ情報を示すこともできます。

相互作用概要図
システム内のオブジェクト間の主要な相互作用やフローを簡潔に示す図です。シーケンス図やアクティビティ図を組み合わせ、システムの全体的な動きを高レベルで視覚化します。詳細なやり取りではなく、主要なプロセスの流れを簡潔に表現し、システムの振る舞いを理解するのに役立ちます。
シーケンス図
オブジェクト間の相互作用と、その相互作用の発生順序を示すものです。特定のシナリオ下での相互作用を図示します。

ステートマシン図
アクティビティ図と同様に、現在の状態でさまざまに異なるオブジェクトの振る舞いを示すものです。

タイミング図
シーケンス図と同様に、所定の時間枠内でのオブジェクトの振る舞いを示すものです。含まれるオブジェクトが1つのみであれば、図はシンプルなものとなります。複数のオブジェクトが含まれる場合には、オブジェクト間の相互作用が所定の時間枠内で示されます。

ユースケース図
システムの特定の機能を表すもので、機能間の関連と内部/外部のコントローラー (アクター) との関連を図示するために作成されます。

UML の書き方 : チュートリアルと例
さまざまな種類の UML 図を作成する方法を学ぶため、構造図と行動図の作成プロセスを手順別に説明する以下のチュートリアルを試してみましょう。
クラス図
クラス図は、クラス、属性、操作やオブジェクトを含むシステムの静的構造を表します。クラス図を使うことで、実装クラスや論理クラスの各形式で計算データや組織データを示すことができます。 これらの2つのグループは、互いに重複する可能性もあります。
- クラスは、3部に分かれた長方形で示されます。上段にはクラス名、中段にはクラスの属性、下段にはクラスの操作 (メソッド) が含まれます。
- クラス図にクラス図形を追加し、これらのオブジェクト間の関連を図式化します。サブクラスの追加が必要となる場合もあります。
- 線を使い、クラスとサブクラスの間に関連、継承、多重やその他の関係を表します。これらの線の表記法は、選択する表記スタイルにより異なります。

コンポーネント図
コンポーネント図は、コンポーネントが組み合わせられ、より大きなコンポーネントやソフトウェアシステムを形成する様子を示すもので、システム内の各コンポーネントの依存関係をモデル化する図です。コンポーネントとは、ステレオタイプの機能を実行するために必要な実体を指します。コンポーネントのステレオタイプは、実行可能ファイル、ドキュメント、データベース表、ファイルやライブラリファイルで構成されます。
- 長方形の図形でコンポーネントを表します。この側面には小さな長方形を2つ追加します。また、この図形のアイコンを使うこともできます。
- コンポーネント図形の間に、関連を表す線を追加します。

配置図
配置図は、ハードウェアのコンポーネントの物理的展開と構造をモデル化します。システムのコンポーネントが動作する場所と相互に関係して動作する方法を示す図です。
- 配置図を作成する際には、コンポーネント図と同じ表記法を使用します。
- 3次元のキューブを使い、物理マシンまたは仮想マシンを示すノードをモデル化します。
- シーケンス図と同様のスタイルでノードにラベルを付します。必要に応じて他のノードを追加し、線で接続します。

アクティビティ図
アクティビティ図は、クラスオブジェクト間の管理フローの手順を業務ワークフローなどの組織的プロセスと併せて示します。特別な図形を用いて図を構成し、矢印を使ってこれらを接続します。アクティビティ図の表記セットは、状態図のそれに類似したものです。
- アクティビティ図の作図は塗りつぶしの丸の描画から開始します。
- その丸を角丸の長方形で示される最初のアクティビティへ接続します。
- 次に、プロセス全体の段階的なフローを示す線で各アクティビティを別のアクティビティに接続します。
- スイムレーンを使用して、各アクティビティを実行するオブジェクトを表すこともできます。

ユースケース図
ユースケースとは、アクター (対象のシステムや外部システムとやり取りをする人間) とシステム自体との間の相互作用を定義する一連の手順を指します。ユースケース図は、ユースケースの仕様を表し、システムの機能単位をモデル化する図です。開発チームが、システム内の人間による相互作用の役割やさまざまなユースケース間の差異を含め、システムの要件を理解する上で有用な図です。ユースケース図では、対象のシステムのすべてのユースケースを示す場合も、類似した機能をもつユースケースのグループ1つのみを示す場合もあります。
- ユースケース図の作成を開始するには、図の中心に楕円形を追加します。
- 楕円形の内部にユースケース名を入力します。
- 図のそばにアクターを表す棒人間を追加し、線を使ってアクターとユースケース間の関連をモデル化します。

シーケンス図
シーケンス図は、イベント図やイベントシナリオとも呼ばれ、シー ケンス内のさまざまなオブジェクト間の呼び出しを示すことでプロセス間の相互作用を表す図です。シーケンス図には、垂直方向と水平方向の2つのディメンションがあります。垂直の線は、メッセージと呼び出しのシーケンスを時系列順に示し、水平の要素はメッセージが中継されるオブジェクトのインスタンスを示します。
- シーケンス図を作成するには、長方形のボックス内にクラスインスタンス名とクラス名を記述します。
- クラスインスタンス間にメッセージの送受信者を示す線を描画します。
- 同期メッセージは黒塗りの矢印、非同期メッセージは開いた矢印、応答メッセージは破線でそれぞれ表します。

UML の定義による概念のモデリング
システムの開発においては、以下の3つの全体的なシステムモデルに重点が置かれます。
機能:
ユーザーの視点からシステムの機能性を記述するユースケース図が該当します。オブジェクト:
オブジェクト、属性、関連と操作の観点から システムの構造を記述するクラス図が該当します。動的:
相互作用図、ステートマシン図やアクティビティ図は、システムの内部動作を記述するために用いられます。
これらのシステムモデルは、構造図と行動図の2種類の図で視覚的に表現されます。
UML図の作成には、ぜひ Lucidchart を試してみましょう。素早く、簡単に使えて、完全に無料です。
UML図 を作成UML のオブジェクト指向の概念
UML におけるオブジェクトとは、身の回りに存在する実世界の実体を指します。ソフトウェア開発において、オブジェクトは、作成対象のシステムをドメインに関連して記述し、モデル化するために用いられます。また、複雑なシステムを1度に1つずつ構築できる理解しやすいコンポーネントに分解する上でも有用です。
以下では、オブジェクト指向の世界における基本的な概念を説明しています。
オブジェクト
実体を表し、基本的な構成要素となる。クラス
オブジェクトの設計図。抽象化
実世界に存在する実体の行動。カプセル化
データを結合し、外界から隠すメカニズム。継承
既存のクラスから新しいクラスを作成するメカニズム。ポリモーフィズム
さまざまな型に存在するメカニズムを定義する。
UML とデータモデリング
UML はプログラマーに人気ですが、データベース開発者の間では通常使われません。理由のひとつとしては、UML の成り立ちがデータベースを主眼としたものでないことが挙げられます。しかしながら、UML は高次の概念データのモデリングに有用であり、さまざまな種類の UML 図で活用することができます。オブジェクト志向のクラスモデルの関係データベースへのレイヤー化については、Database Modeling in UML (UML におけるデータベースモデリング)