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

モデリング

モデリングカフェ 第12回:伝言メモをモデリングする

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

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

目次
  1. 前回の問題(定食)
  2. 読者解答モデル - 本文で紹介できなかった解答モデル
  3. 解答例
  4. 今月号の問題 (出題)
  5. 解答モデルの送付について
  6. 参考文献
  7. Elapiz (いらぴす)当選者発表

1.前回の問題(定食)

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

【お題11】定食

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

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

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

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

ポイント解説

定食というと、ごはんがあって、おかずがあって、お味噌汁があって、というのを思い浮かべることでしょう。ごはんものだけだったり、おかずだけでは定食とは呼べません。ここから、定食を構成するごはん(主食)やおかず(主菜、副菜)、お味噌汁をどのように整理するかが1つのポイントだと言えるでしょう。

また、「昨日は魚だったから今日は肉」というように、おかずの種類(煮物系・焼き物系、魚系・肉系など)や和風定食(ごはん、お味噌汁)・洋風定食(パン、スープ)といった分類をモデリングしても面白いところです。

2. 読者解答モデル

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

読者解答1:うめぼ 様

  • コンセプト
    • 料理は食器に盛られている
    • 食器はおぼんの上にのっている
    • おぼんも食器とする
    • 箸も食器として扱う
    • 料理には元となる材料がある
    • おぼんには複数の食器が並ばれる場合もある
    • 食器には複数の料理が盛られる場合もある
    • 料理は複数の材料からつくられる場合もある
  • モデル
    • クラス図
      図 1 うめぼ 様の解答モデル(クラス図)
      図 1 うめぼ 様の解答モデル(クラス図)
    • オブジェクト図
      図 2 うめぼ 様の解答モデル(オブジェクト図)
      図 2 うめぼ 様の解答モデル(オブジェクト図)
  • 感想
    • 難しかったところ

      クラスの見つけ方が難しかったです。 それと料理と材料の多重度のつけ方が良くわからなかったです。 ひとつの材料で違う料理を作った場合はどうすれば良かったのか?悩みました。

    • 自己評価

      モデリング自体はじめてチャレンジしてみました。 はじめてにしては自分でも納得出来るものに近づけたと思っています。 まだまだ経験不足でして根本的に何か間違っているかもしれないので、 点数は20点とします。

  • コメント
    マスター   初めてモデリングをされたとのことです。なかなか良いモデルではないでしょうか。
     
    吉井さん   そうだね。ちゃんとモノを出して、モノの間の関係を整理してあるのが良いね。
     
    唐沢さん   ええ。モデルで伝えたいことをコンセプトで押さえていて、モデルハッキングに陥っていないところが良いです。
     
    久本くん   初めてのモデリングなのに、ちゃんと静的視点で見れているのはすごいです。見習わないと。
     
    唐沢さん   「定食とは何か?」を深めると、さらに良くなります。
     
    マスター   コンセプトですね。お題では定食のどういう側面をモデリングするかを示していませんから、だからこそしっかり考えなければいけないところでしょうね。
     
    久本くん   コンセプトは、定食というよりも「お膳」という感じがします。
     
    吉井さん   大きく3つのテーマがあるんだね。"食器"の構成、どの"食器皿"にどの"料理"を盛るかという配置、"料理"がどの"材料"から作られるか。
     
    唐沢さん   おそらくですが、定食の特徴は"食器"の構成にあると考えられているのでしょう。
     
    久本くん   1つの定食の中にいろいろな"料理"があるところが特徴なのかもしれないですよ。幕の内弁当みたいに。
     
    吉井さん   特徴は何か? コンセプトを決めるときに押さえたいところだね。それ"らしさ"はどこにあるんだろう?
     
    マスター   幕の内弁当というお話がありましたが、比較をすると特徴が見えてきますね。定食と幕の内弁当とは何が一緒で、何が異なるのでしょう。
     
    久本くん   ずばり、お味噌汁の有無です。
     
    唐沢さん   そうでしょうか? お味噌汁の付いている弁当もあります。
     
    吉井さん   そうやって特徴は何かを自問すると良いね。コンセプトを書き出したら、今度はコンセプトを眺めるようにしてみよう。
     
    マスター   自分はどのような視点で見ているのか。自分を客観的に眺めることができますね。
     
    吉井さん   うん。最後に1つだけ。関連が全て集約になっているけど、最初は普通の関連にした方が良いよ。そして、多重度とロール名(関連端名)を明記するようにしよう。
     

読者解答2:松田政博 様

  • コンセプト
    • 日替わり定食を表現する。
    • 定食は、主食、汁物、主菜、副菜などの食分類に属する食品を組み合わせたものである。
    • 各食分類は、主食、汁物、主菜、副菜などの性質に応じた食品を持つ。
    • 定食の献立は、主食、汁物、副食などの食分類に属する食品を組み合わせたものである。
  • モデル
    • クラス図
      図 3 松田政博 様の解答モデル(クラス図)
      図 3 松田政博 様の解答モデル(クラス図)
    • オブジェクト図
      図 4 松田政博 様の解答モデル(オブジェクト図)
      図 4 松田政博 様の解答モデル(オブジェクト図)
  • 感想
    • 難しかったところ

      定食の献立が主食、汁物、副食などの食分類に属する食品の組み合わせであることを表現するところ。

    • 自己評価

      定食の献立を決めるうえで、主食は1食品、副食は2食品までとかも表現すればよかったと思う。

  • コメント
    久本くん   日替わり定食ですね。好きなおかずの時ってうれしくなります。
     
    マスター   献立を決めるのは、なかなか大変なんですよ。
     
    唐沢さん   "主食""汁物""主菜""副菜"の組み合わせが"定食"である、と明確に示しています。よく分かります。
     
    吉井さん   だね。ぱしっと定食とは何かを捉えているね。
     
    久本くん   "定食"と"献立"の違いがよくわからないんですが。
     
    唐沢さん   "定食"クラスは「仕様(spec)」です。
     
    吉井さん   そうだね。ここに線を引くと分かりやすくならないかな。
     
    図 5 線を引く
    図 5 線を引く
     
    久本くん   なるほどー。上の方は仕様なんですね。
     
    マスター   線を1本引くだけで随分わかりやすくなりますね。
     
    吉井さん   仕様が上の方に配置されるよう、レイアウトが考えられているからね。
     
    唐沢さん   仕様のところで定食とはどういうものかを規定しています。そして、"献立"と"食品"のところで"ある日の「○○定食」"を表現しています。
     
    マスター   定食の大きな特徴の1つである"主食""汁物""主菜""副菜"というのを、うまく整理していますね。
     
    吉井さん   そうだね。ただ、オブジェクト図で"A 定食:定食"と"B 定食:定食"の違いがないのがおしいところかな。
     
    久本くん   "B 定食:定食"の場合はデザートが付くとかですか?
     
    唐沢さん   そうですね。定食にもいろいろなバリエーションがあることを考慮すれば、"定食"クラスが生きてきます。
     

読者解答3:GO5号 様

  • コンセプト
    • 定食は単品料理とセット料理の集まりである。
    • 定食もセット料理のひとつである。
    • ある定食に、料理を 1、2 品付加すると1グレード上の定食になる。
  • モデル
    • クラス図
      図 6 GO5号 様の解答モデル(クラス図)
      図 6 GO5号 様の解答モデル(クラス図)
    • オブジェクト図
      図 7 GO5号 様の解答モデル(オブジェクト図)
      図 7 GO5号 様の解答モデル(オブジェクト図)
  • 感想
    • 難しかったところ

      定食にはいろんな形態があり、本質をうまく捉えれなかった。

    • 自己評価

      あまり汎用的でないかも 50 点

  • コメント
    マスター   定食は"セット料理"の1つだという見方をされています。
     
    久本くん   ファミレスなんかではこんな感じが多いですよね。単品で注文もできるし、和食セットにすることもできるし。
     
    吉井さん   ごはんやおかずの定型的な構成ではなく、もっと組み合わせに自由度を持たせているね。
     
    久本くん   ハンバーガーショップも似ていますよね。ポテトとドリンクのセットとか。あれも、一種の定食かなぁ。
     
    唐沢さん   属性に"価格"があることから、セットの割引きをイメージされているようです。
     
    マスター   昔はそうではなかったと思うのですが、最近はセットで注文しなくても条件を満たすとセット扱いになるようですよ。割引きされていた記憶があります。
     
    吉井さん   「Square」も、お昼の食後のコーヒーは割引きしているよね。
     
    マスター   ええ。最初は定食だけだったのですが、今はスパゲティなどとの組み合わせでも割引きするようにしています。
     
    唐沢さん   そういうケースを考えれば、自由度のあるこのモデルは良いですね。定食という枠からは少し外れている気はしますが。
     
     
     
    吉井さん   コンポジット構造をしているところも特徴的かな。
     
    久本くん   オブジェクト図を見てコンポジット構造の意味は分かったんですが、なぜなのかがいまいちよく分かりません。これではだめですか?
     
    図 8 対案
    図 8 対案
     
    マスター   だめということはないでしょうね。捉え方の違いでしょうか。
     
    唐沢さん   ええ。"デザート"や"コーヒー"がオプションで付けられると見るか、それらは別のセット料理だと見るかの違いでしょう。
     
    吉井さん   うん。コンセプトにあるように、料理を付加するとグレードが上がると考えられているんだね。だから、オプションで付けられるという見方をされていると思うよ。
     
    久本くん   デザインパターンの「Decorator パターン」みたいですね。
     
    マスター   その考え方も面白いですね。描いてみましょう。
     
    図 9 「Decorator パターン」のように捉えた場合(クラス図)
    図 9 「Decorator パターン」のように捉えた場合(クラス図)
     
    吉井さん   こうすると、"単品料理"にいろいろな"オプション"を付けられるのが見て取れるね。
     
    久本くん   コーヒー・デザート付きの定食セットのハンバーグ、みたいになるんですね。贅沢だぁ。
     
    図 10 「Decorator パターン」のように捉えた場合(オブジェクト図)
    図 10 「Decorator パターン」のように捉えた場合(オブジェクト図)
     

3. 解答例

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

コンセプトの導出

見たままを、できるだけそのまま表現することを考えてみます。 すると、下図のように4つが揃った時に定食と言えそうです。

図 11 定食を見たままに表現する
図 11 定食を見たままに表現する
 

  

解答例

  • コンセプト

    定食の構成を見たままに捉える。

    • 定食は、"主食""汁もの""主菜""副菜"からなる。
      • ただし"副菜"は 0 個以上とする。
      • "漬け物"は対象外とする。
  • モデル
    • オブジェクト図
      図 12 解答例のオブジェクト図
      図 12 解答例のオブジェクト図
       
    • クラス図
      図 13 解答例のクラス図
      図 13 解答例のクラス図

コンセプトの導出(別バージョン)

今度は少し違った見方をしてみます。

よく、食後のコーヒーがランチセットで安くなるお店を見かけます。 また、カフェテリア方式のお店でも、特定の組み合わせだと安くなるシステムになっている場合がありますね。 このように、料理を単品でも頼めますが、定食のようなセットメニューだと割引きがある場合を考えます。

まず、単品でもそれらを組み合わせた定食でも注文できるとします。 ここから、定食と単品の料理の間には集約の関係があると考えます。

また、定食にはさらに"コーヒー付き""コーヒー無し"が選べるとします。 この場合を、定食とコーヒーが組み合わさっていると考えます。 すると、単品の組み合わせである定食に、更にコーヒーを組み合わせていることになります。 再帰的な関係がありますので、コンポジット構造になると捉えます。

ただ、コーヒーの有無程度であれば、コンポジット構造にするのは複雑すぎるかもしれませんね。 デザート割引きがあったり、ペア割引きがあったり、組み合わせにいろいろなバリエーションがあればうれしいかもしれません。 お疲れさまビール付きセットとかがあるとうれしいですねぇ。

  

解答例(別バージョン)

  • コンセプト
    • 定食はセットメニューで、単品の料理の組み合わせであるとする。
      • 定食セットの場合はお値段に割引きがある。
      • コーヒー付きは"定食+コーヒー"のセットメニューとする。つまり、定食セットの中に定食セットがあるコンポジット構造と捉える。
  • モデル
    • オブジェクト図
      図 14 解答例のオブジェクト図(別バージョン)
      図 14 解答例のオブジェクト図(別バージョン)
       
    • クラス図
      図 15 解答例のクラス図(別バージョン)
      図 15 解答例のクラス図(別バージョン)

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

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

【お題12】伝言メモ

お題(伝言メモ)
お題(伝言メモ)

伝言メモをモデリングしてください。 不足する情報は適宜補っていただいて結構です。補った情報は、コンセプトに記述してください。

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

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

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

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

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

引き続き、読者プレゼントを実施します。
弊社の 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. Elapiz(いらぴす)当選者発表

今回は応募がありませんでした。皆様のご応募お待ちしています。

改訂履歴

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