モデリングの勉強方法
豆蔵の中の人ナカサトのヒトづくり・モノづくり・コトづくりへ一言 第4回 何と4回目です。すごいじゃないですか! 誰もほめてくれないので、自分で自分をほめておきます。 先日、 Modeling Forum 2017 ...
https://www.mamezou.com/techinfo/modeling_ddd/nakanohito_004
先日、Modeling Forum 2017 が開催され、私も一参加者として、講演やワークショップを楽しみました。オブジェクト指向やUMLが広まり始めた頃と違って、今やモデリングについて学べる機会は貴重かもしれません。書籍も絶版になっているものが多く、これから初心者がモデリングを勉強するのは意外と機会が少なくて大変かもしれない、などと知り合いと話していました。
そこで今回は、私の考える 「初心者がモデリングを勉強するコツ」 をお伝えしようと思います。
前々職で、電機メーカーの子会社にいた時期に、UMLを教えてほしいというリクエストに応えて、勉強会を開催していたことがあります。その時によくこんな宿題を出していました。
”身の回りのものごとをなんでもいいのでモデリングしてみてください”
これ、結構盛り上がるのです。某有名スポーツアニメの人物相関図をクラス図にする方、ワインの銘柄を表現する方、自分の通勤経路をアクティビティ図にする方、上司のご機嫌の移り変わりをステートマシン図にする方などいろいろでした。
中でも傑作は 「水戸黄門状態遷移」。状態として大きくは:
があり、イベントとしては、
などなど、お約束イベント(※1)が入り、見た人はみんな大盛り上がりするモデルでした。
業務に直結しないからといって、こういうモデリングをバカにしてはいけません。モデリングの本質は結構出てくるのです。みなさん、自分の好きな(くわしい)ことを題材にするので、モデルが詳細になりがちです。勢いに任せてどんどん描いていると、細かすぎて伝えたい骨組みが相手に伝わらないモデルになったりします。「何を伝えたいのか」 を見失わないように、かつ、どうやって対象物の本質を取り出すかは、意外と難しいのです。「水戸黄門状態遷移」 も、作るのにかなり時間がかかったそうです。毎回の物語は当然違うので、その詳細はそぎ落として、ストーリーのパターンをいかにあぶり出していくかが難しいようです。
このモデルにライバル心を抱いた他の人が、別の時代劇で同じようなことをしようとしたものの、どうしても 「水戸黄門状態遷移」 に比肩するものができず挫折した、という後日談もあります。
※1 ちなみにこれを見た方から、「あのお約束イベントが入っていない」 というツッコミが入ったことがあります。みなさん、どんなお約束イベントか、分かりますか?「印籠を出す」のは、このモデルでは、「水戸光圀」状態のentryアクションになっているので、除外するものとします。(※2)
これを読んでいる方のほとんどは、最終的に作ったモデルをソフトウェアやハードウェアで実装する(そのために設計を考える)ために、モデリングされると思います。なので、モデルを見たら、頭の中で実装がイメージできるようになってください。
例えばUML/SysMLのモデルは、しょせん 「箱」 と 「線」 の組み合わせです。そんな単なる箱と線がなぜ大事か。その箱と線を使って、他の人と設計の議論が成り立つからです。そのためには、その箱や線を見た時にイメージするものが、同じでなければいけません。例えば、ソフトウェアエンジニアであれば、それをコードにしたらどうなるか、を理解してください。
現在、メジャーなプログラミング言語では、設計→実装という一方通行は成り立たず、おおまかな設計はあらかじめ考えても、詳細設計は実装しながら決めていくことのほうが多いです。みんなで箱と線で議論をしている時にも、実装はある程度思い浮かんでいるはずですし、実装をしている時にも、これが設計のどの部分なのか、全体の設計にどう影響するか(しないか)を考えているはずです。
これはデザインパターンなどを勉強する際にも、使えます。デザインパターンもUMLなどで書かれたモデルと解説だけでは、その本質(デザインパターンを使うメリット)はよく分かりません。必ず実装も含めて(可能であれば、デザインパターン適用前と適用後の実装を比較して)理解しましょう。
これはどちらかというと、モデリングを教える側の方へのアドバイスです。作った結果のモデルより、ぜひそのモデリングをしている過程を見せてあげてください。
研修の際は時間の制限があり、なかなかすべてを 「ライブモデリング」 することは難しいのですが、効果は大きいのです。何をどう考えてどこからモデルを描き始めるか、ツールの使い方、これを見せながら描くことが、初心者にはとてもよい教育効果を生みます。アジャイル界隈では、昔からペアプログラミング、最近ではモブプログラミングがメジャーになりつつありますが、これと同じような効果があるようです。
ぜひみんなでモデリングを楽しみましょう。
※2 結果的に「あのイベント」はどうしてもこのステートマシン図に含められず、逆に「あのイベント」が物語の本筋には全く関係のないサービスカットであることが、よくわかったのでした。
※転載元の情報は上記執筆時点の情報です。
上記執筆後に転載元の情報が修正されることがあります。