plantuml について
PlantUMLの図を作成・変換するスキルです。ソフトウェアやシステムを文書化する人向けに、構文検証、画像出力、Markdown処理も提供します。
主な機能
- 01自然言語から図を作成
- 02ソースコード構造をアーキテクチャ図に変換
- 03.pumlをPNGまたはSVGに変換
- 04Markdown内の図を抽出・変換
- 05PlantUML構文の検証
活用シーン
- 01アプリケーション構成の図示
- 02Markdown内の図を画像として出力
- 03.pumlファイルの構文確認
- 04ConfluenceやNotion向けの図の準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ spillwavesolutions/ plantuml --skill plantumlインストール後、Claude Code で/plantumlを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
CHANGELOG.mdREADME.mdFINAL_SUMMARY.mdPDA_OPTIMIZATION_SUMMARY.mdSKILL-PDA.md.claude-plugin/plugin.jsonexamples/test_linked_puml.mdtest_resilient.mdexamples/fastapi/README.mddeployment-diagram.pumlexamples/python-etl/architecture-diagram.pumlexamples/spring-boot/README.mdcomponent-diagram.pumldeployment-diagram.pumlsequence-diagram.pumlreferences/archimate_diagrams.mdactivity_diagrams.mdclass_diagrams.mdcomponent_diagrams.mdcommon_format.mdcommon_syntax_errors.mdditaa_diagrams.mdgantt_diagrams.mdobject_diagrams.mdmindmap_diagrams.mddeployment_diagrams.mdnetwork_diagrams.mdjson_yaml_diagrams.mder_diagrams.mdsequence_diagrams.md詳細
PlantUML の図の生成と変換
目次
目的
このスキルでは、PlantUML の図の作成と変換に関する包括的なワークフローを利用できます。PlantUML は、シンプルで直感的な構文からプロフェッショナルな図を生成する、テキストベースの作図ツールです。
主な機能:
- 自然言語の説明から図を作成する
- ソースコードをアーキテクチャ図に変換する(Spring Boot、FastAPI、Python ETL、Node.js、React)
- 単独の
.pumlファイルを PNG または SVG 画像に変換する - Markdown から
pumlコードブロックを抽出し、画像に変換する - Markdown 内のリンクされた
.pumlファイルを処理する() - 変換せずに PlantUML の構文を検証する
- 公開用に Markdown の図を画像リンクに置き換える(Confluence、Notion)
このスキルを使用する場面
WikiTicket、GitHub wiki、アーキテクチャドキュメント、チュートリアル、要件には、既定で design-doc-mermaid を使用します。 GitHub はフェンス付き Mermaid(フローチャート、シーケンス、クラス、ER、状態、C4)を描画します。このスキルは必要に応じて使用します。
次の場合に有効にしてください:
- Salt のワイヤーフレーム/UI モック
- UML のユースケース、タイミング図、ArchiMate
- nwdiag ネットワーク、WBS、JSON/YAML ツリー
.pumlファイルから PNG または SVG への変換(常に必要です。GitHub wiki は PlantUML ソースを描画しません)- PlantUML のフェンスまたはリンクされた
.pumlファイルを含む Markdown ファイル - Confluence または Notion への画像エクスポート(先に描画してからアップロードします)
- PlantUML の構文検証
- すでに
.pumlソースがあり、画像を作成したいユーザー
WikiTicket の設計ドキュメントでは、Mermaid で対応できない場合、またはユーザーが PlantUML を指定した場合を除き、クラス図、ER 図、状態図、シーケンス図、C4 図を使用しないでください。
GitHub wiki: PlantUML のフェンスだけを表示する状態にしないでください。PNG または SVG を描画し、docs/diagrams/ にコミットして、画像にリンクし、wiki ページと一緒にアップロードしてください。
Confluence/Notion: PlantUML(および design-doc-mermaid 経由の Mermaid)を PNG または SVG に描画し、両方をアップロードしてください。references/wiki-ticket-integration.md を参照してください。
前提条件
図を作成する前に、PlantUML のセットアップを確認してください:
python scripts/check_setup.py
必須コンポーネント:
| コンポーネント | 目的 | インストール |
|---|---|---|
| Java JRE/JDK 8+ | 実行環境 | https://www.oracle.com/java/technologies/downloads/ |
| plantuml.jar | 図の生成ツール | https://plantuml.com/download(`~/plantuml.jar` に配置するか、PLANTUML_JAR を設定) |
| Graphviz(任意) | 複雑なレイアウト | https://graphviz.org/download/ |
図の作成
図の種類の識別
ユーザーの意図に基づいて、適切な図の種類を識別します。
WikiTicket/GitHub wiki のデフォルトは design-doc-mermaid です。 以下のシーケンス、クラス、アクティビティ、状態、ER、コンポーネントの各行は、ユーザーが PlantUML を指定した場合、または既存の .puml ファイルを変換する場合にのみ使用してください。
必ず PNG または SVG を出力してください。PlantUML のコードフェンスだけを表示として残さないでください。
| ユーザーの意図 | 図の種類 | リファレンス |
|---|---|---|
| UI モック、画面スケッチ | Salt ワイヤーフレーム | references/wireframes_salt.md |
| アクターと目標 | ユースケース | references/use_case_diagrams.md |
| クロック、波形 | タイミング | references/timing_diagrams.md |
| エンタープライズ層 | ArchiMate | references/archimate_diagrams.md |
| ネットワークラック | nwdiag | references/network_diagrams.md |
| 作業分解 | WBS | references/wbs_diagrams.md |
| 時系列のインタラクション(ユーザーが PlantUML を指定した場合のみ) | シーケンス | references/sequence_diagrams.md |
| クラスによるシステム構造(ユーザーが PlantUML を指定した場合のみ) | クラス | references/class_diagrams.md |
| ワークフロー、意思決定フロー(ユーザーが PlantUML を指定した場合のみ) | アクティビティ | references/activity_diagrams.md |
| オブジェクトの状態と遷移(ユーザーが PlantUML を指定した場合のみ) | 状態 | references/state_diagrams.md |
| データベーススキーマ(ユーザーが PlantUML を指定した場合のみ) | ER(エンティティ関係) | references/er_diagrams.md |
| プロジェクトのタイムライン | ガント | references/gantt_diagrams.md |
| アイデアの整理 | マインドマップ | references/mindmap_diagrams.md |
| システムアーキテクチャ(ユーザーが PlantUML を指定した場合のみ) | コンポーネント | references/component_diagrams.md |
| 全 19 種類 | ナビゲーションハブを参照 | references/toc.md |
| WikiTicket/GitHub wiki/Confluence | 画像のエクスポートルール | references/wiki-ticket-integration.md |
構文リソース:
references/toc.md:すべての図の種類にリンクするナビゲーションハブreferences/common_format.md:共通要素(区切り文字、メタデータ、コメント、注記)references/styling_guide.md:視覚的なカスタマイズに使う最新の<style>構文
堅牢なワークフロー(第一候補・推奨)
エラーから復旧できる信頼性の高い図の生成には、次の 4 ステップの堅牢なワークフローに従ってください。
ステップ 1:図の種類を識別してリファレンスを読み込む
- ユーザーの意図から図の種類を識別します
- 構文ガイドとして
references/[diagram_type]_diagrams.mdを読み込みます - 判断が難しい場合は
references/toc.mdを参照します
ステップ 2:構造化された命名規則でファイルを作成する
./diagrams/<markdown_name>_<num>_<type>_<title>.puml
例:./diagrams/architecture_001_sequence_user_auth.puml
ステップ 3:エラー処理を行いながら変換する(最大 3 回まで再試行)
変換に失敗した場合:
- エラーを分類するために
references/troubleshooting/toc.mdを確認します - 該当するガイド
references/troubleshooting/[category]_guide.mdを読み込みます - 図の種類に応じた
references/common_syntax_errors.mdを確認します
ステップ 4:検証して統合する
- 画像ファイルが存在することを確認します
- 画像リンクを追加します:
 - 今後の編集に備えて .puml ソースファイルを保持します
ドキュメント全文: references/workflows/resilient-execution-guide.md
構文クイックリファレンス
共通要素:
- 区切り文字:
@startuml/@enduml(必須) - コメント:
' Single lineまたは/' Multi-line '/ - 関係:
->(実線)、-->(破線)、..>(点線) - ラベル:
A -> B : Label text
最小限の例(構文の詳細は references/[type]_diagrams.md を参照してください):
' Sequence: references/sequence_diagrams.md
@startuml
Alice -> Bob: Request
Bob --> Alice: Response
@enduml
' Class: references/class_diagrams.md
@startuml
class Animal { +move() }
class Dog extends Animal { +bark() }
@enduml
' ER: references/er_diagrams.md
@startuml
entity User { *id: int }
entity Post { *id: int }
User ||--o{ Post
@enduml
ソースコードを図に変換する
examples/ ディレクトリには、一般的なアプリケーションアーキテクチャを変換するための、言語別テンプレートが含まれています。
| アプリケーションの種類 | ディレクトリ | 主な図 |
|---|---|---|
| Spring Boot | examples/spring-boot/ | デプロイメント、コンポーネント、シーケンス |
| FastAPI | examples/fastapi/ | デプロイメント、コンポーネント(非同期ルーター) |
| Python ETL | examples/python-etl/ | Airflow を使用したアーキテクチャ |
| Node.js | examples/nodejs-web/ | Express/Nest.js コンポーネント |
| React | examples/react-frontend/ | SPA デプロイメント、コンポーネントアーキテクチャ |
ワークフロー:
- アプリケーションの種類を特定します
examples/[app-type]/の例を確認します- コード構造を図のパターンに対応付けます
.pumlの例をコピーして調整します- 意味を明確にするため、
references/unicode_symbols.mdの Unicode 記号を使用します
図を画像に変換する
単独の .puml ファイルを変換する
# Convert to PNG (default)
python scripts/convert_puml.py diagram.puml
# Convert to SVG
python scripts/convert_puml.py diagram.puml --format svg
# Specify output directory
python scripts/convert_puml.py diagram.puml --format svg --output-dir images/
Markdown から抽出して変換する
Confluence/Notion では重要です: Markdown に PlantUML 図が含まれている場合は、アップロードの前に必ず最初に実行してください。
# Process embedded ```puml blocks AND linked  files
python scripts/process_markdown_puml.py article.md
# Convert to SVG format
python scripts/process_markdown_puml.py article.md --format svg
# Validate syntax only (for CI/CD)
python scripts/process_markdown_puml.py article.md --validate
出力:
article_with_images.md:画像リンクを含む Markdownimages/:生成された画像のディレクトリ
IDE に適したワークフロー: 開発中は図を .puml ファイルとして保持して IDE でプレビューし、公開時に変換します。
コマンドラインから直接実行する
# Basic conversion
java -jar ~/plantuml.jar diagram.puml
# SVG with custom output
java -jar ~/plantuml.jar --svg --output-dir out/ diagram.puml
# Batch conversion
java -jar ~/plantuml.jar "**/*.puml" --svg
コマンドラインのオプションについて詳しくは、references/plantuml_reference.md を参照してください。
ベストプラクティス
図の品質:
- 図の内容が分かる説明的なファイル名を使用します
- 明確さを高めるために、
'を使ってコメントを追加します - 標準的な UML 表記に従います
- 複雑さを加える前に、段階的にテストします
形式の選択:
- PNG:Web 公開向け、ファイルサイズが小さく、解像度は固定
- SVG:ドキュメント向け、拡大縮小可能で、ハイパーリンクをサポート
スタイル: references/styling_guide.md の最新の <style> 構文を適用します。
@startuml
<style>
classDiagram {
class { BackgroundColor LightBlue }
}
</style>
' diagram content
@enduml
テーマ: !theme cerulean(ほかに bluegray、plain、sketchy、amiga)
Unicode 記号: references/unicode_symbols.md の記号を使用して、意味を補足します。
node "☁️ AWS Cloud" as aws
database "💾 PostgreSQL" as db
トラブルシューティング
簡易診断:
- 構文を確認します:
java -jar plantuml.jar --check-syntax file.puml - エラーの種類を特定します
- トラブルシューティングガイドを読み込みます:
references/troubleshooting/toc.md
よくある問題:
| 問題 | 解決策 |
|---|---|
| "plantuml.jar not found" | https://plantuml.com/download からダウンロードし、PLANTUML_JAR を設定します |
| "Graphviz not found" | https://graphviz.org/download/ からインストールします |
| "Syntax Error" | 区切り文字の対応を確認し、references/common_format.md を参照します |
| "Java not found" | Java JRE/JDK 8 以降をインストールし、java -version で確認します |
詳細なガイド(215 件以上のエラーを記載):
references/troubleshooting/toc.md- エラーの判断ツリーを備えたナビゲーションハブreferences/troubleshooting/[category]_guide.md- エラーの種類ごとにまとめた 12 のガイド
参考資料
構文の基本資料
| リソース | 目的 |
|---|---|
references/wiki-ticket-integration.md | WikiTicket の残りの種類、常に PNG/SVG を使用、Confluence へのアップロード |
references/toc.md | 19 種類すべての図を網羅したナビゲーションハブ |
references/common_format.md | 共通要素(区切り文字、メタデータ、コメント) |
references/styling_guide.md | CSS に似たルールを使った最新の <style> 構文 |
references/plantuml_reference.md | インストール、CLI、トラブルシューティング |
トラブルシューティングガイド
| リソース | 対象範囲 |
|---|---|
references/troubleshooting/toc.md | エラーの判断ツリーを備えたナビゲーションハブ |
references/troubleshooting/installation_setup_guide.md | セットアップの問題 |
references/troubleshooting/general_syntax_guide.md | 構文エラー |
references/troubleshooting/[diagram_type]_guide.md | 図の種類に固有のエラー |
補足資料
| リソース | 目的 |
|---|---|
references/unicode_symbols.md | 意味を補足する Unicode 記号 |
examples/[framework]/ | コードから図への変換パターン |
概要
- セットアップを確認:
python scripts/check_setup.py - 種類を確認:
references/toc.mdから始めます - 構文を学ぶ:
references/[diagram_type]_diagrams.mdを開きます - スタイルを適用:
references/styling_guide.mdを使用します - 記号を追加:
references/unicode_symbols.mdを使用します - ファイルを変換:
scripts/convert_puml.py - Markdownを処理:
scripts/process_markdown_puml.py - トラブルシューティング:
references/troubleshooting/toc.md
対応する図:
- UML:シーケンス図、クラス図、アクティビティ図、状態図、コンポーネント図、配置図、ユースケース図、オブジェクト図、タイミング図
- UML以外:ER図、ガントチャート、マインドマップ、WBS、JSON/YAML、ネットワーク図、Archimate、ワイヤーフレーム