【Visual Studio Code】PlantUMLでconfigオプションを使用する方法の紹介

Visual Studio Code拡張機能のPlantUMLで作成した図の見た目を変更する方法として、次のようなものがあります。

  • ファイルに直接指定する。
  • !includeディレクティブを使用して別ファイルを読み込む。
  • configオプションを使用して別ファイルを読み込む。

このなかで、configオプションを使用した場合は、プレビュー表示に失敗することがあります。

今回は、configオプションを使用したときに、プレビュー表示に失敗する原因と回避方法を紹介していきます。

スポンサーリンク

環境

検証に使用した環境/ライブラリを以下に記載します。

  • OS
    • Version:Windows 10 Home(1909)
  • Visual Studio Code
    • Version:1.47.2
  • PlantUML(Visual Stduio Code拡張機能)
    • Version:2.13.12
  • Java
    • Version:11(AdoptOpenJDK)

ファイル構成

検証するためのファイル構成と内容をそれぞれ記載します。

C:\Users\fumidzuki\plantuml
  example.pu
  config.txt

example.pu

PlantUMLの図を作成するためのファイルです。

@startuml sample

start
:Hello world;
:Welcome to PlantUML;
stop

@enduml

config.txt

PlantUMLの見た目を変更するためのファイルです。

' Shadowing
skinparam Shadowing false

' Default
skinparam Default {
  FontColor #000000
  FontSize 24
}

見た目の変更を加えて作成した図は、次のようなイメージになります。

完成系イメージ図

configオプション指定方法

問題が発生することを確認するため、configオプションの指定方法を記載します。

コマンドラインで指定する方法

コマンドラインでconfigオプションを指定すると次のようになります。

java -jar C:\Users\fumidzuki\.vscode\extensions\jebbs.plantuml-2.13.12\plantuml.jar -config config.txt example.pu

-configオプションの後に指定しているのが、見た目を変更するためのファイル名になります。この方法では問題なくファイル出力が行えます。

Visual Studio Codeで指定する方法

Visual Studio Codeでコマンドラインと同様の指定をする場合は、次のような手順になります。

  1. Visual Studio Codeで拡張機能(Ctrl + Shift + X)を表示します。
  2. 表示された拡張機能から、PlantUMLの設定を表す歯車マークを選択して、「拡張機能の設定」を選択します。
  3. 設定画面からJar Argsの「setting.jsonで編集」を選択して、次のような内容を入力します。
{
  "plantuml.jarArgs": [
    "-config", "config.txt"
  ]
}

この方法でコマンドラインと同じ内容を指定できているはずですが、プレビューを表示しようとすると、次のような例外メッセージが表示されます。

Exception in thread "main" java.io.FileNotFoundException

この状態では、画面イメージを確認することができません。

原因調査

例外メッセージには、ファイルが存在しない内容が表示されています。このことから、指定したファイルが参照できていないことが問題とわかります。

ファイルをどこに配置すれば正常に動作するかというと、Visual Studio Codeをインストールしたディレクトリに配置する必要があるようです。例としては、次のような場所になります。

C:\Program Files\Microsoft VS Code

ここに、confg.txtを配置することでプレビューを表示することができるようになります。

推測になりますが、setting.jsonにファイル名だけを記載した場合は、カレントディレクトリに存在しているファイルを参照しようとしているように思えます。

この状態でも、プレビュー表示することは可能になりましたが、インストールディレクトリに関係ないファイルが存在しているという違和感は残ります。

回避方法

問題を回避するための方法は次のようになります。

絶対パスを使用する

setting.jsonの内容を次のように絶対パスに変更する。

{
  "plantuml.jarArgs": [
    "-config", "C:\\Users\\fumidzuki\\plantuml\\plantuml.config"
  ]
}

カレントディレクトリの問題点を解決することはできますが、ファイルの場所を変更するときは、パスも併せて修正する必要があります。

includeディレクティブを使用する

ファイルに次のような記載を追加する。

!include plantuml.config

ファイル内容に見た目を変更するためのファイル名も記載されているため、ファイルの関係を簡単に確認できるようになります。

コマンドラインを使用する

コマンドラインでconfigを指定して作成する。

java -jar C:\Users\fumidzuki\.vscode\extensions\jebbs.plantuml-2.13.12\plantuml.jar -config plantuml.config sample.pu

図を確認するために、毎回コマンドラインを実行する必要があるため、Visual Studio Codeで作成している利点がなくなります。

まとめ

回避方法を考えてみましたが、別に用意した見た目を変更するファイルを読み込む場合は、!includeディレクティブで実施することが無難かもしれません。