IT業界の研修や情報処理技術者試験等でよく見かけるシーケンス図ですが、実際の現場でも業務効率化のために用いられることが多いです。
この記事では以下のような悩みをお持ちの方に向けて、某IT企業にSE職として務め、普段の業務で頻繁にシーケンス図を使用する筆者が分かりやすく解説していきます。
- シーケンス図って何?
- シーケンス図が優れている点が知りたい
- シーケンス図を使って業務を効率化させたい
- シーケンス図の書き方が分からない
- ツールを使ってシーケンス図を書きたい
- 目次 -
Part 1: シーケンス図とは
シーケンス図とは、オブジェクト指向プログラミングにおいて、オブジェクト間の相互作用を示すための図の一種です。シーケンス図の特徴を解説します。
- ● 時間軸に沿ってオブジェクトの相互作用を表現するために使用されます。それぞれのオブジェクトは、シーケンス図上で縦に配置され、水平方向には時間の流れを示す矢印が描かれます。オブジェクト間のメッセージのやりとりやデータのやり取りを、矢印やライフライン(オブジェクトの生存期間を表す線)を使って示します。
- ● システム開発の設計過程で使用されるUML※の一種であり、一般的に詳細設計の工程で発生する成果物です。
- ● アプリケーションの設計工程以外にも、開発・保守・運用フェーズにおいても、オブジェクト間の相互作用を明確にするために広く使用されています。
- ● 実際のシステムに近い処理の概要や流れが記載されるため、システムを理解するために大変役立ちます。
※標準規格として作られた図の記法(モデリング言語)となり、2021年時点でシーケンス図を含む14種類の図が定義されています。
実際のシーケンス図は下のような図になります。
Part 2: シーケンス図のメリット
シーケンス図を用いることによるメリットを5つご紹介します。
シーケンス図は、オブジェクト間の相互作用を明確にするために使用されます。それぞれのオブジェクトの状態や振る舞いを理解することで、システム全体の機能や動作を把握することができます。
シーケンス図は、開発者やステークホルダー間でコミュニケーションを促進するためにも使用されます。図を見ることでシステムに詳しくない人でも理解しやすく、システムの概念や設計についての意見交換が容易になります。
シーケンス図は、システム全体の機能や動作を一覧するために使用されます。そのため、全体で見た場合にオブジェクト間の問題点を見つけやすく、修正を容易にすることができます。
シーケンス図は、システムの設計や開発において、開発者がシステム全体を把握するのにも役立ちます。そのため、設計や開発の効率化につながることがあります。
シーケンス図は、システムの設計や開発に関するドキュメントを作成するのに役立ちます。図を使用することで、システムの概念や設計を簡潔かつ明確に表現することができます。システムに詳しくない方も理解しやすいため、説明資料でシーケンス図は重宝します。
このようにメリットが複数あるシーケンス図ですが、唯一デメリットを挙げるとするならば、図の作成に少々手間がかかります。そのため、IT業界らしくコードを用いてもっと簡単にシーケンス図が書きたい!という方も一定数おられるかと思います。
そんな方のためにあるのがPlantUMLです。PlantUMLは、UMLの図を簡単かつ自動的に描画するためのオープンソースのツールです。PlantUMLは、コードを記述することによって、シーケンス図などのUML図を生成することができます。
PlantUMLのシーケンス図は、UMLのシーケンス図の構文に従って記述されます。たとえば、オブジェクトの作成やメッセージの送信などの操作は、単純なテキスト表現で表現することができます。
以下は、PlantUMLで記述されたシンプルなシーケンス図の例です。
@startuml
USER -> Server: アクセス許可を要求
Server -> USER: アクセス許可を返却
@enduml
USERとServerという2つのオブジェクトが、アクセス許可のやり取りをしています。このように、PlantUMLを使用することで、コードからUML図を自動的に生成することができます。
PlantUMLを使用したシーケンス図は簡単に書ける一方、可読性は低いです。図を用いて可読性のあるシーケンス図を書きたいけど、もっと簡単に書きたい、そんな方におすすめのシーケンス図作成ツールも後の章で解説しています。
Part 3: シーケンス図の記号と要素
ここまで、シーケンス図とはどういった図なのかその特徴、メリットを詳しく解説してきました。それでは、シーケンス図を実際に構成している基本的な要素や記号、制御構造を表現する「複合フラグメント」をご紹介します。
■構成要素
要素 | 記号 | 説明 | |
---|---|---|---|
ライフライン | 使用しているオブジェクトやクラスを表現します。 | ||
実行仕様 | ライフラインが実行状態であることを表現します。 | ||
停止 | ライフラインが消滅したことを示します。 | ||
メッセージ | 同期 | 受信者からの応答を必要とする場合に使われます。 | |
非同期 | 受信者からの応答が不要な場合に使われます。 | ||
応答 | 呼び出しに応答する場合に使われます。 |
■複合フラグメント
複合フラグメントとは、オブジェクトの処理内容を表現する際に使用される記号です。
記号 | 読み | 処理内容 |
---|---|---|
alt | オルタナティブ | 分岐処理 |
assert | アサーション | 定義されたロジックが必ず成り立つ処理 |
par | パラレル | 並行処理 |
consider | 有効 | 重要な処理 |
opt | オプション | 条件が満たされた場合のみ実行される処理 |
ref | 相互作用使用 | 別のシーケンス図を参照 |
loop | ループ | ループ処理 |
break | ブレイク | 条件が満たされた時点で中断する処理 |
neg | 否定 | 実行されるはずがない処理 |
critical | クリティカル | 割り込みや中断を許可しない排他処理 |
ignore | 無効 | 実行時に無視する処理 |
Part 4: シーケンス図の書き方
この章では、シーケンス図を書いたことがない方でも簡単に書けるよう、ステップを踏んでご説明します。また、使用頻度の高い複合フラグメントごとに書き方を個別にご紹介します。
4.1 シーケンス図の書き方ステップ
シーケンス図は以下の6ステップで作成していきます。
STEP1. オブジェクトを作成する
システム内の実体となるオブジェクトを作成し、それぞれに名前を付けます。
STEP2. オブジェクト間のメッセージを決定する
オブジェクト間で情報を交換するために用いられるメッセージを決定します。
STEP3. オブジェクトとメッセージを配置する
ライフラインがオブジェクトの生存期間を表します。メッセージは、オブジェクト間を矢印で表現し、オブジェクトのライフライン上に配置します。
STEP4. オブジェクトの実行仕様を表す
オブジェクトが何らかの操作を実行していることを表します。実行仕様は、オブジェクトのライフライン上に垂直な線で表します。
STEP5. 必要に応じて複合フラグメントを追加する
複合フラグメントを使用して、制御フローの分岐や繰り返し、並列処理などを表現します。下の例では検索数が1以上あった場合に検索数分、処理を繰り返します。
STEP6. 図を読みやすくする
ラベル、注釈、色などを使用して分かりやすく図を表現します。これで完成です!
4.2 複合フラグメントの書き方
複合フラグメントの書き方をケース別に見ていきます。
4.2.1 条件分岐(alt)
条件分岐を表現する場合は、「alt」複合フラグメントを使用します。分岐するための条件はガードと呼ばれるカッコである[]内に記載し、分岐処理を点線で区切って処理を分割します。
下のシーケンス図では、Webブラウザからホテルの予約空き数が検索された場合の検索結果を表現しています。「alt」複合フラグメントにより次の分岐処理を行います。
- ● [本館が検索された場合]本館専用のDBに対して検索指示を出します。
- ● [別館が検索された場合]別館専用のDBに対して検索指示を出します。
4.2.2 条件判断(opt)
条件が満たされた場合にのみ処理を実行したい場合には「opt」複合フラグメントを使用します。実行条件はガード[]を用いて記述します。
下のシーケンス図では、Webブラウザからホテルの料金表示ボタンが押された場合の処理になります。朝食付きのプランを選んでいる場合に限り朝食料金が検索され、計算処理に加わります。
4.2.3 ループ処理(Loop)
繰り返し処理は、「Loop」複合フラグメントを使用します。[A,B]のうち、ループの開始条件をAに、終了条件をBに記載します。
下のシーケンス図では、Webブラウザから航空券の料金表示ボタンが押された場合の処理になります。予約人数分の計算処理が繰り返され、手数料との合算値が返却されます。
4.3 シーケンス図作成時のポイント
前章では実際にシーケンス図の書き方を解説してきました。次にシーケンス図を書く際のポイントを5つご紹介します。
最初からシーケンス図の作成に取り掛かるとメッセージが漏れていたり、矢印が誤って記述されたりと、精度の低いシーケンス図になってしまう可能性が高いです。事前に業務フローを整理し、全体像を掴んでから作成に着手するのが望ましいです。
シーケンス図は、複雑なシステムの挙動を可視化するためのものであるため、できるだけシンプルで明確な構造にすることが重要です。必要最小限の情報を表現し、わかりやすくレイアウトするように心がけましょう。
シーケンス図では時間軸を表現しているため、処理の前後関係が重要になります。オブジェクト同士のメッセージの送信と受信のタイミングに着目して処理フロー通りの時間軸になっているか確認しましょう。
規模の大きなシステムのシーケンス図を書く際には縦横に長くなりがちです。その場合は、1つのシーケンス図に記載する処理単位を狭めて、分割して書くことで読み手が分かりやすいシーケンス図になります。
メッセージを書く視点は受信側なのか送信側なのか、単語なのか文章なのか、などメッセージの書き方を定義していると統一性があり、見やすいシーケンス図ができます。
Part 5: おすすめシーケンス図ツール「EdrawMax」
最後に、整った分かりやすいシーケンス図が簡単に書けるオススメのツールをご紹介します。この記事の全てのシーケンス図の作成にも使用している「EdrawMax」です。
「EdrawMax」では、シーケンス図含むUML図だけではなく、フローチャート、特性要因図、間取りなど様々なテンプレートが用意されています。
筆者が特に気に入っている機能は、Microsoft製品で行う図形の操作を基本的に流用できる点です。ビジネス現場でExcelやPowerPointを使用されている方は、Ctrlキーを押しながらの図形のドラッグ&ドロップでコピーしたり、Shiftキーを押しながら線を垂直状態で幅調整を行ったりと、便利な機能がそのまま使えるので、とても素早くシーケンス図を書くことができます。
「EdrawMax」は以下のボタンからから無料でダウンロードができるので、ぜひ一度お試しください。
まとめ
ビジネス現場でシーケンス図が書けると、システムの処理の流れを視覚的に理解ができるだけでなく、システムに詳しくない人にも理解してもらいやすいため、説明資料としても活躍します。結果として、業務の効率化に繋がるビジネス現場には欠かせないツールです。
この記事では、シーケンス図とは何かを深掘り、実際にステップを踏んで書き方を解説し、簡単にシーケンス図が書けるツール「EdrawMax」もご紹介しました。
様々なシーンで使えるシーケンス図をぜひ普段の業務に取り入れてみてください。