導入
ソフトウェア工学の世界では、オブジェクトどうしがどのようにやり取りしているかを理解することは、そのオブジェクトが何であるかを知ることと同じくらい重要です。UMLシーケンス図が時間の経過に伴う相互作用を追跡するために広く使われている一方で、 コミュニケーション図 構造的なオブジェクト間の関係性を重視する補完的な視点を提供します。この事例研究では、実際のホテル予約シナリオを通じて、コミュニケーション図の目的、表記法、実践的な応用について探求します。最終的には、これらの図がメッセージの送受信をモデル化し、クラスや操作を特定し、アーキテクチャ設計を検証するのにどのように役立つかがわかります。

UMLコミュニケーション図は、オブジェクト間の相互作用の仕方を示し、オブジェクト図にメッセージと順序番号を追加することで拡張されています。
事例研究:ホテル予約システム
背景
ホテルチェーンはオンライン予約システムの設計を進めたいと考えています。要件には、部屋の空き状況の確認、予約の実行、確認通知の送信が含まれます。開発チームは、ソフトウェアオブジェクト間の相互作用(例: ReservationGUI, ReservationController, RoomDatabase)をモデル化する必要があり、静的クラス図におけるそれらのリンク関係を失わないようにしなければなりません。
コミュニケーション図の適用
チームはコミュニケーション図を選択した理由は以下の2つです:
-
オブジェクト間の関係性を可視化するため(例:どのオブジェクトがどのオブジェクトを知っているか)。
-
小数による番号付けを使ってメッセージの順序を記録するため。
ステップ1 – オブジェクトとリンクの特定
-
オブジェクト:
Customer,ReservationGUI,ReservationController,RoomDatabase -
リンク (オブジェクト間の線)は、クラス図からの既存の関連を表しています。
ステップ2 – シーケンス番号付きのメッセージを追加する
-
メッセージ
1: makeReservation()から顧客→予約GUI -
メッセージ
1.1: checkAvailability()から予約GUI→予約コントローラ -
メッセージ
1.1.1: queryRoom()から予約コントローラ→部屋データベース -
メッセージ
1.2: confirmReservation()から戻る予約コントローラ→予約GUI -
メッセージ
1.3: displayConfirmation()から予約GUI→顧客
小数による番号付けはネストを示しています:メッセージ 1.1 はメッセージの処理内での発生を示しています 1、そして 1.1.1 は の一部です1.1。これは、順序図に見られる「制御の焦点」の長方形を置き換えます。
結果の通信図

各矢印には順序番号が付いています。最上位のメッセージは 1。ネストされたメッセージは小数を使用し、呼び出しの階層を明確に示しています。
通信図と順序図の比較 – 図書館の返却遅延の例
違いをさらに説明するために、 図書館員 が の返却遅延品を確認する図書館システムを考えてみましょう利用者.
順序図(時間中心)

垂直方向の次元は時間の順序を明確に示しています。制御の焦点の長方形は、各オブジェクトがいつアクティブかを示しています。
自動生成された通信図(関係性中心)

同じ相互作用が示されていますが、今度はオブジェクト間のリンク(例: 利用者 が に接続されている貸出 が に接続されている書籍)が可視化されます。これにより、クラス図がすべて必要な協調動作をサポートしているかを確認しやすくなります。
主なポイント:
-
シーケンス図 → 詳細なタイミングと順序の確認に適している。
-
コミュニケーション図 → オブジェクト間の関係を理解し、静的モデルを検証するのに適している。
要約表:シーケンス図 vs. コミュニケーション図
以下は包括的なシーケンス図 vs. コミュニケーション図比較表で、記事の内容とUMLのベストプラクティスに基づいている。
| 機能 | シーケンス図 | コミュニケーション図 |
|---|---|---|
| 主な次元 | 時間(縦軸) | 空間(オブジェクトの配置) |
| オブジェクトの配置 | ライフラインに沿って上から下へ | 図のどこにでも自由に配置可能 |
| メッセージの順序 | 上から下へ読む(時系列順) | シーケンス番号(例:1、1.1、2) |
| 制御の焦点 | 明示的 – 高く細い長方形(アクティベーション) | 暗黙的 – メッセージのネストされた小数で表現 |
| オブジェクト間の関係(リンク) | 見えない(ライフラインのみ) | オブジェクト間の接続線として明示的に表示 |
| 時間順序の読みやすさ | 優れている – 即座に視覚的な時間軸が確認できる | シーケンス番号を追う必要がある |
| オブジェクトリンクの可視化のしやすさ | 悪い – 関係性は推論しなければならない | 優れている – リンクが直接表示される |
| クラス図の検証 | 困難 – 関連を検証できない | 簡単 – 各リンクはクラス図の関連と一致しなければならない |
| 自己メッセージ | 活性化付きライフライン上のループ | 自己リンク上のループアイコン |
| 条件付きメッセージ | alt および opt ガード付きフラグメント |
条件付き番号付け(例: 1.1 [条件] メッセージ()) |
| 並列メッセージ | par 並列ボックス付きフラグメント |
同じ小数点表記に異なる接尾語(例: 1.1a, 1.1b) |
| 空間効率 | 低 – 長い縦方向の図 | 高 – コンパクトで空間最適化 |
| 複雑さの扱い | 複雑な分岐やループに適している | 深いネストになるとごちゃついてしまう可能性がある |
| 人気度/使用状況 | 非常に高い(インタラクション図の80%以上) | 低~中程度(20%以下) |
| 最適な使用ケース | 時間的に重要なプロセス、リアルタイムシステム、詳細な論理フローの文書化 | 静的モデルの検証、オブジェクト間の関係の提示、アーキテクチャレビュー |
| 互いに生成可能 | はい – シーケンス図から通信図を生成可能 | はい – 通信図からシーケンス図を生成可能 |
| 意味的同等性 | 同じ情報 – 互換性がある | 同じ情報 – 互換性がある |
素早い視覚的比較
| 視点 | シーケンス図 | 通信図 |
|---|---|---|
| 図の形状 | 縦長で細長い | 正方形/コンパクト |
| 主要な要素 | ライフライン+アクティベーションバー | オブジェクト+リンク |
| メッセージラベル | message()単独(時間順序は暗黙) |
1: message()(番号が必要) |
| ネストされたメッセージ | 別のアクティベーション内にあるアクティベーションバー | 小数1.1 |
| オブジェクト関係 | 描画されていない | 実線(リンク) |
どちらを使用するかのタイミング(意思決定ガイド)
| シナリオ | 推奨される図 | なぜ |
|---|---|---|
| 技術的でないステークホルダーに提示する必要がある | シーケンス | 上から下へ読みやすい |
| クラス図がすべての相互作用をサポートしていることを確認したい | 通信 | リンクが欠落している関連を明らかにする |
| スペースが限られている(例:スライドや文書) | 通信 | よりコンパクト |
複雑な分岐がある(if/else、ループ) |
シーケンス | フラグメントとフレームが複雑さをより効果的に扱う |
| どのクラスに新しい操作が必要かを特定したい | 両方 | メッセージは両方でメソッド名になる |
| リアルタイム制約をモデル化している | シーケンス | 時間軸が明確に表現される |
例:両方で同じ相互作用を表示
図書館の返却期限超過チェック(記事より):
| シーケンス図 | 通信図 |
|---|---|
ライフラインを表示:図書館員 → 利用者 → 借り入れ → 書籍 |
リンクで接続されたオブジェクトを表示 |
| アクティベーションバーは、各オブジェクトが忙しいときを示す | アクティベーションバーなし – ネストされた番号が忙しい期間を示す |
| わかりやすい:「まずこれがあり、その後それがある」 | わかりやすい:「利用者は借り入れに接続されており、借り入れは書籍に接続されている」 |
記事からのメモ: 「2つの図を比較すると、両方ともオブジェクトとメッセージを含んでいることがわかります。メッセージの時間順序を確認するにはシーケンス図を、オブジェクト間の関係を把握するには通信図を見るほうがはるかに簡単です。」
要約表 – 主な教訓
| シーケンス図 | 通信図 | |
|---|---|---|
| 注目点 | ⏱️ いつメッセージが発生するタイミング | 🔗 誰が誰とつながっているか |
| 強み | 時間的な明確さ | 構造的検証 |
| 弱み | オブジェクトの関係を隠す | 時間順序を隠す(番号の解読が必要) |
| 最適な用途 | 詳細な論理、リアルタイム、分岐処理 | アーキテクチャレビュー、モデル検証、スペース制限のある文書 |
通信図の要素の詳細

1. オブジェクト
-
クライアント – メッセージを送信する(例:
予約GUI) -
サプライヤー – メッセージを受信および処理する(例:
予約コントローラ)
2. リンク
-
オブジェクト間の線として描かれる。
-
各リンクはクラス図に関連として存在しなければならない。リンクが欠けている場合、通信図は静的モデルの欠陥を明らかにする。
3. メッセージ
-
クライアントからサプライヤーへの矢印。
-
ラベル形式:
順序番号:メッセージ名(パラメータ) -
自己メッセージはループとして表示される。
4. メッセージ番号付けのルール
| ルール | 例 |
|---|---|
最初のメッセージは 1 |
1: login() |
2番目のトップレベルのメッセージは 2 |
2: logout() |
以下にネストされる 1 → 1.1 |
1.1: validateUser() |
さらにネストされた →1.1.1 |
1.1.1: checkPassword() |

この図では、1: EnquireBorrowerはネストされたメッセージに続いています1.1および1.2。左側のオブジェクトのループは、自己メッセージを表しています。
シーケンス図から通信図へ – コントロールの焦点マッピング
シーケンス図では、オブジェクトが操作を実行しているタイミングを示すために細長い長方形(アクティベーションバー)を使用します。通信図にはこのような長方形がありません。代わりに、メッセージのネストメッセージのネストが同じ情報を伝える。

マッピングルール:
-
シーケンス図内のすべてのアクティベーションバーは、通信図における小数のネストレベルに変換される。
-
ライフラインに2つのネストされたアクティベーションがある場合、次のような順序番号が表示されます
1,1.1,1.1.1.
結論
UMLの通信図はシーケンス図の単なる代替ではなく、システムアーキテクチャの検証に役立つ強力なツールである。オブジェクト間のリンクに注目させることで、設計者が送信されたすべてのメッセージがクラス図内の実際の関連に対応していることを確認するよう強制する。小数番号システムは、コントロールの焦点を表す長方形を洗練された形で置き換え、ネストされた呼び出しを明確にする。
実際には、シーケンス図を、ステークホルダーに明確なイベントのタイムラインを提示する必要があるときに使用する。通信図静的モデルの正確性を確認したい場合、または各メッセージの正確な発生時刻よりもオブジェクトの空間的配置が重要である場合に使用します。上記のホテル予約や図書館の返却遅延の例では、通信図により、どのクラスがどの操作を提供すべきかを明確に特定できました。これにより、相互作用設計を実行可能なクラス設計に変換できました。
関連リンク
- 統一モデリング言語とは何ですか?
- プロフェッショナルなUMLツール
- 通信図とは何か? – Visual Paradigm:UMLにおける通信図の導入で、メッセージが渡される際のオブジェクト間の相互作用をモデル化する目的を説明します。アクター、オブジェクト、リンク、メッセージのシーケンスといった基本的な要素をカバーしています。
- 協調図(通信図) – Visual Paradigmギャラリー:協調図(通信図)の例を紹介するビジュアルギャラリーのエントリーで、ソフトウェア設計におけるオブジェクト相互作用のさまざまなシナリオがどのようにモデル化されるかを示しています。
- 通信図 – Visual Paradigm Circleドキュメント:Visual Paradigm環境内における通信図の定義と使用方法を詳述した公式ドキュメントで、システムモデリング言語(SysML)との関係も含んでいます。
- AIがUML通信図を生成する – Visual Paradigm Explore:人工知能を活用してUML通信図を自動生成する方法について議論する記事で、開発者の図作成プロセスを簡素化する点を説明しています。
- 通信図の限界 – Visual Paradigmフォーラム:フォーラムでのコミュニティディスカッションで、シーケンス図などの他のUML相互作用図と比較して、通信図の使用における限界や課題について議論されています。
- 通信図 – Visual Paradigmユーザーガイド:Visual Paradigmのユーザーマニュアルから詳細なセクションで、ツールインターフェース内における通信図の構造と構成要素を説明しています。
- 通信図の描き方 – Visual Paradigmチュートリアル:Visual Paradigmで通信図を作成するためのステップバイステップのチュートリアルガイドで、アクター、オブジェクト、リンク、メッセージの追加方法も含んでいます。
- 通信図の描画 – Visual Paradigmユーザーガイド:ユーザーガイドからのもう一つの参照で、通信図の描画における技術的側面に特化しており、編集ツールやフォーマットオプションも含んでいます











