今回ちょっとSlackBotを作成する機会があったので、以前紹介したPlantUMLを使って、シーケンス図を描いてみたいと思います。
PlantUMLについては過去記事を参照してください。
題材とするプログラム
今回はSlackに直近1日以内にアップロードされた添付ファイルを取得して、ローカルディレクトリに格納するプログラムを書こうと思っていますので、ざっくり以下のような処理をシーケンス図にしてみたいと思います。
【アクター】
- プログラム
- Slack
- ローカルディレクトリ
【処理内容】
① プログラムがSlackに条件が一致する添付ファイルがあるか確認する
② Slackから条件に一致した添付ファイルを取得する
③プログラムがファイルをストレージに格納する
シーケンス図の書き方
シーケンス図の書き方について簡単に説明します。シーケンスはオブジェクト間のやり取りを→で表します。
凡例は以下の通りです。
記述 | 意味 | 書き方例 |
---|---|---|
-> | 同期処理 | A -> B |
<-- | 同期応答 | A <-- B |
->> | 非同期処理 | A ->> B |
<<-- | 非同期応答 | A <<-- B |
シーケンスの後にメッセージを入れることができます。
例えば、A -> B : 挨拶する
・A <-- B : 挨拶を返す
というようにそのシーケンスでは何を行っているかを書くことができます。
PlantUMLでは以下のように表現されます。
実際に描いてみる
それでは先ほど載せた処理を元にPlantUMLでシーケンス図を書いていきます。
まず初めにPlantUMLの最初と最後は@startuml
で始まって、@enduml
で終わりにします。
@startuml @enduml
次は処理を書いていきます。
【処理内容:再掲】
① プログラムがSlackに条件が一致する添付ファイルがあるか確認する
② Slackから条件に一致した添付ファイルを取得する
③プログラムがファイルをストレージに格納する
①プログラムがSlackに条件が一致するデータがあるか確認するは以下のように書きます。
プログラム -> Slack :条件に一致する添付ファイルを探す
②Slackから条件に一致したファイルを取得するは以下のように書きます。
プログラム <-- Slack : 条件に一致する添付ファイルを取得する
③プログラムがファイルをストレージに格納するは以下のように書きます。
プログラム -> ローカルディレクトリ : ファイルを格納
それでは今までそれぞれ書いてきた内容を1つにしてみます。
@startuml プログラム -> Slack :条件に一致する添付ファイルを探す プログラム <-- Slack : 条件に一致する添付ファイルを取得する プログラム -> ローカルディレクトリ : ファイルを格納 @enduml
上記、PlantUMLで変換すると下記の通りになります。
このような形で簡単にシーケンス図を作ることができます。今回は結構雑なプログラムをシーケンス図にしましたが、しっかりしたシーケンス図書いたりループやand/or条件も表すことができるので、ちょっと頭の中の整理するときに書き出すのにもいいと思います。
公式サイトにも他に色々書き方があるので参考にしてみてください。他のUMLはまた別記事で描きたいと思います。
参考: