PlantUMLは、わかりやすく解釈しやすいテキスト記述によって UML 図を
作成するために利用される、堅牢なツールです。ただし、2 つのクラス間の相互継承のような、一貫性のないダイアグラムの作成は制限されていないことに注意することが極めて重要です。その結果、PlantUML は
モデリング・ツールというよりもむしろ
描画ツールとして機能します。
PlantUML がダイアグラム作成に最適である理由を説明します:
- テキスト・ベースの作成: PlantUML はテキストベースの原則で動作し、シンプルで人間が読める文章でダイアグラムを 作成できます。これにより、 ダイアグラム作成ツールの専門知識がなくても、ダイアグラム構造を容易に理解し、修正することができます。
- オープンソースおよび無料:オープンソースおよび無料であることは、ライセンス料や購読料を支払うことなくPlantUMLを利用できることを意味します。
- スマートなレイアウトアルゴリズム:PlantUMLは、インテリジェントなレイアウトアルゴリズムを採用しています:* このツールはインテリジェントなレイアウトアルゴリズムを採用してお り、ダイアグラムの要素の首尾一貫した、視覚的に美しい配置を保証し、手 動による位置合わせの手間を省きます。
- 自動ダイアグラム生成:* PlantUML は、提供されたテキストに基づいて自律的にダイアグラムを 作成するジェネレーターとして機能します。この機能により、ダイアグラムの迅速な作成と更新が簡素化されるだけでなく、美観よりも構造や関係の定義に集中することができます。
要するに、PlantUML は、プロフェッショナルなダイアグラムを迅速かつ 容易に作成できる、強力で適応性のあるツールとして登場しました。PlantUMLは、ダイアグラムのレイアウトと視覚化を管理する自動化されたアシスタンスを提供し、ダイアグラムの作成にテキストベースの手法を好む個人を特に対象としています。
PlantUML では、あなたのダイアグラムの外観をパーソナライズするために、
テーマを使用することができます。PlantUML は、素早く選択できる様々なビルトインテーマを提供するだけでなく、
カスタ ムカラーやスタイルの定義を通して、独自のテーマを作成することもできます。
ダイアグラム内の個々の要素を手動で整列させる面倒な作業とはおさらばです。PlantUML のインテリジェントなレイアウトアルゴリズムは、あなたのダイアグラム内の要素を明確かつ論理的に整理する、大変なタスクを肩代わりします。これにより、重要な関係や構造の説明に集中することができ、プロフェッショナルなダイアグラムを簡単かつ迅速に作成することができます。
- ジェネレータとしての PlantUML を理解する
PlantUML はジェネレータとして動作し、入力されたテキストに基づいて 自律的にダイアグラムを作成します。これは、迅速で手間のかからないダイアグラム作成を促進するだけでなく、更新プロセ スも合理化します。入力テキストの簡単な変更は、即座にダイアグラムに反映されま す。
しかしながら、この利便性は、正確なレイアウトに対する 制限されたコントロールという代償を伴うものであり、手動の要素位置決めを可能に するツールと比較した場合の制約となります。にもかかわらず、多くの人が、ジェネレータの効率と時間節約の属性が、この欠点を上回ると感じています。
レイアウトの一般的な問題に対するアドバイスや解決策を求める人々にとって、
PlantUMLコミュニティ・フォーラムは、ヒントを交換し、あなたのダイアグラムのカスタマイズの熟練度を高め、あなたのジレンマに対する答えを得るための活気あるプラットフォームとして立っています。
PlantUML Server で生成されたPNG画像やSVG画像へのリンクは永続的に有効です (つまりサーバが死なない限りは)。
しかしながら、どんな図もサーバには保持
されません。
これは矛盾しているように聞こえるかもしれませんが、そうではありません。全ての図は
圧縮されURL自身に埋め込まれます。URLを受け取ると、サーバはURLから図のテキスト情報を復元し、画像を生成します。 このため、何も保持する必要がないのです。仮にサーバがダウンしたとしても、
コマンドラインで
-decodeurl
フラグを使用すれば図の内容を取得することが可能です。さらに、図のデータはPNG画像のメタデータに保存されているため、ダウンロードした画像からも図の内容を取得することが可能です。
時折、私たちはサーバをHTTPのTRACEを有効にすることがあるかもしれません。これは主にパフォーマンスの問題(がいくつか発生した場合)でトラフィックを把握するために行います。問題が解決してしまえば、HTTPのTRACEを無効化し、ログも削除します。
内容がセンシティブでないかについても考慮に入れてください。たとえ私たちが生成した図を保持しないと言っても、全てのトラフィックはHTTPを通るので捕捉が容易であることを念頭に入れてください。
そのため、センシティブな情報を含む図を生成しようと考えている場合は、ご自分のネットワークに
ローカルサーバを立てるべきかもしれません。
PlantUML は様々なシステムでインストールされており、インストール時に発生したマイナーな問題がユーザから報告されることがあります。
こちらのページをご覧になれば、何が誤っているか手引きを受けられるかもしれません。
Graphvizについての詳細は、
こちらをご覧ください。
以下のバージョンはテスト済みで、動作することが確認されています:
- 2.26.3
- 2.28
- 2.30.1
- 2.34
- 2.36
- 2.38
- 2.44
- 9.0.0
- 10.0.1
バージョン2.39から2.42は
PlantUMLとあまりうまく動作しないことに 注意してください。
バージョン2.44では、Windows上では、インストールを確定するために、
dot -c
をコマンドラインで実行する必要があるかもしれません。
dot -c
Graphvizをご自身でコンパイルされる場合、PlantUMLで動作させるために
libexpatでビルドする必要があります。
Google Trendsは前向きな傾向です。そして、
PlantUMLに関する本もいくつかあります。つまり、成熟していると言えるでしょう。
PlantUMLは
継続的インテグレーションの考え方で開発されているので、頻繁に新規のリリースが行われ、(理想的には)後方互換性も保たれています。
PlantUML.jarというファイルはその都度変更されますが、ずっと同じファイル名のままです。
使用している正確なバージョンを知りたい場合は、コマンドラインで次のように入力してください:
java -jar plantuml.jar -version
もしくは、次の特別なダイアグラム記述を使用してください:
@startuml
version
@enduml
新しいバージョンがダウンロードできるかどうかは、
ダウンロードページを確認してください。
また、以下のRSSを購読することもできます。
また、次のコマンドを使用することもできます。
java -jar plantuml.jar -version
または、次の特別なダイアグラム記述を使用してください。
@startuml
version
@enduml
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
フラグを入力するか、
ANT タスクにて
format="eps"
を指定してください。
You can use the ``-teps`` flag in the command line, or ``format="eps"`` in [the ANT task](ant).
WARNING
This translation need to be updated. WARNING
PlantUMLは
GPLライセンスの下で配布されています。
次のコマンドラインオプションを使ってライセンスを出力することができます。
java -jar plantuml.jar -license
もしくは次の特別なダイアグラムを使用してください。
@startuml
license
@enduml
以下のライセンスも利用可能です:
これらのバージョンには、いくつかの機能(例えば
DITAA)が含まれていません。しかしUMLダイアグラムの生成に関しては100%可能です。
これらのバージョンでライセンスを出力するには、次のコマンドラインオプションを使用します:
java -jar plantuml.jar -license
もしくは、特別なダイアグラムを使用することができます:
@startuml
license
@enduml
いいえ、いずれも適用されません。
PlantUMLを
実行して生成した画像は、そのフォーマット(PNG, SVG...)にかかわらず、対応するソースコード(つまり、PlantUML言語のテキストによる記述)の作成者の所有物となります。
PlantUMLを
実行して生成した画像は、「対象著作物(covered work)」とは
みなされません。それらは自由に使用することができます。
生成された画像を使用する際に、GPL/LGPL/ASL/EPL/MITいずれのライセンスに言及する必要もありません。また、PlantUMLによって生成されたことを明示していただくとPlantUMLチームは喜びますが、これは必須の要求事項ではありません。
例外として、PlantUML言語で書かれたテキストに何らかのライセンス(GPL/LGPL/ASL/EPL/MITなど)が適用されている場合、論理的には生成された画像もそのライセンスの対象となります。
Javaのソースコードとjarファイルに手を加えていない限り、他のクローズドなソフトウェアにPlantUML.jarを組み込むことができます。
唯一の制限事項は、ソフトウェアがPlantUMLを使用していてPlantUMLがLGPLの下で配布されているということを、そのソフトウェアのライセンスもしくはドキュメンテーション中に表示する必要があるということです。
それ以外の制限事項は無く、そのソフトウェアを販売して対価を得ることも可能です。(しかしながら、その場合でも
寄付は歓迎します:-)
)
PlantUML記法自体にはライセンスはありません。つまり、誰でも使うことができます。
コード中のコメントとしてPlantUMLを使用することができます。
そのコメントはあなた自身の所有物となります。それらは「対象著作物(covered work)」とはみなされず、GPL/LGPL/APL/EPL/MITライセンスの対象でもありません。
実装されたもの(つまり、PlantUMLのプログラム)のみがGPL/LGPL/ASL/EPL/MITライセンスの対象となっています。一方で、PlantUMLのウェブサイトで公開されている文書類(使用例や注意事項など)は、著作権で保護されています。しかし、オリジナルのドキュメンテーションを作ることは可能です。
PlantUMLは
Graphvizを使用してダイアグラムを生成しています。PlantUMLは
dotプログラムを実行し、
dotにより生成されたSVGデータを取得します。
このメッセージは、PlantUMLが
dotプログラムから、空のSVGデータを受け取ったためUMLダイアグラムの生成に失敗した場合に表示されます。これにはいくつかの理由が考えられます。
- Graphvizのインストールに問題があった場合。クラス一つだけなどの簡単なダイアグラムの生成を試してみてください。
- Graphvizのバージョンが古すぎて、PlantUMLから渡された情報を処理できなかった場合。
testdot
コマンドでバージョンを確認してください。
- ダイアグラムが複雑すぎる場合。
- PlantUML and/or dotのバグ。
java.lang.NoClassDefFoundError: Could not initialize class net.sourceforge.plantuml.ugraphic.UFont
というエラーメッセージが表示された場合、それは、サーバーにフォントがインストールされていないことを意味していると思われます。
その場合、システムに
fontconfig
を追加することで解決できます:
sudo yum install fontconfig
または
sudo apt-get install fontconfig
をインストールする必要があるかもしれません。
ttf-droid
PlantUMLをグラフィック機能の無いLinuxサーバーで実行すると、何らかのエラーが表示される場合があります:
- Can't connect to X11 window
- X11 connection rejected because of wrong authentication.
- HeadlessException
基本的にこれは、PlantUMLがグラフィック関連のリソースを必要としていることが原因です(
詳しくはこちら)。
PlantUMLをheadlessモードに設定するには
-Djava.awt.headless=true
フラグを使用してください。
例:
/usr/bin/java -Djava.awt.headless=true -jar /data/PlantUml/plantuml.jar ...
If you see a similar message on MacOS Ventura after running
plantuml
with no arguments, this is a
known issue but does not appear to indicate a problem since sub-commands (like
-gui
) do work.
WARNING
This translation need to be updated. WARNING
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:
- JavaForOSXというパッケージをダウンロードし、インストールします。
AptanaStidio3.ini
というファイルを探します。デフォルトでは次のディレクトリにあります: /Applications/Aptana Studio 3/AptanaStudio3.app/Contents/MacOS
-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)"
設定に応じて、次のフラグを試してみてください。
-Djava.awt.headless=true
.
例:
/usr/bin/java -Djava.awt.headless=true -jar /path/to/plantuml.jar ...
短い回答: ダイアグラムの開始には
必ず @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○○を使用してください。
現在、対応に向けて
取り組んで います。
コマンドラインで
-cypher
オプションを使用すると、通常の画像ファイルの代わりに
.preproc
ファイルを生成します。
生成された
.preproc
ファイルは、入力されたダイアグラムに似ていますが、すべての単語(PlantUML言語のキーワードを除く)がランダムな文字列に置き換えられています。
-cypher
オプションを付けて何度か実行すると分かるように、毎回異なるテキストが生成されます。
また、この変換を行っている
Cypher.javaを見ると、元のダイアグラムを復元するようなバックドアが存在しないことを確認できると思います。
元のダイアグラムで何か問題が発生する場合、変換されたファイルでも同じ問題が発生することが期待できます。
変換後のファイルは全く無意味なものなので、安心して私たちに送ってください。あなたが元々何を作っていたのかを推測する手段は、私たちにはありません。
しかし、問題を再現して修正することができれば、元の(機密情報を含む)ダイアグラムでも問題が解消するでしょう。
WARNING
This translation need to be updated. WARNING
その場合には、この
フォーラム で質問してみてください。
きっと誰かがあなたの質問に回答してくれるでしょう!