0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【UML超入門】図解でわかる!エンジニア共通の言語「UML」をマスターして設計の壁を突破する

0
Posted at

【UML超入門】図解でわかる!エンジニア共通の言語「UML」をマスターして設計の壁を突破する

1. 結論:UMLは「システムの設計図」を書くための共通ルール

結論から言うと、UMLとは 「ソフトウェアの構造や振る舞いを視覚的に表現するための、世界標準のルール(記法)」 です。

  • なぜ「統一」なのか?:かつてエンジニアたちは、思い思いの自己流の図で設計を書いていました。しかし、それでは他人が見た時に理解できません。そこで「図の書き方を一つにまとめよう」と作られたのがUMLです。
  • 「言語」だけど話さない:Javaのようなプログラミング言語ではなく、「図解のルール」 という意味での言語です。

2. 理由:なぜUMLが必要なのか?

「ソースコードがあれば、図なんていらないんじゃないか?」と思うかもしれません。しかし、大規模な開発やチーム開発において、UMLがない状態は 「設計図なしで超高層ビルを建てる」 のと同じくらい危険です。

① 複雑な全体像を「一瞬」で理解するため

数万行のJavaコードを読んで構造を理解するには、数日かかります。しかし、適切に書かれたUML(クラス図)が一枚あれば、どのクラスがどのクラスと繋がっているか、わずか数分で把握できます。

② 言葉の壁を越える「共通言語」

エンジニア、デザイナー、クライアントの間で、「ここの処理はこうなっていて……」と口頭で説明するのは非効率ですし、勘違いも生まれます。UMLという「共通の型」で図示することで、認識のズレを最小限に抑えられます。

③ 抽象化して考えるため

コードの細かい「書き方(How)」に囚われず、システムが「何を(What)」しているのかという本質的な設計に集中できます。


3. UMLの全体像:13種類の図と「2大カテゴリー」

UML 2.0以降には13種類(あるいは14種類)の図がありますが、すべてを覚える必要はありません。大きく分けて 「静的な構造」 を表すものと、「動的な振る舞い」 を表すものの2つがあることを理解しましょう。

【表1】現場と試験で特によく使うUML

カテゴリー 図の名前 役割(何を書くか) 例え
構造図 (Static) クラス図 クラスの属性やメソッド、関係性 住宅の間取り図
構造図 (Static) オブジェクト図 ある瞬間のインスタンスの状態 部屋の中の写真
振る舞い図 (Dynamic) ユースケース図 システムが「誰に何をするか」 サービスのカタログ
振る舞い図 (Dynamic) シーケンス図 時間の経過に沿ったメッセージのやり取り 映画の絵コンテ
振る舞い図 (Dynamic) ステートマシン図 状態の変化(例:待機中→実行中) 信号機の切り替えルール

4. クラス図:静的な構造を定義する(最重要!)

Javaエンジニアにとって最も親しみ深く、かつ重要なのがクラス図です。これまでの学習で触れてきた「継承」や「インターフェース」「集約」などは、すべてこの図で表現されます。

クラス図の記号ルール(基本情報技術者試験 頻出!)

クラス間の線(矢印)には、それぞれ厳密な意味があります。これを間違えると、設計の意味が正反対になってしまいます。

関係名 記号 Javaでの実装 意味
汎化 (Generalization) 白抜き三角の実線($\triangle$―) extends 継承。親と子の関係。
実現 (Realization) 白抜き三角の点線($\triangle$- - -) implements インターフェースの実装。
関連 (Association) 実線(―) フィールド変数 お互いを知っている関係。
集約 (Aggregation) 白抜き菱形の実線($\diamond$―) リストなどで保持 全体と部分。バラバラになれる。
コンポジション 塗りつぶし菱形の実線($\blacklozenge$―) 内部で生成 全体と部分。運命共同体

5. シーケンス図:動的な流れを定義する

クラス図が「モノの構成」を表すのに対し、シーケンス図は「モノ同士がどう会話するか」を時間の流れに沿って表します。

  • ライフライン(垂直の点線):オブジェクトの生存期間。
  • 実行仕様(細長い長方形):そのオブジェクトが処理を行っている期間。
  • メッセージ(矢印):メソッドの呼び出し(同期・非同期)。
  • 返信(破線の矢印):戻り値の返却。

複雑なアルゴリズムや、複数のクラスが連携する処理(例:ログイン処理の流れ)を書くときに非常に重宝します。


6. ユースケース図:システムの「目的」を定義する

開発の初期段階で、「このシステムはそもそも誰のためのものか?」を整理するために使います。

  • アクター(人型のアイコン):システムの利用者や外部システム。
  • ユースケース(楕円):システムが提供する具体的な機能。
  • 境界(長方形):システムの範囲。

「何を開発すべきか」という要件定義の場面で、エンジニア以外の人とも会話できる貴重な図です。


7. まとめ:図は「理解」を加速させるツール

  1. UMLは、ソフトウェア設計の世界共通ルール
  2. クラス図で「形」を作り、シーケンス図で「動き」を考え、ユースケース図で「目的」を定める。
  3. メリット:チームの認識合わせがスムーズになり、コードを書く前に設計上のミスに気づける。

シニアエンジニアのアドバイスとして言えるのは、「図を書くために時間を使いすぎないこと」 です。UMLはあくまで手段です。ホワイトボードにササッと書いて「あ、そういうことね!」とチーム全員が納得できれば、それが最高のUML活用法です。


参考リンク集

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?