0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「時間」より「繋がり」!コミュニケーション図でオブジェクトのネットワークを俯瞰する

0
Posted at

「時間」より「繋がり」!コミュニケーション図でオブジェクトのネットワークを俯瞰する

1. 結論:コミュニケーション図は「メッセージ付きの相関図」である

結論から言うと、コミュニケーション図とは 「オブジェクト間の関係(リンク)をベースに、メッセージのやり取りを番号順に記述した図」 です。

  • 配置が自由:シーケンス図のようにライフラインが横に並ぶ制約がなく、オブジェクトを自由に配置できます。
  • 構造を強調:どのオブジェクトがハブ(中心)になって動いているのか、ネットワーク構造が一目でわかります。

UML 1.x系では「コラボレーション図」と呼ばれていましたが、UML 2.0から「コミュニケーション図」という名前に変わりました。本質は変わりませんが、IT試験などでは古い名前で出てくることもあるので注意が必要です。


2. 理由:なぜ「コミュニケーション図」が必要なのか?

「シーケンス図があれば十分ではないか?」という疑問は、設計の現場でもよく挙がります。しかし、コミュニケーション図にはシーケンス図の弱点を補う独自の強みがあります。

① 「密結合」な部分を見つけやすいため

シーケンス図は縦に長くなるため、特定のオブジェクトにメッセージが集中していても気づきにくいことがあります。コミュニケーション図なら、一箇所から四方八方に線が伸びている様子が見えるため、「あ、このクラスに責任が集中しすぎているな(神クラス化)」という設計上の問題を視覚的に発見できます。

② 物理的な配置に近い表現ができるため

例えば、分散システムやマイクロサービスのように、ネットワーク越しに複数のサーバーが絡む場合、実際の物理構成(トポロジー)に近い形でオブジェクトを配置できるコミュニケーション図の方が、直感的に理解しやすいことがあります。

③ スペースを有効活用できるため

登場人物(オブジェクト)が非常に多い場合、シーケンス図は横幅が広くなりすぎて画面に収まりきらなくなります。コミュニケーション図は二次元的に自由に配置できるため、複雑な関係性もコンパクトにまとめられます。


3. コミュニケーション図を構成する「3つの基本要素」

コミュニケーション図は、オブジェクト図にメッセージ情報を書き足したような形をしています。

① オブジェクト(Object)

クラス図やシーケンス図と同じく、四角い箱で表します。

  • 表記:<u>オブジェクト名 : クラス名</u> (下線を忘れずに!)

② リンク(Link)

オブジェクト間を結ぶ実線です。メッセージはこの線に沿って流れます。

  • クラス図の「関連」のインスタンス版です。

③ メッセージ(Message)

リンクの横に添えられる小さな矢印と、メソッド名のセットです。

  • 順序番号(Sequence Number):ここが最も重要です。シーケンス図のように上から下という時間のルールがないため、1: doIt()2: result() のように番号を振って実行順序を示します。
  • 階層番号1.1: check()1.2: validate() のようにドットで区切ることで、あるメソッドの中で呼ばれるサブメソッドの流れ(ネスト)を表現します。

4. 【決定版】シーケンス図 vs コミュニケーション図

この2つは「相互作用図」という同じカテゴリーに属しており、「意味的に等価」 です。つまり、同じ処理をどちらの図でも描けますし、ツールを使えば相互変換も可能です。

【表1】2つの図の比較

項目 シーケンス図 コミュニケーション図
主役 時間の経過 オブジェクトの構造
配置 ライフラインが横一列 自由に配置(二次元的)
順序の確認 上から下へ見るだけ **番号(1, 1.1...)**を追う
得意なこと 複雑なロジックの流れを確認 オブジェクト間の依存関係を確認
不得意なこと オブジェクト数が増えると横に長すぎる メッセージ数が増えると番号を追うのが大変

5. 【具体例】ショッピングサイトの「注文処理」

以前のシーケンス図の例をコミュニケーション図に書き換えてみましょう。

登場人物

  • <u>customer : Customer</u>
  • <u>cart : ShoppingCart</u>
  • <u>order : Order</u>

流れ

  1. customercartcheckout() を送る。
  2. cartordercreate() する。
  3. cartordercalcTotal() を送る。

コミュニケーション図での表現

  • customercart を線で結び、1: checkout() と書く。
  • cartorder を線で結び、2: create()3: calcTotal() を書く。
  • 配置を三角形にしたり、L字型にしたりして、一番「見やすい」形に整えます。

6. 基本情報技術者試験での重要ポイント

試験では、主に「シーケンス図」が主役ですが、コミュニケーション図も選択肢や用語問題として登場します。

  • 「意味的に等価である」:シーケンス図とコミュニケーション図は、表現の力点は違えど、表している情報は同じであるという点は頻出です。
  • メッセージの順序番号:番号の振り方(1 -> 1.1 -> 1.2 -> 2...)のルールを理解しているか問われます。
  • UML 1.xとの名称違い:前述の通り、「コラボレーション図」という別名に注意してください。

7. まとめ:図を使い分ける「プロの判断基準」

  1. 結論:コミュニケーション図は、オブジェクトの「繋がり」を重視した振る舞いの図である。
  2. 役割:構造的なボトルネック(依存の集中)を発見したり、配置の自由度を活かして複雑なネットワークを描くのに向く。
  3. 使い分け
    • 「ロジックが正しいか、時間の流れを厳密に追いたい」なら、シーケンス図
    • 「クラス同士の繋がりが多すぎて、誰が誰を知っているか整理したい」なら、コミュニケーション図

シニアエンジニアとしてのアドバイスは、「最初はシーケンス図を描き、もしそれが縦にも横にも長くなりすぎて収拾がつかなくなったら、コミュニケーション図への書き換えを検討せよ」 ということです。


参考リンク集

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?