PlantUMLでどのような図を描くことができますか?(完全ガイド)

Hero banner showcasing various PlantUML diagram types including UML, C4 architecture, ERD, and Gantt charts with live editor features.

現代のソフトウェア工学およびシステムアーキテクチャにおいて、従来のドラッグアンドドロップ型の図作成ツールはしばしば不足しています。更新が遅く、Gitのようなバージョン管理システムでの維持が難しく、スタイルの不整合が生じやすいのです。このような状況で役立つのが図をコードで表現する(DaC)であり、PlantUML開発者エコシステムにおいて、最も多機能で広く採用されているテキストベースの図作成言語の一つとして存在しています。
プレーンテキストで視覚的要素を定義することで、開発者はアーキテクチャドキュメントをソースコードと並行して管理できます。しかし、実際にPlantUMLでどのような図を作成できるのでしょうか?標準的な統合モデル化言語(UML)の構造図、高レベルの企業アーキテクチャビュー、またはプロジェクト管理のタイムラインが必要な場合でも、PlantUMLはほぼすべての技術的コミュニケーションニーズをカバーしています。このガイドでは、PlantUMLがサポートする包括的な図の種類を検討し、直感的なPlantUMLエディタのようなVPasCodeを使用することで、レンダリングと編集体験が向上します。

2. 標準的な統合モデル化言語(UML)図

本質的に、PlantUMLは公式のUML図の作成を簡素化するために設計されました。主に構造図と振る舞い図の2つのカテゴリに分かれます。

構造図

クラス図とオブジェクト図

コード定義から直接、オブジェクト指向構造、クラス階層、インターフェース、属性、関係性(継承、集約、合成)をモデル化します。

Main UI showing the creating of a Class Diagram using a text to diagram editor - VPasCode

@startuml
  
title ホテル管理システム

' インターフェースを定義
interface IReservable {
    + makeReservation(customer: Customer, dates: DateRange): boolean
    + cancelReservation(reservationId: String): boolean
    + checkAvailability(date: Date): boolean
}

interface IPayable {
    + processPayment(amount: double): boolean
    + issueRefund(reservationId: String): boolean
    + getPaymentStatus(): String
}

' 抽象クラスを定義
abstract class Person {
    - id: String
    - name: String
    - email: String
    - phone: String
    + getId(): String
    + getName(): String
    + getContactInfo(): String
    + updateContactInfo(info: String): void
}

' 実装クラスを定義
class Customer {
    - loyaltyPoints: int
    - totalStays: int
    - preferences: List
    + earnLoyaltyPoints(stayCost: double): void
    + redeemLoyaltyPoints(points: int): boolean
    + getLoyaltyTier(): String
    + addPreference(preference: String): void
}

class Room {
    - roomNumber: String
    - roomType: RoomType
    - capacity: int
    - pricePerNight: double
    - amenities: List
    - isAvailable: boolean
    + bookRoom(customer: Customer, dates: DateRange): boolean
    + releaseRoom(): void
    + getPrice(customer: Customer): double
    + addAmenity(amenity: String): void
    + getRoomStatus(): String
}

class Reservation {
    - reservationId: String
    - checkInDate: Date
    - checkOutDate: Date
    - totalPrice: double
    - status: ReservationStatus
    - specialRequests: String
    + calculateTotalPrice(): double
    + confirmReservation(): void
    + checkIn(): void
    + checkOut(): boolean
    + updateDates(newCheckIn: Date, newCheckOut: Date): boolean
    + getDuration(): int
}

' 列挙型
enum RoomType {
    STANDARD
    DELUXE
    SUITE
    PRESIDENTIAL
}

' 列挙型
enum ReservationStatus {
    PENDING
    CONFIRMED
    CHECKED_IN
    CHECKED_OUT
    CANCELLED
}

' 関係性
' インターフェースの実装(破線と三角形)
IReservable <|.. Reservation : 実装
IPayable <|.. Reservation : 実装

' 抽象継承(実線と三角形)
Person <|-- Customer : 拡張

' 合成(実線のダイアモンド) - RoomはReservationの一部
Reservation *-- "1..*" Room : 含む >

' 関連(単純な実線)と多重度
Customer "1" -- "0..*" Reservation : 作成 >

' 依存(破線矢印) - CustomerはRoomTypeに依存
Customer ..> RoomType : ロイヤルティ層はこれに基づく >

' カスタムラベル付き関連
Reservation "1" --o "1" Customer : 予約された >

' 抽象クラスによるインターフェースの実現(オプションの追加接続)
IReservable <|.. Room : 実装

@enduml

コンポーネント図とデプロイメント図

ソフトウェアコンポーネント、物理ノード、アーティファクト、デプロイメント環境をマッピングし、ハードウェアまたはクラウドインフラストラクチャ上のソフトウェア配布を可視化します。

@startuml
title Webアプリケーションコンポーネント図

package "クライアント層" {
    [Webブラウザ] as Browser
    [モバイルアプリ] as Mobile
}

package "アプリケーションサーバー" {
    [APIゲートウェイ] as Gateway
    [ユーザー管理サービス] as UserService
    [注文管理サービス] as OrderService
    [支払いサービス] as PaymentService
}

package "データベース層" {
    database "ユーザーDB" as UserDB
    database "注文DB" as OrderDB
}

package "サードパーティサービス" {
    [Stripe API] as Stripe
}

' 接続
Browser --> Gateway : HTTP / REST
Mobile --> Gateway : HTTP / REST

Gateway --> UserService : 内部REST
Gateway --> OrderService : 内部REST

UserService --> UserDB : 読み取り/書き込み
OrderService --> OrderDB : 読み取り/書き込み
OrderService --> PaymentService : 支払い処理

PaymentService --> Stripe : HTTPS / API
@enduml

Component diagram created using a text to diagram editor - VPasCode, illustrating a 3-tier web application architecture with API gateways, microservices, databases, and Stripe integration.

@startuml
title デプロイメント図 - 3層構造Webアプリケーション

skinparam componentStyle rectangle

node "クライアントデスクトップ" as clientNode {
  node "Webブラウザ" as browser {
    artifact "Webアプリフロントエンド (HTML/JS)" as frontend
  }
}

node "アプリケーションサーバー" as appServerNode {
  node "Servletコンテナ (Tomcat)" as tomcat {
    artifact "バックエンドAPI (WARファイル)" as appApi
  }
}

node "データベースサーバー" as databaseNode {
  database "PostgreSQL" as postgres {
    artifact "アプリケーションデータベーススキーマ" as dbSchema
  }
}

clientNode -- appServerNode : HTTPS (ポート443)
appServerNode -- databaseNode : JDBC (ポート5432)

@enduml

Deployment diagram created using a text to diagram editor - VPasCode, illustrating a multi-region cloud architecture with load balancers, Kubernetes cluster nodes, on-premise firewalls, and database servers.

行動およびインタラクション図

シーケンス図

最も人気のあるPlantUML図の種類です。ステップバイステップでの相互作用、同期/非同期のAPI呼び出し、および時間の経過とともにアクターとシステム間を流れるメッセージの流れを追跡します。

@startuml
title ユーザー認証フロー

actor "ユーザー" as user
participant "Webアプリ" as app
participant "認証API" as auth
database "ユーザーDB" as db

user -> app : 認証情報入力
activate app

app -> auth : POST /api/v1/login
activate auth

auth -> db : メールアドレスでユーザーを照会
activate db
db --> auth : ユーザー記録とハッシュを返却
deactivate db

alt 有効な認証情報
    auth -> auth : パスワードを検証しJWTを生成
    auth --> app : 200 OK (トークンとプロファイル)
    app --> user : ダッシュボードにリダイレクト
else 無効な認証情報
    auth --> app : 401 Unauthorized (エラー)
    app --> user : 「無効な認証情報」を表示
end

deactivate auth
deactivate app
@enduml

Sequence diagram created using a text to diagram editor - VPasCode, showing a synchronous user authentication flow between a user, web app, auth API, and database with error handling.

ユースケース図

システムの境界、アクター、ユーザーの目的、および機能的範囲を定義する。

@startuml
title オンラインショッピングシステム - ユースケース図

left to right direction

actor カスタマー
actor "登録済みカスタマー" as RegCustomer
actor "決済ゲートウェイ" as PaymentSystem

カスタマー <|-- RegCustomer rectangle "ECシステム" { usecase "製品を閲覧" as UC_Browse usecase "アイテムを検索" as UC_Search usecase "カートを管理" as UC_Cart usecase "注文をチェックアウト" as UC_Checkout usecase "割引クーポンを適用" as UC_Coupon usecase "決済を処理" as UC_Payment usecase "注文履歴を表示" as UC_History } カスタマー --> UC_Browse
カスタマー --> UC_Search
カスタマー --> UC_Cart
カスタマー --> UC_Checkout

RegCustomer --> UC_History

UC_Checkout .> UC_Payment : <>
UC_Checkout <.. UC_Coupon : <>

UC_Payment -- PaymentSystem
@enduml

Use case diagram created using a text to diagram editor - VPasCode, mapping guest and registered customer interactions to system functions like browsing, checkout, and payment processing.

アクティビティ図およびステート図

複雑なビジネスロジック、アルゴリズムの流れ、ステートマシンの遷移、および並行処理をフローチャートで表現する。

@startuml
title 注文履行プロセス

|顧客|
start
:注文を提出;
:支払い情報を送信;

|注文システム|
if (支払いは有効か?) then (はい)
  :在庫を予約;
  
  ' 並行処理の分割
  fork
    |倉庫|
    :棚から商品をピック;
    :商品を箱に詰める;
  fork again
    |請求|
    :請求書PDFを生成;
    :支払い方法に請求;
  end fork

  |配送|
  :配送ラベルを付ける;
  :配達業者に引き渡す;
  
  |顧客|
  :商品を受け取る;
  stop
else (いいえ)
  |注文システム|
  :支払い失敗通知を送信;
  |顧客|
  :支払い方法を更新;
  stop
endif
@enduml

Activity diagram created using a text to diagram editor - VPasCode, displaying an order fulfillment workflow with swimlanes, decision gates, and parallel fork execution steps.

@startuml
title インターネット通販注文ライフサイクル

[*] --> Pending : 注文が提出された

state Pending {
  [*] --> AwaitingPayment
  AwaitingPayment --> PaymentFailed : 支払いエラー
  PaymentFailed --> AwaitingPayment : 支払いを再試行
}

Pending --> Processing : 支払いが承認された
Pending --> Cancelled : ユーザーが注文をキャンセル

state Processing {
  [*] --> Packing
  Packing --> ReadyForShipment : 品質検査通過
}

Processing --> Shipped : 配送業者に引き渡された
Shipped --> Delivered : 配送確認済み
Shipped --> Returned : 配送失敗/拒否

Delivered --> [*]
Cancelled --> [*]
Returned --> [*]
@enduml

State diagram created using a text to diagram editor - VPasCode, illustrating an e-commerce order lifecycle from pending payment and processing to shipped, cancelled, and delivered states.

タイミング図

離散的な時間枠にわたって正確な状態遷移とオブジェクトの相互作用を詳細に記述する。組み込みシステムやリアルタイムハードウェア設計に最適。

@startuml
title SPIデータ転送タイミング図

robust "クロック (SCLK)" as CLK
binary "チップセレクト (CS)" as CS
binary "マスタアウト (MOSI)" as MOSI
concise "データバス (MISO)" as MISO

@0
CSはHigh
CLKはLow
MOSIはLow
MISOは"アイドル"

@1
CSはLow
MISOは"ヘッダー"

@2
CLKはHigh
MOSIはHigh

@3
CLKはLow

@4
CLKはHigh
MOSIはLow
MISOは"ペイロード"

@5
CLKはLow

@6
CSはHigh
CLKはLow
MOSIはLow
MISOは"アイドル"

@enduml

Digital timing diagram created using a text to diagram editor - VPasCode, illustrating SPI communication waveforms across clock, chip select, MOSI, and MISO data lines over discrete time.

3. 高レベルアーキテクチャおよびドメイン固有の図

従来のUMLを超えて、PlantUMLは専用の拡張ライブラリを使用して、マルチレイヤードのソフトウェアシステムやデータアーキテクチャを優れて表現できます。

C4モデル図

抽象度の異なるレベル—コンテキスト、コンテナ、コンポーネント、コード—でソフトウェアアーキテクチャを表現し、技術者および非技術者双方のステークホルダーにとってシステム設計を理解しやすくします。

@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml

TITLE インターネットバンキングシステムのシステムコンテキスト図

Person(customer, "個人銀行顧客", "個人の銀行口座を持つ銀行の顧客です。")
System(banking_system, "インターネットバンキングシステム", "顧客が自分の銀行口座の情報を確認し、支払いを行うことを可能にします。")

System_Ext(mainframe, "メインフレームバンキングシステム", "顧客、口座、取引などのすべての核心的なバンキング情報を保存します。")
System_Ext(email_system, "メールシステム", "内部のMicrosoft Exchangeメールシステムです。")

Rel(customer, banking_system, "口座残高を確認し、支払いに使用")
Rel(banking_system, mainframe, "口座情報を取得し、支払いに使用")
Rel(banking_system, email_system, "メールを送信に使用")
Rel_Back(email_system, customer, "メールを送信")
@enduml

C4 Context diagram created using a text to diagram editor - VPasCode, mapping high-level system boundaries and external integrations between banking customers, core systems, and email servers.

ArchiMate図

ビジネス、アプリケーション、テクノロジーの各レイヤーにわたる企業アーキテクチャモデリングをサポートし、組織戦略を運用システムにマッピングします。

@startuml
!include <archimate/Archimate>

title ArchiMateサンプル - オンライン請求書支払い

Grouping(business, "ビジネス層"){
  Business_Process(payBillProcess, "請求書支払いプロセス")
  Business_Object(bankAccount, "顧客の銀行口座")
  Business_Service(paymentService, "請求書支払いビジネスサービス")
}

Grouping(application, "アプリケーション層"){
  Application_Component(bankingApp, "モバイルバンキングアプリケーション")
  Application_Function(paymentProcessing, "支払い処理ロジック")
  Application_DataObject(transactionRecord, "取引データペイロード")
}

Grouping(technology, "テクノロジー層"){
  Technology_Artifact(jwtToken, "暗号化されたセッショントークン")
  Technology_Service(apiGateway, "APIゲートウェイサービス")
  Technology_Service(dbService, "コアデータベースサービス")
}

Rel_Flow_Right(payBillProcess, bankAccount, "")
Rel_Serving_Up(paymentService, payBillProcess, "")
Rel_Specialization_Up(paymentProcessing, paymentService, "")
Rel_Flow_Right(transactionRecord, paymentProcessing, "")
Rel_Assignment_Left(bankingApp, paymentProcessing, "")
Rel_Realization_Up(jwtToken, transactionRecord, "")
Rel_Serving_Up(apiGateway, paymentProcessing, "")
Rel_Serving_Up(dbService, apiGateway, "")
@enduml

ArchiMate enterprise architecture diagram created using a text to diagram editor - VPasCode, mapping online bill payment across business processes, mobile banking application functions, and API gateway technology layers.

エンティティ関係図(ERD)

標準のクロウズフット表記およびChen ERDモデルを含む、クリーンなデータベーススキーマの可視化を生成します。

@startuml
title イーコマースデータベーススキーマ(クロウズフット)

' エンティティの円アイコンを非表示にする
hide circle
skinparam linetype ortho

entity "ユーザー" as user {
  * user_id : INT <>
  --
  * email : VARCHAR(255)
  * password_hash : VARCHAR(255)
  * created_at : TIMESTAMP
}

entity "顧客プロフィール" as profile {
  * profile_id : INT <>
  --
  * user_id : INT <>
  * first_name : VARCHAR(100)
  * last_name : VARCHAR(100)
    phone : VARCHAR(20)
}

entity "注文" as order {
  * order_id : INT <>
  --
  * user_id : INT <>
  * order_date : TIMESTAMP
  * total_amount : DECIMAL(10,2)
  * status : VARCHAR(50)
}

entity "注文アイテム" as item {
  * order_item_id : INT <>
  --
  * order_id : INT <>
  * product_id : INT <>
  * quantity : INT
  * unit_price : DECIMAL(10,2)
}

entity "商品" as product {
  * product_id : INT <>
  --
  * sku : VARCHAR(50)
  * name : VARCHAR(150)
    description : TEXT
  * price : DECIMAL(10,2)
}

' 関係
user ||--o| profile : "所有"
user ||--o{ order : "作成"
order ||--|{ item : "含む"
product ||--o{ item : "含まれる"

@enduml

Entity-relationship diagram with Crow's foot notation created using a text to diagram editor - VPasCode, detailing an e-commerce database schema, field keys, and table cardinalities.

ネットワークおよびインフラストラクチャマップ

ネットワークトポロジー、サーバーノード、クラウド接続、ファイアウォールを簡単に描画できます。

@startnwdiag
title 企業ネットワークトポロジー

nwdiag {
  network External_Internet {
    address = "0.0.0.0/0"
    user_client [address = "203.0.113.15", description = "リモートユーザー"];
    edge_firewall [address = "192.168.1.1", description = "境界ファイアウォール"];
  }

  network DMZ_Zone {
    address = "192.168.1.0/24"
    edge_firewall;
    load_balancer [address = "192.168.1.10", description = "Nginxロードバランサー"];
    mail_server [address = "192.168.1.25", description = "SMTPサーバー"];
    internal_firewall [address = "192.168.1.254", description = "内部ファイアウォール"];
  }

  network Private_LAN {
    address = "10.0.1.0/24"
    internal_firewall;
    app_server_01 [address = "10.0.1.50", description = "APIノード1"];
    app_server_02 [address = "10.0.1.51", description = "APIノード2"];
    db_master [address = "10.0.1.100", description = "PostgreSQLプライマリ"];
  }

  network Management_Subnet {
    address = "10.0.99.0/24"
    internal_firewall;
    admin_bastion [address = "10.0.99.5", description = "SSHバステオンホスト"];
    monitoring_node [address = "10.0.99.20", description = "Prometheusホスト"];
  }
}
@endnwdiag

Network topology map created using a text to diagram editor - VPasCode, illustrating public ingress firewalls, microservices subnets, and isolated database clusters.

 

4. 計画、管理、ブレインストーミング用のビジュアル

PlantUMLはソフトウェア設計に限定されるものではなく、プロジェクト管理やチームのブレインストーミングにも強力なツールです。

ガントチャート

クリーンなテキストマークアップを使用して、プロジェクトスケジュール、タスクの依存関係、マイルストーン、リソース割当を計画します。

gantt
    タイトル ソフトウェア製品リリーススケジュール
    dateFormat YYYY-MM-DD
    axisFormat %b %d

    セクション 計画と設計
    要件収集 :a1, 2026-09-01, 10d
    アーキテクチャ設計 :a2, a1の後, 10d

    セクション 開発
    バックエンドAPI開発 :b1, a2の後, 15d
    フロントエンドUI開発 :b2, a2の後, 15d

    セクション テストとリリース
    統合テスト :c1, b1とb2の後, 8d
    セキュリティ監査 :c2, c1の後, 5d
    本番リリース :マイルストーン, m1, c2の後, 0d

Mermaid Gantt chart timeline created using a text to diagram editor - VPasCode, mapping a software release schedule across requirements, architecture design, development, and testing phases.

作業分解構造(WBS)

複雑なプロジェクトを階層的な納品物と管理可能なタスクに分解する。

@startwbs
title ウェブサイトリデザインWBS

* ウェブサイトリデザインプロジェクト
** 1. ディスカバリーと戦略
*** 1.1 ステークホルダーインタビュー
*** 1.2 競合分析
*** 1.3 範囲と戦略の承認
** 2. UX/UIデザイン
*** 2.1 ワイヤフレーミング
**** 2.1.1 デスクトップレイアウト
**** 2.1.2 モバイルレイアウト
*** 2.2 デザインシステム
**** 2.2.1 コンポーネントライブラリ
**** 2.2.2 タイポグラフィとスタイルガイド
** 3. 技術開発
*** 3.1 フロントエンド
**** 3.1.1 ページテンプレート
**** 3.1.2 API統合
*** 3.2 CMSとバックエンド
**** 3.2.1 カスタム投稿タイプ
**** 3.2.2 データベース移行
** 4. QAとリリース
*** 4.1 ブラウザ間テスト
*** 4.2 コンテンツ移行
*** 4.3 DNS切り替えと本番稼働
@endwbs

Work breakdown structure diagram created using a text to diagram editor - VPasCode, showing a project hierarchy breaking a website redesign into strategy, UX design, development, and QA deliverables.

マインドマップ

チーム会議中に構造化されたアイデア、機能の分類、技術的探索ノートを迅速に記録する。

@startmindmap
title インターネット通販プラットフォーム機能マップ

* インターネット通販プラットフォーム
** ユーザーアカウント管理
*** ソーシャル認証(Google、Apple)
*** 2段階認証
*** 注文履歴と追跡
** 商品カタログと検索
*** フェイステッド検索とフィルター
*** 在庫同期
*** 商品レビューと評価
** クイックチェックアウトと決済
*** 支払いゲートウェイ(Stripe、PayPal)
*** クーポンとプロモーションエンジン
*** 1クリックゲストチェックアウト
** カスタマーサポート
*** ライブチャットアシスタント
*** 自動返品ポータル
@endmindmap

Mind map diagram created using a text to diagram editor - VPasCode, organizing product feature taxonomies across accounts, catalog search, checkout payments, and customer support.

5. PlantUMLの高速作成とレンダリング:VPasCodeの利点

PlantUMLは非常に強力ですが、ローカルのJava環境やGraphvizの依存関係、コマンドラインツールを設定するには手間がかかります。専用のウェブベースのPlantUMLツールはこれらの障壁を完全に解消します。

Visual Paradigm VPasCodeは、テキストから図へのワークフローをスムーズにするために特別に設計された統合型図表コードプラットフォームです。

VPasCodeの主な利点:

  • ゼロセットアップのオンラインプラットフォーム:ローカルのコンパイラやプラグインをインストールせずに、vpascode.comで強力なエディタに即座にアクセスできます。詳細はVPasCode Overview.
  • 自動フォーマット検出とリアルタイムプレビュー:スクリプトを貼り付けると、VPasCodeは自動的にPlantUML、Mermaid、またはGraphvizであるかを検出し、入力するたびにリアルタイムで更新をレンダリングします。
  • AI搭載のコードエラー修正: 構文エラーに遭遇した場合は、単にクリックしてください 「AIで修正」。 VPasCodeはコードを修正し、明確な説明付きで並べて表示される差分を提供するため、PlantUML構文をより迅速に習得できます。
  • ネイティブAI図面翻訳: 図面のラベルやメモをエディタ内ですぐに複数の言語に翻訳できます—グローバル開発チームに最適です。
  • 柔軟なエクスポートおよびドキュメント統合: 高解像度のPNGやスケーラブルなSVGベクタ画像を無料でエクスポートできます。また、その「図をコードで表現する機能ガイド」を使って、図を直接Visual Paradigm OpenDocsに送信することも可能です。図をコードで表現する機能ガイド.

6. クイックスタート例:VPasCodeでシーケンス図をレンダリングする

使い方がどれほど簡単かを確認するには、無料のUMLエディタのようなVPasCodeを使ってみてください。以下の基本的なPlantUMLシーケンス図スクリプトをご覧ください:

@startuml
autonumber
actor User
participant "VPasCodeエディタ" as Editor
participant "AIエンジン" as AI

User -> Editor: PlantUMLコードを貼り付け
Editor -> Editor: 形式を自動検出&リアルタイムレンダリング
alt 構文エラーが検出された
    User -> Editor: 「AIで修正」をクリック
    Editor -> AI: 破損したコードを送信
    AI --> Editor: 修正されたコードと差分を返却
end
Editor --> User: クリーンなベクタ図(SVG/PNG)を表示
@enduml

An example of rendering a Sequence Diagram using a text to diagram editor - VPasCode

上記のコードをコピーし、VPasCodeを開いてエディタに貼り付けるだけで、即座にライブレンダリングを確認でき、自動AI強化機能を試すことができます。

7. 結論と次なるステップ

PlantUMLは、UML、アーキテクチャ、データベーススキーマ、プロジェクト管理チャートなど、さまざまな分野で明確でバージョン管理可能で一貫性のある視覚的ドキュメントを維持できるようにチームを支援します。現代的なPlantUMLツールのようなVPasCodeと組み合わせることで、技術文書作成がより速く、エラーがなく、スムーズにコラボレーション可能になります。

図面作成プロセスを簡素化したいですか?今日から無料でPlantUML図を編集・レンダリングを開始しましょう。vpascode.com.

参考文献

上部へスクロール