Skip to content

【対談】UML状態マシン図は、なぜ重要か


Kenji2_0302020625

平鍋

https://ja.areyoumodeling.com/2015/02/23/statemachine_diagram/

常温洗浄便座の例で理解する状態マシン図

モデリングしてますか?
今日は、セイコーエプソンの島さんをお招きして、対談をしてみようと思います。よろしくお願いします。
今日は、状態マシン図(温水洗浄便座”セサレット”を描いた状態マシン図例)を中心にお話いただきましたが、なぜ組込みの中で、こういう図を使うことが重要なんですか?

 


AYM 状態マシン図 vs フローチャート


島さん

島さん

「開発部が何を作りたいか」ということを、設計部は理解しなくてはいけないし「お客様が一体どういうものが欲しいのか」を正確に理解しなければいけない。そのためには、フローチャートで仕様書を書いても、なかなかその相手にソフトが分かってもらえないので、なかなか理解してもらえない、コミュニケーションしづらい。それに対して、状態マシン図というのは、状態によって振る舞いが変わるということを表現できる。例えば、座っているときでできることと、立ってるときにできることは違いますよね、っていうのは、誰でも理解ができる。

 

Kenji2_0302020625

平鍋

 

あれって、フローチャートで描くと結構大変なんでしょ?

 

島さん

島さん

フラグを使わなければ表現出来ないので、立ってるときのフラグとか、お尻を洗ってるときのフラグなど沢山使わないとフローチャートが描けなくて。どのフラグが立ってるときに、どうするかなどと、細かくなってしまう
Mr.shima's_statemachine_diagrams

 

Kenji2_0302020625

平鍋

ソースコードだと、立ってるフラグとお尻がでてきて、 if 立ってる and お尻洗ってるなら、という話になるんですね?

 

島さん

島さん

そうです。立ち上がると、もしお尻を洗ってるなら、止めてから立ち上がらないといけないし、お尻を洗っていなければ別に止めずに、それでもいいんですが、、、

 

Kenji2_0302020625

平鍋

グジャグジャとなっちゃうんですよね

 
 

島さん

島さん


そうなんです。凄く構造が難しくなってしまう。なので、状態マシン図だと、それが簡単に表現できるし、座ってるときにしかお尻を洗えない、などという事を、入れ子で描けるので、そこが分かりやすい。

 


AYM 「ここを変えて」、と指でさしながら議論できる所に図の良さがある


Kenji2_0302020625

平鍋

組込みの現場で、ソースコード以外に、「もう少し図面を描いてやろうよ」っていう文化は、今、国内でどの程度広がっていますか?
 
 

島さん

島さん

やはり、その仕様がどんどん複雑になり、機能がどんどん増えていき、使い方も多様化しているので、お客さま毎にやりたい事が違っていて、お客さまのやりたい事を出来るだけ素早く理解しなければいけない。時々刻々変わったりするので、やりたい事を図面を使ってコミュニケーションをとる。最後の瞬間まで、仕様ってなかなか決まらないじゃないですか。

 

Kenji2_0302020625

平鍋

そうですよね。

 
 

島さん

島さん


図面だと「ここが違うので、ここからこここに遷移できるようにしてください」とか「この状態キャンセルして、飛ばして次にいくようにしてください」という議論を簡単にできるので。
図面というのは、そういういい所がある。

 

Kenji2_0302020625

平鍋

図面だと指がさせますよね。「ここ」がってね。

 
 

島さん

島さん

はい。この状態、と指でさせるところがいいと思います。状態に名前がついてるので、その状態だけを、もうちょっと良くしたいとか、そういう事も言える。

 


AYM 仕様は最後までなかなか決まらない。だから可変になりそうな部分を図で示しておく


Kenji2_0302020625

平鍋

「ここ、ちょっと検討足りないよね」という事なども。。
もしかすると、UMLとか色んなモデル言語がありますけど、多くの人は、それを最後のソースコードまで一気通貫でやらないと意味がないという考えの方もいらっしゃると思うんですが、今の話だと、むしろ、人間対人間のコミュニケーションの中で、実は図ってよく使ってるって事ですよね。

 

島さん

島さん

そうですね。
実際は、製品を量産する直前まで、試作が繰り返されていたりして、色んなものが試されていて、その中でどれが決まるか分からない。そういう時に、図面で描いておき、最終的に決まればそこからソフトに落とすのは、実はそんな難しくないんですよね。それよりも、その前段階に非常に時間がかかって、最後の最後まで仕様が決まらない、ってよくあるじゃないですか。仕様ってなかなか決まらないので、その段階をできるだけ円滑にやって、最後の瞬間に一気にソフトに変える。それは図面見ながら、手でC言語をかいても、それほど難しくない。

Kenji2_0302020625

平鍋

という事は、コスト効率としては、むしろその仕様を決めていく、あるいは合意をしていく、というところに、モデルの良さというか、効くツボがあるのでしょうか?

 

島さん

島さん

図面と図面を比較する事も出来るし、図面がどう変わってきたのかを残せるので、将来こんな範囲で収まる、共通部分がどこら辺にあって、可変部がどこらへんの範囲におさまってるのかっていうのは、図面見ながら分かるんですよ。ここの状態は、しょっちゅう変更が入る…

 

Kenji2_0302020625

平鍋

っていう事は、可変部なんですか?

 
 

島さん

島さん


 
可変部に”なりそう”。将来変わってもいいように、モデルを作っておこう。残りの部分を、共通部にしておいて、そこだけ入れ替えてその製品を出せるようにしよう。

 

Kenji2_0302020625

平鍋

なるほど。

 
 

島さん

島さん


 
そんな風に切り分ける事も出来るし、それはソフトウェアとまた違う見方なんですよ。
状態とか、平行にして動くところとか、そこだけ抜き出して議論が出来るので。

 

Kenji2_0302020625

平鍋


なるほど、分かりました。

 
 


AYM 組込み業界の中で、状態マシン図を描いてからソフトウェアを作るスキルを持つ技術者を増やしたい


Kenji2_0302020625

平鍋

最後に、島さんがこういう教育活動や、ソフトウェアの現場をより良くしようという活動をされてるモチベーションや動機を聞かせていただけると有り難いです。

 

島さん

島さん


やはり、社内で、フローチャートではなく状態マシン図を、ちゃんと仕様書として描いてからソフトウェアを作る、そういうスキルを持った人を、出来るだけ増やしたいと思っていて、社内で状態マシン図の資料を作って、学習会などやっていたんですけど、やっぱりその社内だけでやってると、なかなか良い教材にならない。
という事で、SESSAME(Society of Embedded Software Skill Acquisition for Managers and Engineers – NPO法人 組込みソフトウェア管理者・技術者育成研究会)の所へ行ってSESSAMEへ行くと日本の組込み会で配っている、おじさんたちがいっぱいいますので、

 

Kenji2_0302020625

平鍋

二上(貴夫)さんとかね。

 
 

島さん

島さん


二上さんにも見ていただいて、沢山の方に査読してもらって、このテキストはこんな風にするといいよとか、もっといい本があるからこういうのもいいよとか、そういう事を教えてもらって、それでフィードバック入れて資料作って、いよいよセミナーで使ってみると、セミナーの中で、凄く沢山質問をいただくんですよ。
質問をもらって、問題を解いて、色んな状態マシン図をもらう。その中には間違ってるものもあれば、いいモデルもある。

 

Kenji2_0302020625

平鍋

沢山集まる。

 
 

島さん

島さん

色んなモデルが集まる。質問やモデルがたくさん集まると、また資料を良くするために使うことができる。良くした資料を使って、また社内に持って帰ってトレーニングすると、もっと分かりやすいし、皆が理解しやすくなる。
それをぐるぐる回してやる、というのがモチベーションになっていて、今後またセミナーを開いて、また新しい事を教えたいし、いただいた質問とできたモデルを使って、資料を良くしたいなと思ってます。

 

Kenji2_0302020625

平鍋

素晴らしいですね。ぜひ皆さんも参加してください。どうやったらこの資料が手に入ったり、参加できるんですか?

 

島さん

島さん

まずは、SESSAMEのセミナーにぜひ参加してみてください。

 
 

Kenji2_0302020625

平鍋

ぜひ来てください。

 
 

島さん

島さん


 
その後で、SESSAMEってどうなってるのっていう詳しい話をお知らせします。

 

Kenji2_0302020625

平鍋


 
ぜひ若い人、どんどん来てくださいね。今日は、島さん、長野からお越しいただきまして、いいお話、ありがとうございました。今後も組込み業界、良くしていきましょうね。

 

島さん

島さん

はい、ありがとうございました。

 
 

Kenji2_0302020625

平鍋


 
ありがとうございます。
 
 
 


[関連リンク]
島敏博さんブログ「島ぶくろ」
例で理解するUML状態マシン図
SESSAME (NPO法人 組込みソフトウェア管理者・技術者育成研究会)

Advertisements

1 Comment »

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: