オブジェクトの広場はオージス総研グループのエンジニアによる技術発表サイトです

モデリング

モデリングカフェ 第11回:定食をモデリングする

モデリングカフェ「Square」~UMLでモデリングを愉しもう~
オージス総研 組み込みソリューション部
田中恒  赤坂英彦
2007年5月10日

毎回、身近にあるモノや出来事など、簡単な【お題】を出題し、皆様にモデリングをして頂きます。次回の記事で、皆様の解答モデルの中から3つほど取り上げて、コメントを付けていくかたちで進めていきます。

目次
  1. 前回の問題(ひな壇)
  2. 読者解答モデル - 本文で紹介できなかった解答モデル
  3. 解答例
  4. 今月号の問題 (出題)
  5. 解答モデルの送付について
  6. 参考文献
  7. 第10回記念!プレゼント当選者発表

1.前回の問題(ひな壇)

前回の問題をもう一度確認しておきましょう。

【お題10】ひな壇

ひな壇をモデリングしてください。

不足する情報は適宜補っていただいて結構です。補った情報は、コンセプトに記述してください。

お題(ひな壇)
図 お題(ひな壇)
素材提供:素材屋angelo

解答はクラス図で表現して下さい。クラスには必要な属性を、関連には多重度を明記するのがポイントです (解答時間の目安は15分~30分です)。

ポイント解説

この問題は、「飾り」の種類と置き場所といった飾り方ルール、三段・七段といったひな壇の様式などがモデリング対象となるでしょう。ポイントは、大まかに

  • 「段」の捉え方
    • 物理的な「段」と捉えるか
    • 「位(お内裏様、三人官女、五人囃子など)」を表すと捉えるか
  • 「飾り」の置き場所の表現方法
    • 「段」と「飾り」の関係と捉えるか
    • 「位置関係」や「飾り方ルール」などを表す概念で表現するか
  • ひな壇の様式
    • 一段(親王)飾り、三段飾り、七段飾りなどの飾り方を表現するか

といったあたりでしょうか。

また、それぞれ詳しくモデリングすることは可能ですが、あまり細かくすると複雑で分かりにくいモデルになる恐れもあります。何を表現するのかを定めて、どこまでモデリングするかが難しいところです。

2. 読者解答モデル

今回も読者の皆様からたくさんの解答モデルを頂きました。ありがとうございます。 これまでと同じように、3 つの解答モデルをピックアップして、当カフェのマスターとヒトクセある!?常連たちと一緒に見ていきましょう。 コーヒーなどを飲みながら、皆様も一緒にわいわいやる感じで考えてみてください。 また、残念ながら紹介することができなかった解答モデルはこちらに掲載しますので、 オブジェクトの広場 メーリングリストなどで意見交換していただければ幸いです。

読者解答1:川西俊之 様

  • コンセプト

    出来る限りシンプルな表現で、実際のひな壇の種類を表すようにしました。 そこで、「ひな壇」には「壇」が 1, 3, 7 個あることにしました(親王飾り、三段飾り、七段飾り)。 さらに、「壇」には「ひな人形」が 0, 2, 3, 5 個あります。 具体的には、七段飾りでは、「ひな人形」が無く「ひな飾り」のみの壇があるので 0、親王(お内裏さま、おひなさま)、随身(左大臣、右大臣)は 2、三人官女、仕丁は 3、五人ばやしは 5 となります。

    また、「ひな人形の種類」と「ひな飾りの種類」を Enumeration で定義しました。

  • モデル
    • クラス図
      図 1 川西俊之 様の解答モデル(クラス図)
      図 1 川西俊之 様の解答モデル(クラス図)
  • 感想
    • 難しかったところ

      多重度の設定が難しかったです。結局、離散値の多重度を設定してしまいました。(UML1.xではあったけれど、UML2.0では廃止されていますね。)

    • 自己評価

      UML2.0の規約に従えなかったから50点くらいでしょうか。

  • コメント
    マスター   シンプルにひな壇の種類を表すというコンセプトでモデリングされたようです。
     
    唐沢さん   ええ。ひな壇の物理的な構成に注目されています。
     
    久本くん   物理的な構成っていうのは、「壇」っていうことですよね。物理的じゃない構成ってあるんですか?
     
    吉井さん   うん。例えば"お内裏様"と"三人官女"から構成されるという考え方もできるよね。
     
    マスター   そうですね。身分や位などは概念的なモノですね。
     
    唐沢さん   このモデルは、きちんとコンセプトで視点を定めてモデリングされています。
     
    久本くん   それって、なかなか難しいことなんですよね。
     
     
     
    マスター   「ひな人形の種類」や「ひな飾りの種類」というのを"Enumeration"で表現しているのはどうなのでしょうか?
     
    吉井さん   ちょっとした工夫じゃないかな。
     
    久本くん   でも、"Enumeration"というのは実装よりな感じがします。
     
    唐沢さん   では、代わりにどのように表現しますか?
     
    久本くん   えーと・・・「ひな人形」クラスや「ひな飾り」クラスのサブクラスでしょうか。
     
    吉井さん   間違ってはいないね。でも、サブクラスの数が多くなって、煩雑にならないかな。
     
    マスター   ええ。モデルで表現したい肝心なところが薄れてしまいますね。
     
    唐沢さん   クラス図とは別に一覧表を作成することもありますね。
     
    吉井さん   だね。伝える内容やモデルのコンセプトにもよるけど、全てを一枚のクラス図で描こうとすると、モデルがおかしくなることがあるね。そんなときは思い切って"描かない"って選択肢もあるんじゃないかな。
     
     
     
    久本くん   ところで、「ひな人形」クラスや「ひな飾り」クラスから「壇」クラスへの関連が矢印になっているんですが、これは何を意味してるんでしょう。
     
    マスター   何でしょう。もしかしたら、関連名に付ける矢印の意味(「ひな人形」は「壇」に乗る、と読む)かもしれませんね。
     

読者解答2:濱田茂 様

  • コンセプト
    • ひな壇は、所有者が存在して、1段~7段飾りとする。
    • 各段は、奥行きと横位置という位置が存在する。
    • 奥行きは、3種類あり、手前、真ん中、奥とする。
    • 横位置は、任意の表現が出来る。(左、右、右から2番目、等)
    • 各段に飾る物は、飾り物とする。
    • 飾り物は、人形と静物がある。
  • モデル
    • クラス図
      図 2 濱田茂 様の解答モデル(クラス図)
      図 2 濱田茂 様の解答モデル(クラス図)
    • オブジェクト図
      図 3 濱田茂 様の解答モデル(オブジェクト図)
      図 3 濱田茂 様の解答モデル(オブジェクト図)
  • 感想
    • 難しかったところ

      飾り物を置く位置をどう表現するか悩みました。

    • 自己評価

      飾り物を置く段数(例えば、1段目は、お内裏様とお雛様)と位置(例えば、お内裏様の隣はお雛様)までクラス図で表現したかったのですが、出来なかったので、50点です。

  • コメント
    唐沢さん   コンセプトに特色があります。「飾り物」をどの「位置」に置くかに興味があるんですね。
     
    マスター   そうですね。興味深いのは、「飾り物」をどの段に置くのかだけではなく、水平方向の「奥行き」や「横位置」に興味を持たれているところです。
     
    久本くん   3Dですね。
     
    吉井さん   水平方向のどの「位置」に置くのかが大事だというこだわりが感じられるね。
     
    唐沢さん   確かに、屏風を人形の前に置いてしまうと意味がありませんし、ここに注目したというのは納得できます。
     
    マスター   オブジェクト図の「位置」クラスの「奥行き」や「横位置」の属性値から想像するに、格子状になっているのでしょうか。
     
    久本くん   そうか、縦と横に区切られたオセロの盤みたいなイメージですね。
     
    吉井さん   そうだろうね。関係ないけど、将棋盤や碁盤じゃなくてオセロなんだ。
     
     
     
    唐沢さん   「位置」クラスが関連クラスになっているのはどうでしょうか。
     
    マスター   「位置」という関連では、「構成」クラスの多重度が 1 になっていますね。
     
    唐沢さん   ええ。この場合「飾り物」は特定のある段にしか飾られないため、関連クラスでなくても良いでしょう。
     
    マスター   もしもですが、"女雛(お雛さま)"を1段目に飾るときは右に、3段目に飾るときは真中に、というように、段によって「飾り物」を飾る「位置」が変わるのでしたら、関連クラスになりますね。
     
    久本くん   なるほどー。"女雛(お雛さま)"は1段目にしか飾らないですもんね。じゃぁ、「飾り物」クラスと「位置」クラスの関係は 1 対 1 の関係になるんだ。
     
    吉井さん   うん。でも関連クラスにすることで、良いところもあるよ。なぜ関連クラスになったんだと思う?
     
    久本くん   えーと・・・
     
    マスター   何段目かという「構成」をまず考えて、次に「飾り物」を置くことを考えられたのではないでしょうか。
     
    吉井さん   そうだよね。"段(構成)に「飾り物」を置く"ということが素直に関連で表現されているよね。そして、"置く"という関連には「位置」の情報がある、という捉え方はとても自然だと思うよ。
     

読者解答3:大元聡 様

  • コンセプト
    • ひな壇は、ひな人形やぼんぼりなどのひなかざりと、ひなかざりを載せる段から構成される。
    • ひな壇は、シンプルな一段かざりから、豪華七段かざりなど、段数やひなかざりの数・種類はさまざまである。
    • ひな壇は、段とひなかざりを適切な位置に配置するものとする。したがって、モデルは段とひなかざりの位置関係を表現できるものとする。
    • ひな壇の、段とひなかざりの配置には、伝統や習慣にのっとった飾り方が存在する。
  • モデル
    • クラス図
      図 4 大元聡 様の解答モデル(クラス図)
      図 4 大元聡 様の解答モデル(クラス図)
    • オブジェクト図
      図 5 大元聡 様の解答モデル(オブジェクト図)
      図 5 大元聡 様の解答モデル(オブジェクト図)
  • 感想
    • 難しかったところ

      飾り方をどう表現すればよいのか悩みました。最初は単純に関連で相対的に位置関係を表そうとしたのですが、自由に配置できると、おひなさまが一番下の段に並べられてもかまわないことになってしまうと思い、制約としてコンセプトの最後の行を追加しました。

    • 自己評価

      クラス図はシンプルだと思いますが、結局制約コメントをたくさんつけないといけないモデルになってしまったと思います。50 点くらいでしょうか。

  • コメント
    マスター   このモデルでは、「飾り方」クラスに特徴がありますね。
     
    吉井さん   そうだね。「飾り方」というルールを表すクラスを出したのは面白いね。
     
    久本くん   「飾り方」クラスって必要なんですか? このクラスがないと、どの「段」に何を置いても良いみたいに見えちゃうけど。
     
    唐沢さん   昔は"男雛"と"女雛"の位置が今と左右逆だったようです。伝統を重んじる京都では、昔の「飾り方」をするそうですよ。
     
    久本くん   そうなんですか。"○○式の飾り方"みたいな、「飾り方」のルールってあるんですね。
     
    マスター   ルールというよりも、習慣といった方が良いかもしれません。
     
    吉井さん   「ひなかざり」の左右の位置関係を、関連で表現しているところも特徴的だね。
     
    唐沢さん   相対的に並びのルールが決まっていると捉えています。
     
    久本くん   意地悪く見ると、例えば、妙に左に偏った置き方とかできちゃいますね。
     
    マスター   それは本当に意地が悪いですよ。
     
     
     
    吉井さん   「飾り方」クラスと「ひなかざり」クラスや「段」クラスとの関連の多重度が 多 対 多 になってるけど、これらのクラスのインスタンスは何だと思う?
     
    唐沢さん   オブジェクト図を見る限り、メタな(抽象度の高い)概念だと思います。
     
    マスター   インスタンスは"お内裏様"や"お雛様"になっていますね。
     
    唐沢さん   ええ。例えば、インスタンスが"型番 A のお雛様"のようになっていたら、もう一段具象のところをモデリングしていることになります。
     
    久本くん   もし、インスタンスが"今私が手に持っているこのお雛様"だったら、"型番 A のお雛様"はクラスになるんでしょうか?
     
    吉井さん   そうかな。頭がこんがらがりそうなところだけど、どういう抽象度のレベルでモデリングをしているのかはちゃんと意識した方がいいよ。あわせて、インスタンスを考えることも大切だね。
     

3. 解答例

解答例としまして、当カフェのマスターのモデルを紹介致します。 コンセプト次第でモデルは変わりうるものですから、 正解としてではなく、1つの考え方としてご覧ください。

解答例

  • コンセプト
    • ひな壇には複数の「段」があり、それぞれの「段」に「飾り」を置く、という物理的な構造をモデリングする。
    • 「飾り」には「人形」と「道具」がある。
    • 「飾り」はどの「段」に置くかの位置が決まっている。これを「段」との関係で表現する。
    • また、「飾り」は「段」の中で置く順番が決まっている。これを { ordered } の制約で表す。
  • モデル
    • オブジェクト図
      図 6 解答例のオブジェクト図
      図 6 解答例のオブジェクト図
       
    • クラス図
      図 7 解答例のクラス図
      図 7 解答例のクラス図
       

4. 今月号の問題 (出題)

今月の問題です。モデリングの進め方については、第 1 回のモデリングの進め方を参照してください。

【お題11】定食

定食をモデリングしてください。

不足する情報は適宜補っていただいて結構です。補った情報は、コンセプトに記述してください。

図 お題(定食)
図 お題(定食)

解答はクラス図で表現して下さい。クラスには必要な属性を、関連には多重度を明記するのがポイントです(解答時間の目安は15分~30分です)。

5. 解答モデルの送付について

解答モデルの送付についてをご覧ください。
なお、今月号は第 11 回です。 締め切りは 2007 年 6 月 14 日 (木) です。

解答例掲載は 7 月号 ( 7 月上旬 )を予定しています。

読者プレゼント ~Elapiz (いらぴす) 要ります?キャンペーン~

引き続き、UML モデリングツールをお持ちでない方向けの読者プレゼントを実施します。
弊社の UML モデリングツールである Elapiz スタンダードエディション 2005.2 の Elapiz Basic の正規ライセンス(\15,750 相当)を、 解答モデルをご送付いただいた方の中から、抽選で 3 名の方にプレゼントいたします。

UML モデリングツールをお持ちでない方は、この機会に是非ご応募ください。 Elapiz SE 2005.1 以前をお使いになっておられる方も応募してくださってかまいません。

解答モデルの送付についてをご覧いただき、是非ご応募ください。

6.参考文献

本連載では、文献[1]をベースに、より気軽にモデリングを愉しんでいただけるテイストにしております。モデリングに関するしっかりした解説が欲しい場合には、以下の書籍をご覧になると良いと思います。

  1. 「思考系UMLモデリング即効エクササイズ モデ力を鍛える13の自主トレメニュー」、渡辺博之他、翔泳社
  2. 「UMLによるオブジェクト指向モデリングセルフレビューノート」、荒井玲子著、ディーアート
  3. 「UMLモデリングの本質」、児玉公信著、日経BP社

7. 第10回記念!プレゼント当選者発表

第10回記念!プレゼントの当選者を発表いたします。おめでとうございます!!

EAロゴ

  • 川西俊之 様
  • あんどう 様

JUDEロゴ

  • 新井国充 様
  • 濱田茂 様
  • ありゅ~ 様

Elapizロゴ

  • 岩沢正樹 様
  • 松田政博 様
  • GO5号 様
  • 大元聡 様

なお、当選者の方には、別途メールにてご連絡いたします。お楽しみに!!

特別スポンサー

スポンサーの皆様からプレゼントのご提供をいただきました。心から感謝いたします。

改訂履歴

  • サイトテンプレート変更に伴う変更(2021年7月)