SlideShare a Scribd company logo
4
Most read
5
Most read
7
Most read
PlantUML Plugin
01* project team
自己紹介
ほそあい しんたろう
細合 晋太郎
2018年 Change Vision入社、4年目。今年で40。趣味はもの作り、読書、ダイビング、キャンプ
以前は大学で特任教員したり博士課程で漂いながら、主に組込み向けのモデリングの研究や教育に従事
作ったプラグイン
・m2tプラグイン:コード生成プラグイン(LED-CampのMDD教材)
・Cリバース(非公開):数十万LoCのCからクラス図、コールフロー生成(インターン)
・PlantUML Plugin:今回のこれ。
・Pair Modeling Plugin(監修):実質バイトさん任せ。
・箱庭Config:組込み・IoTシミュレータ“箱庭”用の設定ファイル生成
・その他、自分の作業効率化や、頼まれ系で細々と
vs
3
pros
cons
PlantUML
pros
cons
トップダウンで統合されたモデル ボトムアップでコードに密着したモデル
直観的にモデルが描ける
ガイドやサジェストで綺麗に早く書ける
モデルの整合性が保たれる
UML2.4 準拠
バージョン管理も行いやすい
レイアウトを考えなくてもいい
UMLに縛られず何でも描ける
無償
バージョン管理と相性が良くない
複数人での編集が行いづらい
有償
思った通りの図にならない
モデルの整合性が保たれない
UML仕様に準拠していない
❤
常時同期ではないので、互いのモ
デルを上書きしてしまうことがある
Textual Modeling / Graphical modeling
4
Graphical :
位置を扱える。ノードの繋ぎ変えが容易。全
体俯瞰が行いやすい
Textual :
リネームや並び替えなどの編集が容易。テ
キスト関連のツール(エディタ, awk, sed,
grep, gitなど)の恩恵を受けられる
一方が優れている訳ではなく、
使い分けが重要。
行き来できると両方のメリットが得られる。
XText + Sirius連携の例
textual model graphical model
use case
5
Release
PlantUML
Code
要件出し、ユースケース
アーキテクチャ設計等、
モデル上で練る工程はastahで
要求分析/外部設計
PlantUMLモデルが
ゴチャついてきたら、
astahに戻って再整理
リリース毎に成形して、
ドキュメント化
次期バージョン向けて
設計見直し
再設計
Diff取ってコードに反映
コードとPlantUMLは常に同期
6
astah*
PlantUML
Plugin
plantUML editor
plantUML preview
validation
status
plantUML → astahへの変換
astahで現在開いている図から
plantUMLへの変換
DEMO
PlantUML – astah* 対応表
7
Plant UML astah
シーケンス図 シーケンス図
クラス図 クラス図
アクティビティ図 アクティビティ図
ステートマシン図 ステートマシン図
ユースケース図 ユースケース図
ER図 ER図
オブジェクト図 クラス図
マインドマップ マインドマップ
コンポーネント図 コンポーネント図
配置図 配置図
アーキテクチャ図 クラス図?
Plant UML astah
仕様及び記述言語 (SDL) アクティビティ図?
WBS図(作業分解図) マインドマップ?
JSON data クラス図?
YAML data クラス図?
Network diagram (nwdiag) ―
ワイヤーフレーム ―
Ditaa ―
ガントチャート ―
AsciiMath、JLaTeXMath ―
タイミング図 ―
対応済み※ 対応予定 対応不可
対応可
凡例
※試験実装のためすべての表記には対応していません。
利用事例
● Excel仕様書からインポート ● astahでAPIのデータ構造の設計・
分析、plantuml → protocol buffer
テキスト加工
protoc
text加工でprotobuf形式に変換
モデルーテキストの双方向変換ができると、テキスト芸で大幅に省力化できる
しくみ
9
map
UMLBlock
when
XXDiagramC
onverter
XXDiagramC
onverter
XXDiagramC
onverter
astah model
plant
diagram
※一部省略しています。実際のクラス階層は
もっと深く、数も多いです。
Astah model
forEach
Diagram
when
XXDiagramC
onverter
XXDiagramC
onverter
ToPlantConv
erter
StringBuffer
Plant UML
Plant UML
KotlinでPlugin
10
• Javaの痒い所を全部掻いてくれるような言語仕様。Javaとの親和性も高い。
• 型Switch(when式)がモデルのような型階層が
深いものを扱う時にとても便利
• 強力な型推論、非Null、Immutableを半強制される安心感。エルビス式
• Streamがとても簡潔に書け、ラムダも扱いやすい。itも楽。
Stream.of()しなくても、Collection系はそのままfilterとかmapとか書ける。
• 便利関数がめっちゃ追加されている。レシーバ関数も便利。
• 拡張関数で自分でもめっちゃ追加できる。追加しすぎると訳分らなくなる。
val reader = SourceStringReader(text)
reader.blocks.map { it.diagram }.forEachIndexed { index: Int, diagram ->
when (diagram) {
is SequenceDiagram -> ToAstahSequenceDiagramConverter.convert(diagram, index)
is ClassDiagram -> ToAstahClassDiagramConverter.convert(diagram, reader, index)
else -> {}
private fun IClass.connectedStereotypedClass(stereoType: String) =
this.attributes.map { it.type }.filter { it.stereotypes.contains(stereoType) }
• Collection.filterIsInstance<T>:(特定の型だけ通す)、String.isNullOrBlank / Empty() null, 空文字、空白の判別,
let{}:単体map, also{}:ついでになんかする,
?:
11
astah pair-
modeling
Plugin
DEMO
projectEditUnit
projectEditUnit
projectEditUnit
ProjectEditUnit
ProjectEventListener
Pub-Sub Broker
(MQTT)
map
@Serializable
ModifyData
publish subscribe
create
modify
delete
sync
複数のastah間で作業を同期するプラグイン
• API.projectAccessor.addProjectEventListenerで全ての変更を監視
• 変更毎にデータクラスを用意しておきシリアライズして、MQTTで送信
• 受信側はデータクラスを復元し、その情報を元に操作を復元

More Related Content

PDF
ドキュメントシステムはこれを使え2015年版
PPTX
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
PPTX
PCIDSSで学ぶNeuVectorの基礎(Kubernetes Novice Tokyo #21 発表資料)
PPTX
エッジコンピューティングで実現できる活用シナリオ3選
PPTX
Telemetry事始め
PPTX
LiBRA 09.2021 / 営業向け講演
PDF
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
PPTX
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
ドキュメントシステムはこれを使え2015年版
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
PCIDSSで学ぶNeuVectorの基礎(Kubernetes Novice Tokyo #21 発表資料)
エッジコンピューティングで実現できる活用シナリオ3選
Telemetry事始め
LiBRA 09.2021 / 営業向け講演
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)

What's hot (20)

PDF
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
PPTX
Java8勉強会
PDF
Redmineの情報を自分好みに見える化した話
PDF
IIJmio meeting 25 スマートフォンはなぜ「つながらない」のか
PDF
とあるメーカーのRedmine活用事例
PDF
2023年はTiDBの時代!
PDF
NETCONFとYANGの話
PDF
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
PDF
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
PPTX
スキトラ Spring + mybatis
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
PPTX
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
PPTX
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
PDF
kube-system落としてみました
PDF
Kubernetes雑にまとめてみた 2019年12月版
PDF
Cassandraとh baseの比較して入門するno sql
PDF
[GKE & Spanner 勉強会] GKE 入門
PDF
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
Monitoring and observability
PDF
超簡単! Bitnami RedmineをWindowsにインストール
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Java8勉強会
Redmineの情報を自分好みに見える化した話
IIJmio meeting 25 スマートフォンはなぜ「つながらない」のか
とあるメーカーのRedmine活用事例
2023年はTiDBの時代!
NETCONFとYANGの話
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
スキトラ Spring + mybatis
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
kube-system落としてみました
Kubernetes雑にまとめてみた 2019年12月版
Cassandraとh baseの比較して入門するno sql
[GKE & Spanner 勉強会] GKE 入門
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
Monitoring and observability
超簡単! Bitnami RedmineをWindowsにインストール
Ad

Similar to PlantUML Plugin 紹介スライド (19)

PDF
How should designers approach MCP? Findy Akihiro Mukai
PDF
子供達と プログラミングをはじめよう
PPTX
Basic explanation of Generative adversarial networks on MNIST
PDF
ChatGPTの仕組みの解説と実務でのLLMの適用の紹介_latest.pdf
PDF
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
PDF
3 d printer_ivent
PDF
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
PDF
Project 15 - Algyan May 2022.pdf
PPTX
M5Stackでプロトタイプしてデモ製品を試作した話
PDF
データドリブン経営のメトリクス分析 AARRR!モデルの紹介
PDF
分かりやすく、使いやすいデザインを生み出す工夫 先生:池田 拓司
PPTX
モデリングを使って.pptx
PDF
【連続講座1】デザインパターンを学び、ソフトウェア設計に生かそう(Adapter・Factory Method・Singleton).pdf
PPTX
フルリモート2ヶ月 やって編み出した コミュニケーションのコツ
PPTX
LT.22 機械学習におけるPDCAを回せる環境構築の話
PDF
M5Stack Osaka 2025 UIFlow!! UIFlow!! UIFlow!! UIFlow!!
PDF
初心者向けSpigot開発
PPTX
WinFormsからWPFへ
PDF
第15回ピク活IT勉強会 ピクト図解入門(01 ピクト図解入門 20140328_公開用)
How should designers approach MCP? Findy Akihiro Mukai
子供達と プログラミングをはじめよう
Basic explanation of Generative adversarial networks on MNIST
ChatGPTの仕組みの解説と実務でのLLMの適用の紹介_latest.pdf
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
3 d printer_ivent
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
Project 15 - Algyan May 2022.pdf
M5Stackでプロトタイプしてデモ製品を試作した話
データドリブン経営のメトリクス分析 AARRR!モデルの紹介
分かりやすく、使いやすいデザインを生み出す工夫 先生:池田 拓司
モデリングを使って.pptx
【連続講座1】デザインパターンを学び、ソフトウェア設計に生かそう(Adapter・Factory Method・Singleton).pdf
フルリモート2ヶ月 やって編み出した コミュニケーションのコツ
LT.22 機械学習におけるPDCAを回せる環境構築の話
M5Stack Osaka 2025 UIFlow!! UIFlow!! UIFlow!! UIFlow!!
初心者向けSpigot開発
WinFormsからWPFへ
第15回ピク活IT勉強会 ピクト図解入門(01 ピクト図解入門 20140328_公開用)
Ad

More from ChangeVision (11)

PPTX
コミュニケーション図をシーケンス図に変換するスクリプトを3時間で書いた話
PDF
テレワーク下の要件定義(RDRA:ラドラ
PPTX
astah*関西勉強会7/14
PDF
koredake modeling accelerates agile
PDF
koredake modeling
PDF
Modeling by Verb
PPTX
modeling-by-verb
PDF
Astah professional スタートガイド
PDF
Astah UML スタートガイド
PPTX
Astah Plug-ins 作ろう!試そう!プラグイン!
PDF
Astah Community スタートガイド
コミュニケーション図をシーケンス図に変換するスクリプトを3時間で書いた話
テレワーク下の要件定義(RDRA:ラドラ
astah*関西勉強会7/14
koredake modeling accelerates agile
koredake modeling
Modeling by Verb
modeling-by-verb
Astah professional スタートガイド
Astah UML スタートガイド
Astah Plug-ins 作ろう!試そう!プラグイン!
Astah Community スタートガイド

PlantUML Plugin 紹介スライド