Donate244Patreon127


F.A.Q.

PlantUMLの目標は何ですか?

PlantUMLは、シンプルで人間が読むことのできるテキストの記述を使って、UMLの図を描くために使われます。 ご注意いただきたいのは、矛盾した図が描画されてしまうことです。(例えば、2つのクラスがお互いに継承し合うような図です。) ですからPlantUMLは、モデリングツールというよりはむしろ描画ツールです。

PlantUML Serverで生成した画像はいつまで保持されますか?

PlantUML Server で生成されたPNG画像やSVG画像へのリンクは永続的に有効です (つまりサーバが死なない限りは)。
しかしながら、どんな図もサーバには保持されません

これは矛盾しているように聞こえるかもしれませんが、そうではありません。全ての図は圧縮されURL自身に埋め込まれます。URLを受け取ると、サーバはURLから図のテキスト情報を復元し、画像を生成します。 このため、何も保持する必要がないのです。仮にサーバがダウンしたとしても、コマンドライン-decodeurlフラグを使用すれば図の内容を取得することが可能です。さらに、図のデータはPNG画像のメタデータに保存されているため、ダウンロードした画像からも図の内容を取得することが可能です。

時折、私たちはサーバをHTTPのTRACEを有効にすることがあるかもしれません。これは主にパフォーマンスの問題(がいくつか発生した場合)でトラフィックを把握するために行います。問題が解決してしまえば、HTTPのTRACEを無効化し、ログも削除します。

また、大まかにサーバ負荷を計測するために、生成された(トップページでプリントされた)図の数をカウントしている点についてもご了承ください。

内容がセンシティブでないかについても考慮に入れてください。たとえ私たちが生成した図を保持しないと言っても、全てのトラフィックはHTTPを通るので捕捉が容易であることを念頭に入れてください。

そのため、センシティブな情報を含む図を生成しようと考えている場合は、ご自分のネットワークにローカルサーバを立てるべきかもしれません。

動かない !

PlantUML は様々なシステムでインストールされており、インストール時に発生したマイナーな問題がユーザから報告されることがあります。
こちらのページをご覧になれば、何が誤っているか手引きを受けられるかもしれません。

どのバージョンの Graphviz を使うべきでしょうか?

Graphviz についての 情報 や実行すべき テスト を確認してください。

テスト済みで、動作するものとなっているバージョンは以下のとおりです:

注意: バージョン 2.39 と 2.42 は PlantUMLではうまく動作しないようです.

バージョン2.44をWindowsで使用する場合、インストールを完了させるために、以下の例のようにdot -cをコマンドラインで実行する必要があるかもしれません。

dot -cコマンドは管理者権限で実行する必要があるかもしれません。

他の選択肢は、Win32 version of GraphViz 2.44をインストールすることです。こちらの場合、インストール後の作業は不要です。

Graphviz を自身でコンパイルする場合は、 PlantUML が動作するのに必要な libexpat もビルドする必要があります。

PlantUMLは成熟したソフトウェアですか?新しいリリースはありますか?

Google Trendsは前向きな傾向です。そして、PlantUMLに関する本もいくつかあります。つまり、成熟していると言えるでしょう。

PlantUML継続的インテグレーションの考え方で開発されているので、頻繁に新規のリリースが行われ、(理想的には)後方互換性も保たれています。PlantUML.jarというファイルはその都度変更されますが、ずっと同じファイル名のままです。

使用している正確なバージョンを知りたい場合は、コマンドラインで次のように入力してください:

java -jar plantuml.jar -version

もしくは、次の特別なダイアグラム記述を使用してください:

@startuml
version
@enduml

プログラムの更新がないかを確認するにはどうすればよいですか?

新しいバージョンがダウンロードできるかどうかは、ダウンロードページを確認してください。

また、以下のRSSを購読することもできます。

また、次のコマンドを使用することもできます。

java -jar plantuml.jar -checkversion

このコマンドはPlantUMLのウェブサイトに接続するので、プロキシの設定が必要かもしれません。 (注意: -Dフラグは必ず-jarフラグの前に設定する必要があります。)

java -Dhttp.proxyHost=myproxy.com -Dhttp.proxyPort=8080 -jar plantuml.jar -checkversion

または、次の特別なダイアグラム記述を使用してください。

@startuml
checkversion
@enduml

次の構文でプロキシの設定を行うことができます。

@startuml
checkversion(proxy=myproxy.com,port=8080)
@enduml

Eclipseプラグインにてエラーメッセージが表示されたのですが

以下のようなエラーメッセージが表示されたようでしたら :

The currently displayed page contains invalid values

Windows/Preferences/PlantUML が表示されている場合、Eclipseを終了して、コマンドラインから-cleanフラグを使用してみてください。

eclipse -clean

サイズの大きな図を作成したい

PlantUMLは画像の幅と高さを4096に制限しています。この制限を上書きするための環境変数PLANTUML_LIMIT_SIZEが存在します。PlantUMLが起動される前にこの環境変数が設定されている必要があります。以下のように設定できます。

set PLANTUML_LIMIT_SIZE=8192

または

setenv PLANTUML_LIMIT_SIZE 8192

以下のように、コマンドラインの引数として指定することもできます。

java -DPLANTUML_LIMIT_SIZE=8192 -jar /path/to/plantuml.jar ...

ただし、非常に大きな(例えば、 20 000 x 10 000 ピクセルを超えるような)図を作成しようとした場合、メモリ問題が発生する可能性があります。 この場合、以下のパラメータをjava vmに与える必要があります。-Xmx1024m.

アクセント付きの文字を使用したところ、問題が発生しました。

文字コードは注意を要する問題です。デフォルトではPlantUMLは、プラットフォームのデフォルトの文字コードを使用します。それはUTF-8かもしれませんし、違うかもしれません。使用している文字コードを知りたい場合は、次のコマンドを使用してください:

java -jar plantuml.jar -help

...
-charset xxx To use a specific charset (default is windows-1252)
...

違う文字コード(例えばUTF-8)を使いたい場合は、-charsetフラグを使用してください:

java -jar plantuml.jar -charset UTF-8 ...

unicodeに関する情報はこちら。Javaは、UTF-8に設定した場合でもB.O.M. (Byte Order Mark)をサポートしませんが、PlantUMLに回避策が含まれているので、これに関する問題は発生しません。

日本語のようなアジア圏の文字を使用したところ、問題が発生しました。

PlantUMLを起動する前に、シェルでLANG変数にja_JP.UTF-8を設定する必要があると、日本人のユーザから報告が上がっています。

export LANG = ja_JP.UTF-8

新しいアーキテクチャの採用後は、Javaで東アジアの文字を描画できるようになったので、この対応は不要になりました。

EPS形式のファイルはどのようにして作成するのですか?

コマンドラインにて -eps フラグを入力するか、ANT タスクにて format="eps" を指定してください。

XMI形式ファイルの対応状況は ?

現在、対応に向けて 取り組んで います。

-pipeフラグを使う場合にも@startumlが必要ですか?

短い回答: ダイアグラムの開始には必ず @startuml (もしくは @startditaa、@startjcckit...)を使用してください。

長い回答:

@startuml/@startditaa/@startjcckit はダイアグラムの種類(uml, ditaa, jcckit...)を決定するのに役立っています。そして、@start○○の後に任意でファイル名を記述することができます。また、一つのファイルに複数のダイアグラムを含めることもできます。

PlantUMLの過去のバージョンでは、ditaaやjcckitをサポートしていませんでした。-pipeフラグを使用すると、標準出力にダイアグラムが生成されるため、標準入力から入ってくるダイアグラムは1つだけです。そして、ファイル名を指定する必要もありません。これらの理由から、-pipeフラグを使う場合、@startumlは不要でした。

その後、この仕様は訂正されることになり、-pipeフラグを使用した場合も含めて、常に@start○○が必要となりました。これは、ユーザの混乱を防ぐためでもあります。 残念ながら、-pipeフラグ使用時に@startumlが不要であるという事実に基づいて作られた既存のスクリプトが存在しているため、それらの古いスクリプトが実行できるように、この仕様はdeprecatedな選択肢として残してあります。私たちは後方互換性に気を配っています。

新規のスクリプトでは、この仕様に頼らず、-pipeフラグ使用時も@start○○/@end○○を使用してください。

PlantUMLはどのライセンスで配布されていますか?

PlantUMLはGPLライセンスの下で配布されています。 次のコマンドラインオプションを使ってライセンスを出力することができます。

java -jar plantuml.jar -license

もしくは次の特別なダイアグラムを使用してください。

@startuml
license
@enduml

私は GPL ライセンスなんて嫌いですよ! 大っ嫌い!!

以下のライセンスも利用可能です:

これらのバージョンには、いくつかの機能(例えばDITAA)が含まれていません。しかしUMLダイアグラムの生成に関しては100%可能です。

これらのバージョンでライセンスを出力するには、次のコマンドラインオプションを使用します:

java -jar plantuml.jar -license

もしくは、特別なダイアグラムを使用することができます:

@startuml
license
@enduml

PlantUMLによって生成された画像にはGPL/LGPL/ASL/EPL/MITライセンスが適用されますか?

いいえ、いずれも適用されません。

PlantUMLを実行して生成した画像は、そのフォーマット(PNG, SVG...)にかかわらず、対応するソースコード(つまり、PlantUML言語のテキストによる記述)の作成者の所有物となります。

PlantUMLを実行して生成した画像は、「対象著作物(covered work)」とはみなされません。それらは自由に使用することができます。

生成された画像を使用する際に、GPL/LGPL/ASL/EPL/MITいずれのライセンスに言及する必要もありません。また、PlantUMLによって生成されたことを明示していただくとPlantUMLチームは喜びますが、これは必須の要求事項ではありません。

例外として、PlantUML言語で書かれたテキストに何らかのライセンス(GPL/LGPL/ASL/EPL/MITなど)が適用されている場合、論理的には生成された画像もそのライセンスの対象となります。

LGPL版バイナリファイルのPlantUML.jarを再配布することはできますか。また、その場合に制限事項はありますか。

Javaのソースコードとjarファイルに手を加えていない限り、他のクローズドなソフトウェアにPlantUML.jarを組み込むことができます。

唯一の制限事項は、ソフトウェアがPlantUMLを使用していてPlantUMLがLGPLの下で配布されているということを、そのソフトウェアのライセンスもしくはドキュメンテーション中に表示する必要があるということです。

それ以外の制限事項は無く、そのソフトウェアを販売して対価を得ることも可能です。(しかしながら、その場合でも寄付は歓迎します:-))

PlantUML記法のライセンスはどうなっていますか?

PlantUML記法自体にはライセンスはありません。つまり、誰でも使うことができます。

コード中のコメントとしてPlantUMLを使用することができます。そのコメントはあなた自身の所有物となります。それらは「対象著作物(covered work)」とはみなされず、GPL/LGPL/APL/EPL/MITライセンスの対象でもありません。

実装されたもの(つまり、PlantUMLのプログラム)のみがGPL/LGPL/ASL/EPL/MITライセンスの対象となっています。一方で、PlantUMLのウェブサイトで公開されている文書類(使用例や注意事項など)は、著作権で保護されています。しかし、オリジナルのドキュメンテーションを作ることは可能です。

WordマクロをJava 7で実行すると、"file not found"というメッセージが表示されました。

環境変数を設定する必要があるかもしれません。Windowsの環境変数設定で、次の2つの変数を探してください:

変数PATHの値に、;C:\Program Files\Java\jre7\binを追加
変数CLASSPATHの値に、;C:\Program Files\Java\jre7\libを追加

If they do not exist, create new User Variables:

変数PATHの値に、.;C:\Program Files\Java\jre7\bin.;を追加
変数CLASSPATHの値に、.;C:\Program Files\Java\jre7\lib.;を追加

EmptySvgExceptionとは何ですか?

PlantUMLはGraphvizを使用してダイアグラムを生成しています。PlantUMLはdotプログラムを実行し、dotにより生成されたSVGデータを取得します。

このメッセージは、PlantUMLがdotプログラムから、空のSVGデータを受け取ったためUMLダイアグラムの生成に失敗した場合に表示されます。これにはいくつかの理由が考えられます。

X11やheadlessに関するエラーメッセージが表示されました。

PlantUMLをグラフィック機能の無いLinuxサーバーで実行すると、何らかのエラーが表示される場合があります:

基本的にこれは、PlantUMLがグラフィック関連のリソースを必要としていることが原因です(詳しくはこちら)。 PlantUMLをheadlessモードに設定するには-Djava.awt.headless=trueフラグを使用してください。

例:

/usr/bin/java -Djava.awt.headless=true -jar /data/PlantUml/plantuml.jar ...

Mac OS XでUnsatisfiedLinkErrorというエラーが表示されます。

Mac OS Xで次のようなエラーが表示された場合、

Error java.lang.UnsatisfiedLinkError / liblwawt.dylib /libosxapp.dylib

次のサイトの説明に従ってください。http://stackoverflow.com/questions/25914757/osx-yosemite-jvm-shared-library-does-not-contain-the-jni-createjavavm-symbol:

  1. JavaForOSXというパッケージをダウンロードし、インストールします。
  2. AptanaStidio3.iniというファイルを探します。デフォルトでは次のディレクトリにあります: /Applications/Aptana Studio 3/AptanaStudio3.app/Contents/MacOS
  3. -vm引数で使用するJavaを指定してAptana Studioを起動します: -vm /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java

Java 6のみで動作するようなので、次のようなエイリアスを定義してスクリプト中で使用してください。

alias java6="export JAVA_HOME=$(/usr/libexec/java_home -v 1.6.0)"

PlantUMLスクリプトがキーボードフォーカスやウィンドウフォーカスを奪ってしまいます。

設定に応じて、次のフラグを試してみてください。-Djava.awt.headless=true.
例:

/usr/bin/java -Djava.awt.headless=true -jar /path/to/plantuml.jar ...

問題を発見しましたが、問題を再現するダイアグラムに機密情報が含まれているため、それを提供することができません。

コマンドラインで-cypherオプションを使用すると、通常の画像ファイルの代わりに.preprocファイルを生成します。

生成された.preprocファイルは、入力されたダイアグラムに似ていますが、すべての単語(PlantUML言語のキーワードを除く)がランダムな文字列に置き換えられています。

-cypherオプションを付けて何度か実行すると分かるように、毎回異なるテキストが生成されます。 また、この変換を行っているCypher.javaを見ると、元のダイアグラムを復元するようなバックドアが存在しないことを確認できると思います。

元のダイアグラムで何か問題が発生する場合、変換されたファイルでも同じ問題が発生することが期待できます。 変換後のファイルは全く無意味なものなので、安心して私たちに送ってください。あなたが元々何を作っていたのかを推測する手段は、私たちにはありません。

しかし、問題を再現して修正することができれば、元の(機密情報を含む)ダイアグラムでも問題が解消するでしょう。

質問の回答がここにはありませんでした!

その場合には、この フォーラム で質問してみてください。

きっと誰かがあなたの質問に回答してくれるでしょう!