VSCodeでMD&PlantUMLのプレビューとPDF出力をできるようにする

背景情報
ユースケース図をmarkdownまたはテキストを使用して作図することになった。
まずはmermaid記法にユースケース図が対応しているのか調べてみた。
その結果zenUMLなどがあり、似たような作図はできそうだったが非対応であった。
他に調べてみると、PlantUMLというJavaで実装されたテキストベースのUML作図ソフトの存在を知った。
これには少し見覚えがあり、markdown PDFの設定にジャンプすると、案の定PlantUMLをレンダリングする設定があった。
つまりPlantUMLを出力する機能がmarkdown PDFにはある。しかし、VSCodeのmarkdownファイルのプレビューでUMLが表示されていなかった。
また、markdown PDFではplantUMLをそのまま文中に挿入することで認識されるらしく、コードブロックに入れてしまうとUMLがレンダリングされなくなってしまっていた。
このスクラップでは主にこのプレビューの問題と、PDF出力時のUML生成のためのmarkdown記法の修正、設定を目的とする。
目的
- VSCodeのmarkdownプレビュー時にUMLを表示する
- コードブロックを使用したPlantUMLの記法を採用したmarkdown PDFの設定
サンプルコード
このユースケース図ををVSCodeのmarkdownプレビューで表示されるようにしつつ、拡張機能のMarkdown PDFで出力されるように設定する。
```plantuml
@startuml
left to right direction
skinparam packageStyle rectangle
actor "乗客" as Passenger
actor "支払いサービス" as PaymentService
actor "切符発行システム" as TicketSystem
rectangle "Web予約システム" {
usecase "路線検索" as SearchRoute
usecase "座席予約" as ReserveSeat
usecase "支払い" as MakePayment
usecase "予約確認" as ConfirmReservation
usecase "予約キャンセル" as CancelReservation
}
Passenger --> SearchRoute
Passenger --> ReserveSeat
Passenger --> MakePayment
Passenger --> ConfirmReservation
Passenger --> CancelReservation
MakePayment --> PaymentService : <<include>>
ReserveSeat --> TicketSystem : <<include>>
@enduml
```

解決策
解決したい目的2つに対する処方をそれぞれ記す。
VSCodeのPlantUMLのmarkdownプレビュー
結論: jebbs 氏が提供している拡張機能「PlantUML」をインストールしていくつか設定をすればよい。
諸設定
まずplantuml.java
にローカルのJava.exe
を指定する必要がある。
おそらくOracleサーバー?等と一緒にWindowsにはデフォルトでJava環境が入っている気がするので、ターミナルからwhere java
でパスを調べるのが良いかも。
入っていなければ、Javaの環境構築を行いましょう。
次にplantuml.render
にPlantUMLServerが選ばれていることを確認してから、plantuml.server
にhttps://www.plantuml.com/plantuml
を入力してやればよい。
他のPlantUML環境構築の記事を調べてみると、plantuml.jar
など他に多くのファイルをダウンロードしたり環境構築が大変なのですが、Javaさえもともと入っていれば今回のように楽に導入できそうです。
PlantUMLをコードブロックで囲った状態でのPDF出力時レンダリング設定
結論: markdown PDFの設定を少しいじれば即解決。
拡張機能入れていない人は入れてくださいな。
markdown-pdf.plantumlOpenMarker
とmarkdown-pdf.plantumlCloseMarker
という設定がある。
この2つは初期値がそれぞれ、@startuml
, @enduml
となっている。
これをそれぞれ```plantuml
, ```
と書き替えてやるだけで良い。
なお、PlantUMLを囲うコードブロックにはシンタックスハイライト兼ファイルの種類を認識しやすいようにplantuml
と追記しているのでこの設定となっている。

参考
- MarkdownのプレビューとPDF変換結果にローカル描画したPlantUMLの図を埋め込む(VSCode + Docker) #Docker - Qiita
- VSCode の PlantUML で PDF を出力したかった - 灰汁の教典 #9
- VSCodeでMarkDownとPlantUMLを使う
- VSCodeでMarkdownでUML(ユースケース図、シーケンス図など)を描く方法 | aduce株式会社 静岡県下田市のテックカンパニー
- VSCodeでMarkDownとPlantUMLを使う
- Zenn で plantuml を使うときのいい方法
- 映画館チケット予約システムの概念モデリング
- Markdownの文書にPlantUMLを使ってUMLを埋め込む #VSCode - Qiita
- Visual Studio Code で PlantUML を使う方法: 環境構築から実践まで
- Windows環境上のVS CodeでPlantUML利用環境を構築してみる(PlantUMLServer) #VSCode - Qiita
- PlantUML Web Server