1. UMLデプロイメント図の目的
Aデプロイメント図は、システムの物理的/実行時アーキテクチャを示します:
- ハードウェアノード(サーバー、デバイス、クラウドインスタンス)
- それらのノードにデプロイされるソフトウェアアーティファクト
- 実行環境(コンテナ、ランタイム)
- ノード間の通信経路(プロトコル、接続)
シンプルオンラインフードオーダーリングシステムにおいては、シンプルオンラインフードオーダーリングシステムがどのように機能するかを可視化します:
- 顧客およびレストランのWeb UIが提供される方法
- ビジネスロジックが実行される方法
- データが保存される方法
- 外部サービス(支払い、通知)が統合される方法
これは、開発者、DevOps、および利害関係者がデプロイメントトポロジ、スケーリングポイント、セキュリティ境界、および依存関係を理解するのに役立ちます。
2. デプロイメント図における主要なUML要素
| 要素 | UML記法(PlantUML) | 意味 / 使用時 | ステレオタイプの例 |
|---|---|---|---|
| ノード | node “名前” | アーティファクトをホストできる計算リソース(物理的または仮想) | <<device>>, <<cloud>> |
| デバイス | ノード「Name」<<device>> | 物理的または仮想ハードウェア(サーバー、モバイル端末、ルーター) | <<device>>, <<server>> |
| 実行環境 | ノード「Name」<<executionEnvironment>> | ソフトウェアランタイム/コンテナ(Tomcat、Node.js、Docker、JVM) | <<executionEnvironment>>, <<container>> |
| アーティファクト | アーティファクト「filename.war」 | デプロイ可能なユニット(実行可能ファイル、.jar、.jsバンドル、データベーススキーマ、設定ファイル) | <<executable>>, <<file>>, <<database>> |
| コンポーネント | コンポーネント「Name」 | 論理的なソフトウェアユニット(デプロイメント図では任意;アーティファクトによって実現されることが多い) | <<web>>, <<service>> |
| 通信経路 | –, –>, ..> | ノード間のネットワーク接続(プロトコルラベルを付与可能) | HTTP/HTTPS、WebSocket、RMI |
| 依存関係 / 呼び出し | ..>, –> | 使用/依存関係(例:フロントエンドがバックエンドを呼び出す) | <<calls>>, <<accesses>> |
| 具現化 / 実現 | ..> <<realizes>>付き、または ..> | アーティファクトが実現する / コンポーネントとしてデプロイされる | <<realizes>>, <<manifest>> |
| 外部システム | ノード「Name」<<external>> | あなたの制御範囲外のサードパーティ製サービス | <<外部>>, <<SaaS>> |
3. デプロイメント図のベストプラクティス(特にウェブシステムの場合)
- シンプルに保つシンプルで読みやすい— 混雑を避ける;主要環境ごとに1つの図(開発/ステージング/本番は任意)
- 意味のあるノードのグループ化(ノードをノード内にネスト)してクラスターやクラウドリージョンを示す
- 簡潔な表記法を優先する— 関連する場合のみファイル名や設定を表示;冗長なステレオタイプは省略する
- 明確に示す境界— 内部クラウドと外部サービスの区別
- ラベルを付けるプロトコル(パスに:HTTP/HTTPS、WebSocket、TCPなど)
- 使用する左から右の方向(ウェブシステムの場合:クライアント→サーバー→データベースの流れが自然に感じられる)
- 区別するデバイス(ハードウェア)と実行環境(ランタイム)
- 表示する実現(価値がある場合のみ表示:アーティファクト→コンポーネント)
- 使用するskinparamPlantUMLで、より良い色と読みやすさのために
- 小規模/中規模システムの場合:最大4〜8ノード
4. シンプルなオンライン食品注文システムの推奨構造
このシステムのクリーンでモダンなレイアウト:
- クライアント側 → ブラウザ(暗黙的)が通信先:Webサーバー/CDN
- Webサーバー/CDN顧客サイトおよびレストラン管理パネル用の静的ファイルとSPAアーティファクトをホスト
- APIサーバー(実行環境)でバックエンドロジックを実行
- データベースサーバーPostgreSQLをホスト
- 外部決済および通知サービス
典型的なノード:
- Webサーバー/CDN <<device>>
- APIサーバー <<executionEnvironment>>
- データベースサーバー <<executionEnvironment>>
- 決済ゲートウェイ <<external>>
- 通知サービス <<external>>
5. Visual Paradigm AIチャットボットによって生成された図

改善および整理されたPlantUMLコード(解説付き)
PlantUML
Edit PlantUML in VPasCode
@startuml
title シンプルなオンライン食品注文システム - デプロイメント図
left to right direction
skinparam {
ArrowColor #424242
ArrowFontColor #424242
DefaultFontSize 14
shadowing false
stereotypeCBackgroundColor #ADD1B2
stereotypeIBackgroundColor #ADD1B2
}
' ── ノード ────────────────────────────────────────────────
node "Webサーバー/CDN" <<device>> as WebServer {
[顧客サイト HTML/JS/CSS] #..# (顧客SPA)
[レストラン管理パネル HTML/JS/CSS] #..# (レストランSPA)
}
node "クラウドバックエンド" <<device>> as Cloud {
node "APIサーバー" <<executionEnvironment>> as APIServer {
artifact "backend-api.jar / main.exe" as BackendArtifact
}
node "PostgreSQLサーバー" <<executionEnvironment>> as DBServer {
database "PostgreSQLデータベース" as Postgres <<database>>
}
}
node "決済ゲートウェイ" <<external>> as Payment {
[決済API] as PaymentAPI
}
node "通知サービス" <<external>> as Notification {
[WebSocket/プッシュAPI] as NotifyAPI
}
' ── リレーションシップ ─────────────────────────────────────────
WebServer --> Cloud : HTTPS (API呼び出し)
Cloud --> Payment : HTTPS (チェックアウト)
Cloud --> Notification : WebSocket/HTTPS (ステータス更新)
' アーティファクト → コンポーネント実現(オプションだが明確)
(顧客SPA) ..> BackendArtifact : <<呼び出し>>
(レストランSPA) ..> BackendArtifact : <<呼び出し>>
BackendArtifact --> Postgres : <<JDBC/SQL>>
BackendArtifact --> PaymentAPI : <<HTTPS呼び出し>>
BackendArtifact --> NotifyAPI : <<WebSocket/HTTPS>>
' オプション:DBにプロトコルを表示したい場合
' BackendArtifact -right-> Postgres : <<JDBC>>
note right of Cloud
典型的な小規模/中規模セットアップ:
• 単一VMまたは小規模クラスター
• APIとDBは同じマシンに配置可能(簡略化のため)
• または、より良いスケーリングのために別々に配置
end note
@enduml 6. ステップバイステップ:独自のデプロイメント図の作成方法
- すべての実行ターゲットをリストアップ(サーバー、コンテナ、外部サービス)
- デプロイ可能なアーティファクトをリストアップ(実際に実行されるもの:.js バンドル、.jar、データベース)
- ノードにグループ化(論理的な場合はネストする — 例:1 つのクラウドノード内に API と DB)
- 方向性を決定(左から右へが web → API → DB の場合に効果的)
- 通信経路を追加プロトコルラベル付きで
- 主要な依存関係を追加(<<呼び出し>>、<<アクセス>>)
- skinparam を適用色や可読性の向上のために
- 注釈を追加重要な意思決定のため(単一インスタンス vs マルチインスタンス、スケーリングに関する注記)
- 検証:DevOps エンジニアは、各コンポーネントをどこにデプロイすべきかを理解できるか?
概要 — シンプルなフードオーダーリングデプロイのためのクイックリファレンス
| パート | 一般的なノードタイプ | アーティファクトの例 | 接続経路 |
|---|---|---|---|
| 顧客用 UI | Web サーバー / CDN <<デバイス>> | SPA バンドル(HTML/JS) | HTTPS → API |
| レストランダッシュボード | Web サーバー / CDN <<デバイス>> | 管理用 SPA バンドル | HTTPS → API |
| ビジネスロジック | API サーバー <<実行環境>> | backend-api.jar / 実行可能ファイル | JDBC → DB、HTTPS → 外部 |
| データストレージ | PostgreSQL <<実行環境>> | PostgreSQL データファイル + スキーマ | — |
| 決済 | 外部 <<SaaS>> | 決済 API エンドポイント | HTTPS |
| リアルタイム更新 | 外部 <<SaaS>> | WebSocket / FCM / APNs | WebSocket / HTTPS |
この構造は、MVP または小〜中規模の展開(1〜3 台のサーバー + クラウド DB + Stripe/PayPal + Firebase/Pusher)において現実的です。
システムが成長するにつれて、ネスト、プロトコルを調整したり、スケーリングに関する注記(例:ロードバランサー、レプリカ)を追加したりしてください。
🔗 参照リスト
- AI ダイアグラムジェネレーター – Visual Paradigm: Visual Paradigm の AI ダイアグラムジェネレーターの発売と機能について詳述した公式リリースノート。状態図用のテキストから UML への変換機能を含む。
- AI で数秒で UML 状態図を作成 – Visual Paradigm: AI を使用してプレーンテキストから UML 状態図を生成する方法を、実世界の例とユースケースを交えて段階的に説明するガイド。
- 状態マシン図とは何か? – Visual Paradigm: UML 状態マシン図の目的、構造、およびベストプラクティスを解説する基礎的な記事。
- Visual Paradigm AI で状態図をマスターする – Cybermedian: 自動料金収受システムなどの実世界システムで、AI 強化状態図がどのように使用されているかを示す実践的なガイド。
- 包括的レビュー:Visual Paradigm の AI ダイアグラム生成: AI ダイアグラムジェネレーターの精度、使いやすさ、および開発ワークフローとの統合に関する詳細な評価。
- AI チャットボット – Visual Paradigm: UML ダイアグラム(状態図を含む)を会話形式で編集できる AI アシスタントの概要。
- OpenDocs 更新:AI 状態図ジェネレーター – Visual Paradigm: 技術文書に状態図を埋め込み同期できる機能を強化したドキュメント統合の発表。
- Visual Paradigm AI 状態図チュートリアル – YouTube: AI ダイアグラムジェネレーターを使用して、電子商取引の注文プロセスの状態図を作成する方法を示す動画チュートリアル。
- 状態図について – Visual Paradigm: 構成要素、構文、および実世界での応用例を含む UML 状態図の包括的な概要。
- 状態図の作成 – Visual Paradigm ユーザーガイド: 複合状態とガード条件を含む、状態図の構築に関する詳細な手順付きガイド。
- 高度な状態マシン機能 – Visual Paradigm: Visual Paradigm を使用した高度なモデリング技術の詳細解説。ネストされた状態、直交領域、イベント処理を含む。
- 前バージョンとの比較 – Visual Paradigm ユーザーガイド: 時間経過に伴う状態図の改訂を追跡・管理できる変更比較機能に関するドキュメント。











