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万能主義に対して」

Last updated at Posted at 2025-10-14

image.png

結論から言えば、ゲームや一般的なアプリとウェブでは必要ありません
UMLがどうしても必要だったらMermaidでシーケンス図とかクラス図で大丈夫です。

航空宇宙・防衛産業・医療機器・生命維持システム・金融・銀行システム・自動車制御システムなどは必要な場合があります。

image.png

UMLはあくまで特定の目的のためのコミュニケーションツールとして活用されるべきであり、すべてを完璧に描かなければならない万能ツールではありません。


image.png

1. UMLはなぜ生まれたのか:過去のビジネス的背景

まずUMLが生まれた背景を把握する必要があります。
UMLが過度に強調される時代は、技術的な必然性からではなく、2000年代初頭のビジネス環境という特殊な状況から生まれた現象です。

過去のUMLの役割は「技術」ではなく「営業」でした。

  • 背景: ドットコムバブル期、アナログ中心の企業が急激に電算化を推進しましたが、社内に専門の開発者が決定的に不足していました。
  • SI/コンサルタント中心のプロジェクト: 当時のプロジェクトはSI企業や外部コンサルタントが主導することが多く、彼らは技術的知識の乏しい経営陣や顧客にシステムを説明し、契約を成立させる必要がありました。
  • プレゼンテーション手段: プログラマーではない人にコードを見せても理解されず、複雑なロジックを言葉で伝えることも困難な状況で、UMLの定型化された美しい図は以下のビジネス目的に活用されました。
    • システムの複雑性と技術力を視覚的にパッケージング。
    • 「このように動作する」という曖昧な概念を図表で提示し、プロジェクトの価値を誇張したり、理解させようと試みたりする。

結果として、当時のUMLの重要性は、プログラマ間の技術的コミュニケーションよりも、**技術を知らない顧客とのビジネス・コミュニケーション(営業)**のためのツールとしての役割が遥かに大きかった、一過性の現象であったと言えます。


image.png

2. 現代の開発環境におけるUML:実用主義への転換

今日の開発環境は過去とは異なります。多くの開発者はアウトソーシングではなく、自社サービスや製品チーム内で働き、目標は正確かつ迅速な機能実装チーム内での協業です。

必要なのは「コミュニケーションの効率」です。

理論的には

  • クラス図: システムの静的構造を素早く把握できます。
  • シーケンス図: 特定の機能やリクエストに対する**時間的な相互作用の流れ(ロジックの動的フロー)**を視覚化し、複雑なロジックを理解する上で中心的な役割を果たします。

これ以外の複雑な図は必要に応じて選択的に使用されますが、すべての開発者が必ず知っておくべき範囲ではありません。

しかし!!!!!!!!!!!!!!!!

image.png

現代の洗練された開発環境においては、このクラス図とシーケンス図でさえも、以前ほど効率化に役立たないです。

現代のアーキテクチャは「役割分担」と「規約」で複雑性を吸収している

従来のUMLが有効性を発揮するときと違って、現在のシステム設計は以下の要素によって、詳細な図解なしでも理解可能なレベルに進化しています。

1. フレームワークとアーキテクチャパターンによる役割の分化

現代のシステムは、マイクロサービス分散システム・アーキテクチャ、そして**レイヤード・アーキテクチャ(三層構造など)**によって、責務(役割)が厳密に分割されています。

  • 例えば、Webフレームワークを利用すれば、「このレイヤーはビジネスロジックを扱う」「このコンポーネントは永続化(DB操作)のみを行う」といった**規約(規約による設定/Convention over Configuration)**がコードを書く前から明確です。
  • 結果として、システムの「静的構造」(クラス図)はフレームワークのディレクトリ構造やコーディング規約を見るだけで十分に把握可能であり、わざわざ時間とコストをかけて図を描く必要性が薄れています。

2. OOPにおける「現実世界の模倣」からの脱却

UMLが生まれた初期のOOP時代には、クラスを現実の「オブジェクト」のように振る舞わせる設計が理想とされました。しかし、現代のシステム開発において、このような過度な模倣はアンチパターンと見なされることが増えています。

  • 現代的な設計(例えば、クリーンアーキテクチャ、DDDの一部)では、データと振る舞いの分離関数型プログラミングの要素などが取り入れられ、クラスの役割は**単一責務の原則(SRP)**に基づき極めて限定的になっています。
  • 複雑な「動的フロー」(シーケンス図)も、パイプライン処理イベント駆動といったアーキテクチャパターンに組み込まれており、コードの関数コールスタックや設定ファイルを見る方が、手書きのシーケンス図よりも正確で信頼性が高い情報源となります。

ツールチェンジが示唆するもの

最近の技術トレンドを見ても、UML万能主義は終焉に向かっていることがわかります。

多くの開発者が利用しているMarkdownベースのダイアグラムツールであるMermaidを参照してください。Mermaidがサポートする図の種類は、複雑なUMLモデリングよりも簡潔で核心的な情報伝達に焦点を当てています。


image.png

結論:万能主義を捨て、核となる部分に集中すべきです

UML自体は優れたツールですが、それをすべての答えのように強要したり、すべてのドキュメントの基本形式として要求したりするのは時代錯誤なアプローチです。

今日、私たちのチームと製品に実質的な価値を提供する最小限のダイアグラムに集中し、開発効率とコミュニケーションの質を高めるべきです。
いつかUMLもFlowChartみたいになると思います。

不必要な図の作成に時間を浪費する代わりに、実際のコーディングと機能実装に集中しましょう。

💡 アドバイス: 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?