日々のつれづれ

不惑をむかえ戸惑いを隠せない男性の独り言

フロー図を描く、RからplantUMLへ

フロー図をRで描いていた時代

Rは統計解析用のアプリだけど、グラフィックが充実していて視覚的に楽しいグラフを描ける。それに甘んじてフロー図を描いていた。もともと複雑なフロー図を描くことがないので、これくらいのお手軽さは重宝していた。

最近になってフロー図をまた描き始めた

1年位前からフロー図を描く機会が増えてきた。
新しいことを覚えるおっくうさから、Rを引き続き使っていたのですが、フロー図が増えてくると描くためのテキストファイルを準備することが面倒になる。plotmat はオブジェクトの数だけの行列が必要で、ノードが増えると二乗で聞いてくる。
Rでフロー図を描いた理由は効率化で、当時、エクセル、パワポで閉口したマウス地獄から逃げるためでした。それが、ノードが増えて、Rが効率化の妨げになってくる。

マインドマップの利用

何かないかなあ、と探し始めたのが去年の秋。世の中、便利になったもので、いろいろ出てきました。
その中で試してよかったのが、マインドマップを使ったフロー図。CSVファイル → freemind → XMIND のコンボでした。詳しいことは、ネットにたくさん落ちてるので割愛しますが、割ときれいな図を描ける。
ただ、商用ライセンスとかの縛りがあって、プライベートで使えても、仕事ではつかえず。

UMLとの出会い

Process Flow Diagram のキーワードで検索すると出てくる、UML(Unified Modeling Language、統一モデリング言語)。あまりにヒットするので調べると、フロー図を描く機能が充実していることが分かった。
いや、便利な時代です。エディターだけでフロー図を描く時代。まっていました。

久しぶりに勉強する気が出てきました。plantUMLならmarkdownに埋め込めるようで、迷わず採用。

Rで描いた図をplantUMLで描く

Rでは2ステップでした。

  1. テキストファイルを準備
  2. Rでplotmat
最初 2番目 3番目 4番目
最初 0 0 0 0
2番目 1 0 0 0
3番目 1 0 0 0
4番目 0 0 1 0
最後 0 1 0 1

のファイルを

library(diagram)
x <- read.delim("test.txt")
plotmat(x,pos=c(1,2,1,1),box.type="rect",box.size=.1,box.prop=.5)

f:id:myopomme:20190630125529p:plain

する。

これをplantUMLで描くとどうなるか、

@startuml
title:流れ図
(*top) --> 最初
最初 --> 2番目
最初 --> 3番目
2番目 --> 4番目
3番目 --> 4番目
4番目 --> 最後
最後 --> (*)
@enduml

f:id:myopomme:20190630125802p:plain

コードの行数こそ増えたけど、テキストファイルを使わない。そして何より、すごく直感的。驚いた。