2018年7月13日 【PlantUML】Visual Studio Codeのプラグインを使ってUMLを作成しよう!(基本編) Visual Studio Code 検索する Popular tags 生成AI(Generative AI) 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年中途入社。現在はプロジェクト管理とシステム開発を担当。 好きな言語はC#、好きな紅茶はカレルチャペック。 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 ホワイトペーパー 新着記事 2024年10月9日 イベント・セミナー 【参加無料】typeエンジニア転職フェア 出展のお知らせ(2024/10/12) 2024年10月4日 イベント・セミナー 【11/20開催】データ分析&活用ウェビナー(事例紹介付き) 2024年9月30日 Google Cloud 【Google Cloud】サーバレスでマネージドなサービス「Cloud Run」でアプリケーションを走らせよう! HOME 技術開発 【PlantUML】Visual Studio Codeのプラグインを使ってUMLを作成しよう!(基本編)