1
/
5

モデリング・DDD#4 「モデリングの勉強方法」

Photo by Annie Spratt on Unsplash



モデリングって勉強しづらい?

先日、Modeling Forum 2017 が開催され、私も一参加者として、講演やワークショップを楽しみました。オブジェクト指向やUMLが広まり始めた頃と違って、今やモデリングについて学べる機会は貴重かもしれません。書籍も絶版になっているものが多く、これから初心者がモデリングを勉強するのは意外と機会が少なくて大変かもしれない、などと知り合いと話していました。

そこで今回は、私の考える 「初心者がモデリングを勉強するコツ」 をお伝えしようと思います。

ひとつめ:身の回りのものをモデリングしてみよう

前々職で、電機メーカーの子会社にいた時期に、UMLを教えてほしいというリクエストに応えて、勉強会を開催していたことがあります。その時によくこんな宿題を出していました。

”身の回りのものごとをなんでもいいのでモデリングしてみてください”

これ、結構盛り上がるのです。某有名スポーツアニメの人物相関図をクラス図にする方、ワインの銘柄を表現する方、自分の通勤経路をアクティビティ図にする方、上司のご機嫌の移り変わりをステートマシン図にする方などいろいろでした。

中でも傑作は 「水戸黄門状態遷移」。状態として大きくは:

  • 「ちりめん問屋のご隠居みつえもん」コンポジット状態
  • 「水戸光圀」状態

があり、イベントとしては、

  • 「八兵衛うっかり」
  • 「弥七の活躍」
  • 「悪代官(悪人)にはめられる」
  • 「大立ち回り[たけなわ]」

などなど、お約束イベント(※1)が入り、見た人はみんな大盛り上がりするモデルでした。

業務に直結しないからといって、こういうモデリングをバカにしてはいけません。モデリングの本質は結構出てくるのです。みなさん、自分の好きな(くわしい)ことを題材にするので、モデルが詳細になりがちです。勢いに任せてどんどん描いていると、細かすぎて伝えたい骨組みが相手に伝わらないモデルになったりします。「何を伝えたいのか」 を見失わないように、かつ、どうやって対象物の本質を取り出すかは、意外と難しいのです。「水戸黄門状態遷移」 も、作るのにかなり時間がかかったそうです。毎回の物語は当然違うので、その詳細はそぎ落として、ストーリーのパターンをいかにあぶり出していくかが難しいようです。

このモデルにライバル心を抱いた他の人が、別の時代劇で同じようなことをしようとしたものの、どうしても 「水戸黄門状態遷移」 に比肩するものができず挫折した、という後日談もあります。

※1 ちなみにこれを見た方から、「あのお約束イベントが入っていない」 というツッコミが入ったことがあります。みなさん、どんなお約束イベントか、分かりますか?「印籠を出す」のは、このモデルでは、「水戸光圀」状態のentryアクションになっているので、除外するものとします。(※2)

ふたつめ:実装と結び付けよう

これを読んでいる方のほとんどは、最終的に作ったモデルをソフトウェアやハードウェアで実装する(そのために設計を考える)ために、モデリングされると思います。なので、モデルを見たら、頭の中で実装がイメージできるようになってください。

例えばUML/SysMLのモデルは、しょせん 「箱」 と 「線」 の組み合わせです。そんな単なる箱と線がなぜ大事か。その箱と線を使って、他の人と設計の議論が成り立つからです。そのためには、その箱や線を見た時にイメージするものが、同じでなければいけません。例えば、ソフトウェアエンジニアであれば、それをコードにしたらどうなるか、を理解してください。

現在、メジャーなプログラミング言語では、設計→実装という一方通行は成り立たず、おおまかな設計はあらかじめ考えても、詳細設計は実装しながら決めていくことのほうが多いです。みんなで箱と線で議論をしている時にも、実装はある程度思い浮かんでいるはずですし、実装をしている時にも、これが設計のどの部分なのか、全体の設計にどう影響するか(しないか)を考えているはずです。

これはデザインパターンなどを勉強する際にも、使えます。デザインパターンもUMLなどで書かれたモデルと解説だけでは、その本質(デザインパターンを使うメリット)はよく分かりません。必ず実装も含めて(可能であれば、デザインパターン適用前と適用後の実装を比較して)理解しましょう。

みっつめ:「モデル」そのものより「モデリング」

これはどちらかというと、モデリングを教える側の方へのアドバイスです。作った結果のモデルより、ぜひそのモデリングをしている過程を見せてあげてください。

研修の際は時間の制限があり、なかなかすべてを 「ライブモデリング」 することは難しいのですが、効果は大きいのです。何をどう考えてどこからモデルを描き始めるか、ツールの使い方、これを見せながら描くことが、初心者にはとてもよい教育効果を生みます。アジャイル界隈では、昔からペアプログラミング、最近ではモブプログラミングがメジャーになりつつありますが、これと同じような効果があるようです。

ぜひみんなでモデリングを楽しみましょう。

※2 結果的に「あのイベント」はどうしてもこのステートマシン図に含められず、逆に「あのイベント」が物語の本筋には全く関係のないサービスカットであることが、よくわかったのでした。

※転載元の情報は上記執筆時点の情報です。
 上記執筆後に転載元の情報が修正されることがあります。


株式会社豆蔵では一緒に働く仲間を募集しています
1 いいね!
1 いいね!
同じタグの記事
今週のランキング
このストーリーが気になったら、直接話を聞きに行こう