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

モデリング

モデリングカフェ 第16回:多言語コミュニケーションをモデリングする

モデリングカフェ「Square」~UMLでモデリングを愉しもう~
オージス総研 組み込みソリューション部
田中恒
2008年3月6日

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

目次
  1. 前回の問題(おせち)
  2. 読者解答モデル - 本文で紹介できなかった解答モデル
  3. 解答例
  4. 今月号の問題 (出題)
  5. 解答モデルの送付について
  6. 参考文献

1.前回の問題( おせち )

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

【お題15】おせち

我が家のおせちは、毎年、次のようになっています。

一の重黒豆
数の子
ごまめ
紅白かまぼこ
いくら
二の重海老
鯛
昆布巻き
伊達巻き
栗きんとん
三の重サトイモ
たたきごぼう
金時人参
蓮根
こんにゃく
高野豆腐
しいたけ
お題(おせち)

余談ですが、それぞれの料理には願いが込められています。代表的なものは次の通りです。

黒豆無病息災の願い
数の子子孫繁栄の願い
ごまめ豊年豊作の願い
たたきごぼう開運の願い
昆布巻き慶事の願い
海老長寿の願い
きんとん財産、富を得る願い

以上を読んで、おせちをモデリングしてください。

不足する情報は適宜補っていただいて結構です。補った情報は、コンセプトに記述してください。 解答はクラス図で表現して下さい。クラスには必要な属性を、関連には多重度を明記するのがポイントです (解答時間の目安は15分~30分です)。

ポイント解説

このお題から読み取れるポイントは次の 2 点です。

  1. お重(段)と料理の関係を表現する。
  2. 料理と願い事の関係を表現する。

それぞれについて見ていきましょう。

1 つ目のお重(段)と料理の関係は、もっともシンプルに考えれば、どのお重にどんな料理があるか、ということになります。 お重を開いたときに「あ、いくらだ」「こっちに海老が入ってる」というようなイメージですね。 例えば百貨店やオンラインショップでおせちを注文するときを想定すれば、「このおせちの場合、一の重の料理はこれこれです、二の重はこれこれが入っています」という関係が分かれば良いので、このシンプルなケースで十分と言えるでしょう。

少しおせちについて調べてみると、どのお重にどんな料理を詰めるのかに、目安程度のゆるいルールがあることが分かります。 一の重は口取りや祝肴を、二の重は酢の物を、三の重は煮物を、という具合です。 このことを重要と捉えるのであれば、「料理の種別」のような概念がお重と料理を結び付けると考えても良いでしょう。 ただ実際のところ、詰め方は絶対的な決まりごとではなく、地域や家庭によってさまざまだそうです。

おせち料理を作ってお重に詰める、その詰め方を問題とする場合は、この料理はどのお重に詰めるのか、という見方になるでしょう。 もっともシンプルに考えた場合は、お重と料理の関係で表現できますね。 ただ、「料理の種別」のような概念で両者を結び付けている場合は少し注意が必要です。 ある料理の種別が複数のお重にまたがるような関係の場合は、お題 14「百貨店のフロア」と同じような関係になるでしょう。 例えば、祝肴は一の重と二の重の両方に入ります、という場合です。

2 つ目の料理と願い事の関係は複雑に考える必要はなさそうです。 注意点としては、料理と願い事の多重度くらいでしょうか。 例えば、サトイモは子芋がたくさんつくことから、数の子と同じ子孫繁栄の願いがあるようです。 同じ願いの料理が複数あるケースを考えておけば良いでしょう。 ただお題の例を見る限り、料理と願い事の関係は 1 対 0..1 になっていますので、そのようにしても良いでしょう。 もしくは、「余談ですが」とあるくらいですので、ばっさりと切り捨てても良いかもしれません。

2. 読者解答モデル

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

読者解答1:ニミッツ 様

  • コンセプト

    願い事から料理を選択できる。なくなったものも含めて料理の残り量が分かる。

    • 重は重ねる事が出来る
    • 一番上の重には蓋を乗せる事が出来る
    • 各重には、1 個以上の料理が入っている
    • 料理はいずれか 1 つの重に入っている
    • 料理には、願いが込められている事もある
    • 願いは、複数の料理で同じ事がある
  • モデル
    • クラス図
      図 1 ニミッツ 様の解答モデル(クラス図)
      図 1 ニミッツ 様の解答モデル - クラス図

  • 感想
    • 難しかったところ

      短時間で想像力を働かせること。 多重度もよく考えると混乱してしまう。

    • モデルについて自己評価

      深く考えられなかったので 50 点。

  • コメント
    マスター   コンセプトの「願い事から料理を選択できる」というのは面白い見方ではないでしょうか。
     
    久本くん   そうですよね。やっぱりお正月ですから、今年は願いが叶いますようにっていうのは重要ですよ。
     
    唐沢さん   同じ料理ばかり食べることになりそうです。
     
    吉井さん   そうだね。願いのためにおせちを食べるってのは、順番が逆のような気もする。
     
    久本くん   う~ん。。。たたきごぼうばっかりってのは辛いなあ。
     
    マスター   開運ですか。
     
    吉井さん   それはともかく、モデルはシンプルだね。
     
    久本くん   お題から分かることをちゃんと捉えて、しかも素直に表現されていてすごいと思います。
     
    唐沢さん   ええ。「蓋」がどれほど重要かについては疑問も感じますが。
     
    マスター   問題というわけでもないでしょう。
     
    唐沢さん   そうですね。このモデルで一番の焦点は、もう一つのコンセプト「料理の残り量が分かる」でしょう。
     
    吉井さん   うん。つまり、インスタンスはまさに"このおせち"。2008 年お正月の我が家のおせちとか、目の前にあってまさに食べようとしているこのおせち。
     
    マスター   「料理」も、今年はうまく味付けできた"この黒豆"、という具合ですね。
     
    久本くん   「重」はどうなるんだろう。やっぱり"このお重"だとすると、「大きさ」とか「色」とか、「傷の数」とか・・・物そのものということですよね?
     
    唐沢さん   ええ。「重」にも属性があって良さそうです。「料理」で量を問題にしていますから「容量」属性はあって良いですね。「傷の数」は不要です。
     
    吉井さん   大事なことは、自分がモデリングしている対象の抽象度だね。インスタンスの抽象度をしっかりと意識して揃えておかないとおかしくなっちゃう。
     
    マスター   なるほど。確かに、多重度で「おや?」ということがありますね。
     
    ◇
     
    久本くん   多重度なんですが、「料理」がなくなったっていうのは「料理」クラスの「残り量」属性が 0 っていうことですか?
     
    唐沢さん   そうでしょう。「重」から見た「料理」の多重度は 1..* になってますから。
     
    マスター   全て食べてしまって空になった「重」でも、「料理」のインスタンスとは繋がっているんですね。
     
    吉井さん   そうなるね。
     
    久本くん   なんとなくすっきりしません。その辺が、感想の難しかったところ「多重度もよく考えると混乱してしまう」ということでしょうか。
     
    吉井さん   きっとそうだね。さっきの繰り返しになるけど、インスタンスの抽象度を定めておくことが重要だよ。
     

読者解答2:もぐたん 様

  • コンセプト

    おせちを作ってお重に詰める。

    • お重は 3 段で、上から一の重、二の重、三の重とする
    • お重のフタには料理は入らない
    • おせちを作る段階で、空のお重は作らない
    • 調理の必要がない料理もある
  • モデル
    • クラス図
      図 2 もぐたん 様の解答モデル(クラス図)
      図 2 もぐたん 様の解答モデル(クラス図)

    • オブジェクト図
      図 3 もぐたん 様の解答モデル(オブジェクト図)
      図 3 もぐたん 様の解答モデル(オブジェクト図)

  • 感想
    • 難しかったところ
      • オブジェクト図で、"調理"を登場させてしまったので、クラス図にどう表現するか迷った。
      • 「願い」をもっと膨らました方がよかったのかなぁ。
    • モデルについて自己評価
      • 初めて投稿するレベルまでこぎつけたので◎
  • コメント
    吉井さん   お、「調理」クラスがあるね。
     
    マスター   コンセプトに「おせちを作ってお重に詰める」とありますから、「調理」クラスが出たんですね。
     
    久本くん   きっと手伝わされるんですよ。僕も、毎年きんとん作り担当で、裏ごしするのに腕が疲れて。
     
    唐沢さん   おせちを作るのは大変だそうですね。
     
    マスター   特に調理方法に注目されたのはどうしてでしょうか。
     
    吉井さん   焼き物を煮物と一緒に詰めると汁に浸かっちゃうから、かな。
     
    唐沢さん   酢の物などもひどいことになります。でも、それは調理方法よりも「お重」への詰め方の問題でしょう。
     
    マスター   汁の出るものや酢の物などは小鉢に入れて詰めますから大丈夫ですよ。
     
    久本くん   作るときの段取りかもしれません。
     
    マスター   なるほど、煮物は時間がかかりますし、鍋やグリルが空かないと別の料理を作れませんから。
     
    吉井さん   「調理」クラスの属性に「道具」や「調理時間」があるから、そうかもしれない。
     
    唐沢さん   どうして「調理」に注目したのか知りたいです。
     
    マスター   ええ。その理由によっては、「お重」へ詰めるときの組み合わせが大事かもしれませんし、段取りということで「調理」の順番や道具の割り当てが大事かもしれませんね。
     
    久本くん   注目した理由で、どこをモデリングするのか変わるんですか。
     
    吉井さん   そう。大事になってくるポイントが変わるからね。だからコンセプトが重要なんだよ。
     
    ◇
     
    マスター   属性についてどう思われますか?
     
    久本くん   「料理」クラスの属性「願い」は、クラスになってもいいかなと思います。
     
    唐沢さん   「願い」を別クラスにしても良いですが、属性でも問題ないでしょう。それよりも「調理」クラスの方が気になります。
     
    吉井さん   そうだね。「調理」クラスのいくつかの属性はクラスの方がいいかもしれないな。
     
    マスター   「材料」属性に何が入るかなのですが、例えば「煮る」クラスの「材料」属性に「黒豆」が入るとすると、ある「煮る」という調理方法の特徴は「黒豆」である、という意味になりますね。
     
    久本くん   えと・・・どういう意味ですか?
     
    唐沢さん   つまり、不自然なことにならないか、ということです。
     
    吉井さん   「調理時間」は「煮る」という調理方法の時間ということで自然だよね。でも「材料」は「煮る」という調理方法の特徴じゃない。例えば「料理」の「材料」と考える方が自然なんじゃないかな。
     
    久本くん   それだと分かりやすいですね。
     

読者解答3:884 様

  • コンセプト
    • おせちは何段かの重箱につめられる。
    • 段ごとに、テーマがあり、テーマに沿った料理が詰められる。
      • テーマには、祝肴(口取り)、酢(口代わり)、煮物といったものがある。(ただし、我が家はちょっと違うところがあるみたい・・・)
    • 料理は段ごとに詰められる。
    • 料理は、美しく見せたり、または食欲をそそるように詰められる。
    • 詰め方には、五種、三種、段取り、市松、末広、手綱、田の字といったものがあり、段ごとに決める。
    • 料理は、選択した詰め方にそって詰められる。
    • それぞれの料理には願いがこめられている。
  • モデル
    • クラス図
      図 4 884 様の解答モデル(クラス図)
      図 4 884 様の解答モデル(クラス図)

    • オブジェクト図
      図 5 884 様の解答モデル(オブジェクト図)
      図 5 884 様の解答モデル(オブジェクト図)

  • 感想
    • 難しかったところ

      最初は、詰め方を関連クラスを使って表現しようとしたが、多重度が合わないのでやめたくらいです。 シンプルにすることにつとめました。

    • モデルについて自己評価

      ロール名のつけ方に不満があるので、75点。

  • コメント
    久本くん   コンセプトを見て思ったんですが、おせちにお詳しいですよね。
     
    吉井さん   ほんとだね。テーマとか詰め方とか知らなかったよ。
     
    唐沢さん   美しく詰めるというのは共感できます。
     
    マスター   おせちは華やかで、見るだけで楽しくなりますね。色鮮やかで美しい、和食の醍醐味です。
     
    唐沢さん   このモデルの特徴は、やはり「詰め方」でしょう。
     
    吉井さん   うん。美しいとか食欲をそそるとか、「詰め方」には特徴はないのかな。
     
    久本くん   コンセプトにはありますね。どこで表現されてるのかな。
     
    マスター   感想の難しかったところに「最初は、詰め方を関連クラスを使って表現しようとしたが、多重度が合わないのでやめた」とあります。うまく表現できなかったのではないでしょうか。
     
    唐沢さん   「詰め方」だけでは美しさが決まらないでしょう。「料理」の色や形も関係します。
     
    マスター   「料理」によって「詰め方」の向き不向きもあるのでしょうね。黒豆やいくらを手綱の詰め方にするのは無理がありそうです。
     
    久本くん   海老、いくら、鯛、の組み合わせだと豪華ですよね~。
     
    吉井さん   いやいや。主役ばっかりだとだめなんだよ、きっと。ちゃんと脇役がいないと主役が引き立たない。
     
    マスター   ええ。渋い脇役が居てこその主役です。
     
    唐沢さん   そうだとすると、「料理」には主役や脇役のような区分もありそうです。
     
    マスター   「詰め方」だけを突き詰めるのも面白そうですね。
     
    久本くん   いろいろな側面から最適な組み合わせを見つけるっていうお題ですね。
     
    吉井さん   「詰め方」から見た「重」の多重度が 1 なんだけど、同じ「詰め方」をしたらだめなものなの?
     
    マスター   そのようなことはないと思いますが。ミスでしょうか。
     
    久本くん   きっと、こだわりですよ。
     
    ◇
     
    唐沢さん   「蓋」について皆さんどう思われますか?
     
    久本くん   そういえば、さっきの 2 つのモデルにもありましたね。
     
    マスター   特に問題だとは思えませんが。
     
    唐沢さん   私は最初、「蓋」は重要ではないと考えていたのですが、実は重要なのかもしれないと。
     
    吉井さん   ふむ。どうして重要じゃないと考えてたのかな。
     
    唐沢さん   「蓋」には料理を詰めません。「料理」を「重」に詰めることを問題にしている以上、重要ではありません。
     
    久本くん   でも、ノートで「日持ちするように」ってありますし、大事なことかもしれませんよ。
     
    吉井さん   そうだね。コンセプトによっては重要になるということかな。
     
    唐沢さん   ええ。もし、保存を考えて「重」に詰めるのであれば、大事なことなのかもしれません。しかし、そうだとすると「料理」の属性に「痛みやすさ」などが必要ではないでしょうか。
     
    久本くん   そこまで難しく考えなくても良くないですか? お重に蓋はあるもの、くらいでも。
     
    マスター   そうですね。
     

3. 解答例

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

コンセプトの導出

おせちのお重と料理の関係、料理と願い事の関係をモデリングする。

(※抽象レベルの設定。ぶれないように。)

お重と料理の関係では、例えばおせちのカタログのように、どのお重にどの料理が詰められるのか、という"形式"の部分に注目する。 (「今年の我が家の、まさに今目の前にあるおせち」を表現するのではない。 そのため、いくらは食べてしまってなくなったなど、実体としてのおせちは対象としない。)

料理と願い事の関係では、「開運の願い」のように一般化された願い事を対象とする。 開運の願いとして「宝くじが当たりますように」という願いを込めている、のような具体的な願い事を対象とはしない。かといって、「何か良い事がありますように」のように一般化しすぎない。

  

解答例

  • コンセプト

    お重と料理の関係をモデリングする。

    • お重には段があり階層がある。上下に一列の階層である。
    • あるお重には複数の料理が詰められる。ある料理が複数のお重にまたがることはない。

    料理と願い事の関係をモデリングする。

    • ある料理には 1 つ願い事が込められていることがある。願い事がない料理もある。
    • 複数の料理が同じ願い事のこともある。サトイモにも子孫繁栄の願いがある(らしい)。

  • モデル
    • オブジェクト図
      図 6 解答例のオブジェクト図
      図 6 解答例のオブジェクト図

    • クラス図
      図 7 解答例のクラス図
      図 7 解答例のクラス図

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

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

【お題16】多言語コミュニケーション

たけしとキャシーが会話をしています。でも、日本語と英語が混ざっているようです。

お題(多言語コミュニケーション)
お題(多言語コミュニケーション)
  • たけし
    • 日本語を話せます。聞き取ることもできます。
    • 英語を聞き取れます。でも話せません。
  • キャシー
    • 英語を話せます。聞き取ることもできます。
    • 日本語を聞き取れます。でも話せません。

この状況をモデリングしてください。

不足する情報は適宜補っていただいて結構です。補った情報は、コンセプトに記述してください。 解答はクラス図で表現して下さい。クラスには必要な属性を、関連には多重度を明記するのがポイントです (解答時間の目安は15分~30分です)。

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

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

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

6.参考文献

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

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

改訂履歴

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