Help us understand the problem. What is going on with this article?

【新人教育 資料】第6章 UMLまでの道 〜ステートマシン図の説明&書いてみよう編〜

More than 1 year has passed since last update.

【新人教育 資料】第6章 UMLまでの道 〜ステートマシン図の説明&書いてみよう編〜

あらすじ

新人がいっぱい入ってくる。新人のレベルもバラバラ。教育資料も古くなっているので、更新しましょう。
どうせなら、公開しちゃえばいいじゃん。という流れになり、新人教育用の資料を順次更新していくことにしました。

※後々、リクエストに応じて更新することが多いのでストックしておくことをおすすめします。

自分はTEMONA株式会社でCTOをしていますが、頭でっかちに理論ばっかり学習するよりは、イメージがなんとなく掴めるように学習し、実践の中で知識を深めていく方が効率的に学習出来ると考えています。

※他の登壇やインタビュー記事はWantedlyから見てください。

教育スタイルとしては正しい事をきっちりかっちり教えるのではなく、未経験レベルの人がなんとなく掴めるように、資料を構成していきます。

以下のようなシリーズネタで進めます。

No. 記事
1 【新人教育 資料】第1章 UMLまでの道 〜オブジェクト指向編〜
2 【新人教育 資料】第2章 UMLまでの道 〜クラス編〜
3 【新人教育 資料】第3章 UMLまでの道 〜図種類紹介とクラス図の解説編〜
4 【新人教育 資料】第4章 UMLまでの道 〜クラス図を書いてみよう編〜
5 【新人教育 資料】第5章 UMLまでの道 〜ユースケース図の説明&書いてみよう編〜
6 【新人教育 資料】第6章 UMLまでの道 〜ステートマシン図の説明&書いてみよう編〜
7 【新人教育 資料】第7章 UMLまでの道 〜アクティビティ図の説明&書いてみよう編〜
8 【新人教育 資料】第8章 UMLまでの道 〜シーケンス図の説明&書いてみよう編〜

箸休めには以下をどうぞ

【新人教育 資料】ハードウェア編

では、今回もはじめていきましょう!

ステートマシン図

ステートマシン図は1つのクラスに着目し、そのオブジェクトの状態遷移を示すものです。
オブジェクトの状態を示し、どのような条件や遷移があるかが分かるよう示します。

開始状態

開始状態 記号 スコープ内で開始を表します。

新人教育 資料 UML ステートマシン図 開始

終了状態

スコープ内で終了を表します。
新人教育 資料 UML ステートマシン図 終了

状態

何の状態を示すか、一言で示せる状態名及び、必要であれば下の段に状態を補足する説明を記載しましょう。

新人教育 資料 UML ステートマシン図 状態

遷移

遷移は矢印で示します。矢印の順番で状態遷移することを表現します。
新人教育 資料 UML ステートマシン図 遷移

plantumlでの表記例
[*] -right-> 状態1
状態1 -right-> 状態2
状態2 -right-> [*]

合成

状態の中に、複数の状態が包括する状態を表します。
以下は自動販売機の例です。
新人教育 資料 UML ステートマシン図 合成

plantumlでの表記例
[*] -right-> 停止

  停止 -right-> 稼働
state 稼働 {
  待機 -r-> 入金 :お金を入れる
  入金 -d-> 押下 :商品を選択する

  入金 -u-> 待機 :キャンセル
  押下 -d-> 待機 :商品を出す
}

領域(同時)

以下の例はキーボードのnumLockやcapslock,scrolllockなど複数同時に状態が混在する事を示しています。
区画線としては点線で表現します。PlantUMLでは「--」が領域表現です。
新人教育 資料 UML ステートマシン図 領域 同時

plantumlでの表記例
[*] --> Active

state Active {
  [*] -> NumLockOff
  NumLockOff --> NumLockOn : EvNumLockPressed
  NumLockOn --> NumLockOff : EvNumLockPressed
  --
  [*] -> CapsLockOff
  CapsLockOff --> CapsLockOn : EvCapsLockPressed
  CapsLockOn --> CapsLockOff : EvCapsLockPressed
  --
  [*] -> ScrollLockOff
  ScrollLockOff --> ScrollLockOn : EvCapsLockPressed
  ScrollLockOn --> ScrollLockOff : EvCapsLockPressed
}

上記の例は
http://ja.plantuml.com/state.html#Concurrentから引用させていただきました。

演習

幾つかやってみましょう

人が結婚、別居、離婚などのステートマシン図を作ってみましょう。

車が動作に関してのステートマシン図を作ってみましょう。

運転免許に関してのステートマシン図を作ってみましょう。

iPhoneのsiriの動作に関するステートマシン図を作って見ましょう。

あとがき

UMLのステートマシン図はどうだったでしょうか?
細かい条件やフローなどをは、別のUML図で表現するので
ステートマシン図は1つのオブジェクトの状態遷移を示すものなのでシンプルに心がけましょう。
次回は、アクティビティ図を説明したいと思います。

devopsCoordinator
テモナ株式会社のCTO。 詳細はこちら(https://www.wantedly.com/users/105935) 電子から強電、情報の世界までが守備範囲。元教師なので、教える事が好きです。毎日楽しい日々を過ごしています。会社は渋谷近郊なので、勉強会や講演、インタビュー依頼、オフィスに遊びにいきたいなど、あればいつでもFacebookでメッセージください
http://temona.co.jp/
temona
"てもなく"とは「簡単に、たやすく」という意味を持った古語です。 テモナの社名にはIT技術で世の中を便利にしたいという想いが込められています。
http://temona.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away