OITA: Oika's Information Technological Activities

@oika 情報技術的活動日誌。

PlantUMLで画面遷移図を管理するための支援ツール「Transit UML」を作った

f:id:kd1:20211218160716p:plain

Transit UML というオンラインツールをリリースしました。無料で使えます。

Transit UML - Create Screen Tansition Diagrams using PlantUML

なにこれ

PlantUML の State Diagram の記法を利用すると、テキストとして画面遷移図を作成することができます。

このツールは、PlantUML の記法で作成した画面遷移図を複数の View に分割して管理・出力するためのものです。

なんのために

画面遷移図って、どうしてますか。

エクセル図形や diagrams.net でゴリゴリ作ると差分管理しづらいしメンテだるいし、やはりここはエンジニアらしくプレーンテキストで管理したい。

となると、Markdown エディタでの対応も多い PlantUML が良い。

State Diagram(状態遷移図)を使って画面遷移図を描くとこんな感じ。

hide empty description
skinparam state {
  BackgroundColor<<MODAL>> orange
  BackgroundColor<<GLOBAL>> #cccccc
}

state "スプラッシュ" as splash
state "ログイン" as login
state "サインアップ" as signup
state "パスワードリマインド" as reminder<<MODAL>>
state "メインメニュー" as main
state "ヘッダ" as header<<GLOBAL>>
state "メール送信" as sendmail
state "利用規約" as terms<<MODAL>>

[*] --> splash
splash --> login: 未ログイン
splash --> main: ログイン済
login --> main: ログイン
login --> signup: 新規登録
login --> reminder: パスワード再設定
signup --> sendmail: 登録
signup --> terms: 規約に同意する
sendmail --> login
header --> login: ログアウト

f:id:kd1:20211218171629p:plain

うむ良い感じだ、と思いきや、画面と遷移ルートが増えるにつれ、だんだんカオスになっていきます。

f:id:kd1:20211218171712p:plain

こうなると次は、見やすいサイズに分割して見れるようにしたい。
アカウント登録とログイン周りだけ、とか、レポート機能関係だけ、とか。

f:id:kd1:20211218171629p:plain
f:id:kd1:20211218172828p:plain

しかしこれ、まともにやると絶対嫌になりますよね。分割しても各遷移図で重複する範囲が出てくるし、そのときにあっちこっちに同じことを書くのは二重管理になる。

つまり、 全体構成を一元管理 しつつ、 必要に応じて分割出力 したい。

他にうまく画面遷移図を作れるツールはないかと思って調べると、たとえば UI Flows という記法とそれを使うguiflowsっていうツールがあったりしたが、根本的にこの点を解決してくれるものではなかったので、作りました。

使い方

  • UML 欄で全体構成を作成
    • UMLは、全体を以下の順に3セクションにまとめて記述する必要があります
      • ヘッダ: hide empty description など(省略可)
      • state 定義:state foo
      • 経路定義:foo --> bar
    • Reload UML で View 選択欄に反映

f:id:kd1:20211220132156p:plain

  • View 選択欄で View を追加・選択
  • States 欄で、この View に含める State を選択
    • Sync with links を選択した場合、Links での選択経路に含まれる State が自動で選択される
  • Links 欄で、この View に含める遷移経路を選択

f:id:kd1:20211220132102p:plain

  • Preview 欄に、選択中の View の遷移図と UML が出力される

f:id:kd1:20211220132044p:plain

  • その他
    • Export > Markdown で、 GitLab Wiki など、PlantUML 対応の Markdown で使用できる形で全 View を一括出力できる
    • Export > Project でエクスポートしておいて、Import > Project で次回利用が可能
    • Coverage から、全 View における各 Link の出現回数を確認できる

f:id:kd1:20211220132215p:plain

以上

まだまだ不便な点はありますが、とりあえず自分で使いたかった用途では使える形になったので公開しました。

現状、UMLの描画は PlantUML Web Server を使ってやってますが、ローカルサーバを使えるようにできたらいいかなとは思ってますー。