TSUBOCK★LABO-ツボックラボ-

とあるセキュリティエンジニアの技術メモブログ

MENU

PlantUMLでシーケンス図を描いてみる

今回ちょっとSlackBotを作成する機会があったので、以前紹介したPlantUMLを使って、シーケンス図を描いてみたいと思います。

PlantUMLについては過去記事を参照してください。

www.tsubock-lab.xyz

題材とするプログラム

今回はSlackに直近1日以内にアップロードされた添付ファイルを取得して、ローカルディレクトリに格納するプログラムを書こうと思っていますので、ざっくり以下のような処理をシーケンス図にしてみたいと思います。

【アクター】

  • プログラム
  • Slack
  • ローカルディレクトリ

【処理内容】

① プログラムがSlackに条件が一致する添付ファイルがあるか確認する

② Slackから条件に一致した添付ファイルを取得する

③プログラムがファイルをストレージに格納する

シーケンス図の書き方

シーケンス図の書き方について簡単に説明します。シーケンスはオブジェクト間のやり取りを→で表します。

凡例は以下の通りです。

記述 意味 書き方例
-> 同期処理 A -> B
<-- 同期応答 A <-- B
->> 非同期処理 A ->> B
<<-- 非同期応答 A <<-- B

シーケンスの後にメッセージを入れることができます。

例えば、A -> B : 挨拶するA <-- B : 挨拶を返すというようにそのシーケンスでは何を行っているかを書くことができます。

PlantUMLでは以下のように表現されます。

f:id:panda-loves-smile:20200712231427p:plain

実際に描いてみる

それでは先ほど載せた処理を元にPlantUMLでシーケンス図を書いていきます。

まず初めにPlantUMLの最初と最後は@startumlで始まって、@endumlで終わりにします。

@startuml

@enduml

次は処理を書いていきます。

【処理内容:再掲】

① プログラムがSlackに条件が一致する添付ファイルがあるか確認する

② Slackから条件に一致した添付ファイルを取得する

③プログラムがファイルをストレージに格納する

①プログラムがSlackに条件が一致するデータがあるか確認するは以下のように書きます。

プログラム -> Slack :条件に一致する添付ファイルを探す

②Slackから条件に一致したファイルを取得するは以下のように書きます。

プログラム <-- Slack : 条件に一致する添付ファイルを取得する

③プログラムがファイルをストレージに格納するは以下のように書きます。

プログラム -> ローカルディレクトリ : ファイルを格納

それでは今までそれぞれ書いてきた内容を1つにしてみます。

@startuml

プログラム -> Slack :条件に一致する添付ファイルを探す
プログラム <-- Slack : 条件に一致する添付ファイルを取得する
プログラム -> ローカルディレクトリ : ファイルを格納

@enduml

上記、PlantUMLで変換すると下記の通りになります。

f:id:panda-loves-smile:20200712231453p:plain

このような形で簡単にシーケンス図を作ることができます。今回は結構雑なプログラムをシーケンス図にしましたが、しっかりしたシーケンス図書いたりループやand/or条件も表すことができるので、ちょっと頭の中の整理するときに書き出すのにもいいと思います。

公式サイトにも他に色々書き方があるので参考にしてみてください。他のUMLはまた別記事で描きたいと思います。

参考:

PlantUML公式

PlantUML Cheat Sheet