2018年7月13日 【PlantUML】Visual Studio Codeのプラグインを使ってUMLを作成しよう!(基本編) Visual Studio Code 検索する Popular tags 事例紹介 GEN-STEP 生成AI(Generative AI) Vertex AI Search Looker Studio BigQuery AlloyDB Google Workspace Cloud SQL Category 技術開発 Author ゆうこ SHARE Content こんにちは、ゆうこです。2015年に中途入社し、プログラム組みつつプロジェクト管理もしてます。 突然ですがUML、便利ですよね! ユースケース図を描いて、機能が足りているか確認したり、 シーケンス図を描いて、関連する処理と順番を共有したり。 UML図を描くのに何を使ってますか?オンラインの画像描画エディタ?Excel? 実はVisualStudioCodeでも、プラグインを入れると簡単にUMLが描けるんです。 今回はUML作成プラグイン PlantUMLの活用と、実際にプロジェクトで使った感想を紹介します。 なおこの記事は、プロジェクトメンバー4名(せーいち、たいすけ、つかさ、ゆうこ)で共同執筆しています。 PlantUMLはどうやって入れるのよ? [expand title=本文を表示 swaptitle=本文を非表示] 【基本編】使ってる?Visual Studio Code おすすめプラグイン紹介 #01にもあるように、 サイドメニューの上から5番目のアイコンをクリック、もしくはCtrl+Shift+Xを押して、拡張機能タブを開きます。 “PlantUML”と入力して、プラグインをインストールしましょう。 このままだと見栄えの確認が出来ないので、Graphvizも入れます。 Graphvizの公式サイトのDownload > 対象OS > パッケージを選んでダウンロードします。 Graphvizが使えるOSは、Windows、Mac、Linux(Ubuntu、Fedora、Debian、Redhat、CentOS)、Unix(FreeBSD)です。 今回私たちはWindows8.1、Windows10で作業しましたので、 Stable 2.38 Windows install packagesからmsiを取得しました。 解凍してインストールしましょう。 アイコン設定はvscode-iconsがお勧めです。PlantUMLファイルが専用アイコンになります。 [/expand] 基本の使い方 [expand title=本文を表示 swaptitle=本文を非表示] ファイルを作る VisualStudioCodeのメニュー > ファイル > 新規ファイル(もしくはCtrl+N)で新しいファイルを作ります。 ファイルに以下のように打ち込みます。 @startuml @enduml 任意の場所に、ファイルの拡張子”*.pu”で一旦保存します。 これで下準備は出来ました。 ためしに表示してみる それでは、先ほどのファイルに、 @startuml title シーケンス図 ユーザ -> 登録画面 @enduml と入力して、Alt+Dを押してみてください。PlantUMLプレビューが開き、UMLが表示されます! なんとこれだけで、シーケンス図が描けました。すごくないですか!? 色変えやアイコンの変更も、文字入力だけです。 今までのように「アクターをドラッグして、いい感じのところにおいて、線をはみ出さないように引いて…」という努力は一切なしです。 @startuml title シーケンス図 hide footbox Actor ユーザ as User #eecc99 Boundary 登録画面 as Register #66ddbb User -> Register : 画面を開く activate Register @enduml すごくないですか!? UML図を複数描きたい場合は? @startuml~@endumlが囲んだ部分が1つのUMLに対応します。 1ファイルの中に、複数回@startuml~@endumlを書いたらプレビューはどうなるの?といいますと、カーソルが当たっている部分がプレビュー対象になります。 UML図が多くなる場合は、VisualStudioCodeのワークスペースで管理すると便利ですね。 作成した図を、画像で保存しよう 最後に、作成した図を画像にしましょう。 VisualStudioCode上でShift+Ctrl+Pを押して、コマンドパレットを開きます。 メニューの表示→コマンドパレットでもOKです。 コマンドパレットで”Plantuml export”と入力すると、出力方式が「カーソル位置」「ファイル内」「ワークスペース内」から選べます。 「カーソル位置」は、現在カーソルが当たっているUMLのみが対象 「ファイル内」は、ファイル内のUMLが対象 「ワークスペース内」は、ワークスペース内のすべてのUMLが対象 です。今回は「ファイル内」を選びます。 続いて、出力形式を選びます。pngを選んでみます。 しばらくして、画面右下にエクスポート完了のメッセージが表示されたら成功です! 「レポートを表示」を押すと出力パネルが開き、出力場所が表示されます。 Ctrlを押しながら出力ファイルパスをクリックすると、パスの位置にあるファイルが開きます。 無事、png形式でファイルが出力されました。使い方の一通りの説明はおしまいです。お疲れ様でした。 [/expand] PlantUMLでできること PlantUMLではシーケンス図以外にも色々作図できます!UML表記はもちろん、ワイヤーフレームでモック画面もつくれたりするのです。 [expand title=クラス図] クラス図 title クラス図例 class "BaseClass(基底クラス)" as BaseClass { + string userID + string userName } note right :"全てのクラスは基底クラスを継承する" class "UserManagerClass(ユーザー管理クラス)" as UserManagerClass { + bool Login() } BaseClass <|-- UserManagerClass: 継承 [/expand] [expand title=ユースケース図] ユースケース図 @startuml left to right direction actor A君 actor B君 rectangle 運動会 { A君 --> (開会式) A君 --> (徒競走) A君 --> (パン食い競争) A君 --> (障害物競走) A君 --> (大玉転がし) A君 --> (閉会式) (開会式) <-- B君 (障害物競走) <-- B君 (パン食い競争) <-- B君 (閉会式) <-- B君 } @enduml [/expand] [expand title=アクティビティ図] アクティビティ図 @startuml start if(コンロは2つ以上ある?) then (yes) fork :目玉焼きを焼く; fork again :ホウレン草のソテーを作る; end fork else (no) :目玉焼きを焼く; :ホウレン草のソテーを作る; endif @enduml [/expand] [expand title=コンポーネント図] コンポーネント図 @startuml [在庫管理システム] as InventorySystem [発注システム] as OrderSystem [顧客管理システム] as CustomerSystem :店員:<.l.顧客:注文 OrderSystem<.l.:店員::注文情報入力 InventorySystem<.l. OrderSystem :連携 CustomerSystem<.u. OrderSystem:連携 @enduml [/expand] [expand title=状態遷移図] 状態遷移図 @startuml state GameStart{ [*] -> 自機小 自機小 -> [*] : 敵に接触 自機小 --> 自機中 : アイテムに接触 自機中 --> 自機中 : 敵小に接触 自機中 --> 自機小 : 敵中・大に接触 自機中 --> 自機大 : アイテムに接触 自機大 --> 自機中 :敵大に接触 自機大 --> 自機大 :敵小・中・アイテムに接触 } @enduml [/expand] [expand title=オブジェクト図] オブジェクト図 @startuml title オブジェクト図の例 object "Order : 発注画面" as Order object "InventorySearch : 在庫検索" as InventorySearch object "CustomerSearch: 顧客検索" as CustomerSearch object "InventoryMasterAccess : 在庫マスタアクセス" as InventoryMasterAccess object "SupplierMasterAccess : 発注先マスタアクセス" as SupplierMasterAccess Order -- InventorySearch Order -- CustomerSearch InventorySearch -- InventoryMasterAccess InventorySearch -- SupplierMasterAccess @enduml [/expand] [expand title=配置図] 配置図 @startuml title 配置図の例 package クライアント { class "Webブラウザ" as WebBrowser } package Webサーバー{ class IIS class "モジュール" as Module } package DBサーバー{ class SqlServer } IIS -- WebBrowser Module - IIS SqlServer -- Module ' クラスボックスの余計な情報を非表示に hide members hide circle @enduml [/expand] [expand title=タイミング図] タイミング図 @startuml Title 飛行機搭乗状況 caption メモリの単位は時間(分)になります。 concise "飛行機 運行状況" as Plane robust "搭乗者 心理状況" as User User is リラックス @0 User is 緊張 Plane is 離陸 @10 Plane is 離陸中 @20 Plane is 安全圏 User is リラックス Plane -> User : シートベルト解除\nアナウンス @60 Plane is 着陸中 User is 緊張 Plane -> User : シートベルト着用\nアナウンス @70 Plane is 着陸 User is リラックス @75 @enduml [/expand] [expand title=ワイヤーフレーム] ワイヤーフレーム @startsalt {+ {* ファイル | お気に入り | 履歴 } {/ トップ | 社内ニュース | 社外ニュース | 飲み会情報 } { 名前 | " " 性別: | { (X) 男性 | () 女性 } 飲み会名: | { "同期飲み会" | [決定] } } { { 表示順: | ^新着順^ } [X] 他部署情報を含む [ ] 真面目な飲み会 } {# . | 参加人数 | 会費 同期飲み会 | 10人 | 3000円 部署内お食事会| 不明 | * } [Close] } @endsalt [/expand] [expand title=Ditaa] Ditaa @startditaa /--------------+ /------+ /--------------+ | | | | | | | +-------+ | | | +-------+ | | +------+ +------+ | | | +-------+ | | | +-------+ | cRED | +------+ +------+ | cRED | +--------+ | | | +--------+ | | | | | | | +--------+ | | | +--------+ | | | | | | | | | | | | | +--------------+ +------+ +--------------+ +------------------------------------------+ |content | | | | +------------------------------------+ | | |Document | | | | | | | | +--------+ +--------+ +--------+ | | | | | DocA | | DocB | | DocC | | | | | | {d} | | {d} | | {d} +<-------+ | | +--------+ +--------+ +--------+ | | | | | | | | | +------------------------------------+ | | | | | | +------------------------------------+ | |Input | |Source | | | | | | | | | | +-------------+ +--------------+ | | | | | | FileA | | FileB +--------+ | | +-------------+ +--------------+ | | | | | | | +------------------------------------+ | | | +------------------------------------------+ @endditaa [/expand] [expand title=ガントチャート] ガントチャート 2018年6月現在、β版です。 @startgantt [機能A 設計] as [A設] lasts 10 days [機能A 製造・単テ] as [A製] lasts 20 days [機能B 設計] as [B設] lasts 7 days [機能B 製造・単テ] as [B製] lasts 12 days [結テ] lasts 10 days [A設] -> [A製] [B設] -> [B製] [A製] -> [結テ] [B製] -> [結テ] @endgantt [/expand] まとめ 設計で使用する図は一通りPlantUMLで作成できることが判りました。 次回は、実際の業務でPlantUMLを用いて設計した時の使い心地、メリット/デメリット についてお伝えします! もしかして興味あるかも? 使ってる?コードエディタ『Visual Studio Code』のススメ 【基本編】使ってる?Visual Studio Code おすすめプラグイン紹介 #01 【HTML編】Visual Studio Code おすすめプラグイン紹介 #02 これで彼女ができる!ITディレクターの課題分析術 要件定義。それが一番大事。 頂きましたご意見につきましては、今後のより良い商品開発・サービス改善に活かしていきたいと考えております。 Author ゆうこ 株式会社システムサポート BSG事業部 2015年中途入社。現在はGoogle Cloudのデータ移行・データ可視化のプロジェクトを担当。 好きな紅茶はG clef カイラベッタ ニルギリ。 Visual Studio Code 2018年7月13日 【PlantUML】Visual Studio Codeのプラグインを使ってUMLを作成しよう!(基本編) Category 技術開発 前の記事を読む 【4コマ漫画】SEひつじは定時退社の夢を見る~誤射 誤爆~ 次の記事を読む 【4コマ漫画】SEひつじは定時退社の夢を見る~flash黄金時代~ Recommendation オススメ記事 2023年9月5日 Google Cloud 【Google Cloud】Looker Studio × Looker Studio Pro × Looker を徹底比較!機能・選び方を解説 2023年8月24日 Google Cloud 【Google Cloud】Migrate for Anthos and GKEでVMを移行してみた(1:概要編) 2022年10月10日 Google Cloud 【Google Cloud】AlloyDB と Cloud SQL を徹底比較してみた!!(第1回:AlloyDB の概要、性能検証編) BigQuery ML ワークショップ開催のお知らせ 生成AI導入支援パッケージ Discovery AI導入支援パッケージ Google Cloud ホワイトペーパー 新着記事 2026年5月11日 Google Cloud BigQueryの役割はどう変わるのか-Google Cloud Next’26で感じた「AIエージェント時代のデータ基盤」 2026年5月11日 イベント・セミナー 【2026/5/28開催】EC運営を効率化! 生成AIでコンテンツ制作業務を加速させる改善術 2026年5月11日 モバイル Jetpack ComposeとCredential ManagerでPasskeyログインを実装してみた HOME 技術開発 【PlantUML】Visual Studio Codeのプラグインを使ってUMLを作成しよう!(基本編)