毎回、身近にあるモノや出来事など、簡単な【お題】を出題し、皆様にモデリングをして頂きます。次回の記事で、皆様の解答モデルの中から3つほど取り上げて、コメントを付けていくかたちで進めていきます。
1.前回の問題( Web 日記 )
前回の問題をもう一度確認しておきましょう。
【お題18】Web 日記
以下の状況を読んで、Web 日記をモデリングしてください。
『Square 日記サービス』では、会員になることで以下のサービスを受けられます。
- 会員は日記を書くことができます。テーマ毎に複数の日記を書くこともできます。
- 日記は日付単位で更新できます。
- 会員は、別の会員の日記にコメントを付けることができます。
不足する情報は適宜補っていただいて結構です。補った情報は、コンセプトに記述してください。 解答はクラス図で表現して下さい。クラスには必要な属性を、関連には多重度を明記するのがポイントです (解答時間の目安は15分~30分です)。
ポイント解説
このお題では次の2つがポイントでしょう。
- 会員と日記の関係
- 会員と日記、コメントの関係
会員と日記の関係では、テーマをどう考えるかが問題になるでしょう。特にテーマを設けていない日記の場合、特定のテーマに沿った日記の場合で、何が異なるのか、もしくは同じなのか、です。本質的には、会員が日記を書く、というだけの関係かもしれません。テーマがある場合もない場合も、その関係は変わらないからです。それに比べればテーマは、日記に付随した情報、くらいの位置付けかもしれませんね。
会員と日記、コメントの関係では、日記を書く会員とコメントを付ける会員が異なる、というのが問題になるでしょう。ただ、役割の違いと捉えれば、難しくはないと思います。
2. 読者解答モデル
いつものように、当カフェのマスターとヒトクセある!?常連たちと一緒に解答モデルを見ていきましょう。 コーヒーなどを飲みながら、皆様も一緒にわいわいやる感じで考えてみてください。
読者解答1:ランバ・ラル 様
- コンセプト
とにかくシンプルに。 付け足そうと思えばいくらでも増やせそうだが、あくまでもお題にある内容に忠実に。 テーマをクラスにしたくなるが「テーマ」をクラスにしない。
- モデル
- クラス図
図 1 ランバ・ラル 様の解答モデル - クラス図
- オブジェクト図
図 2 ランバ・ラル 様の解答モデル(オブジェクト図)
- クラス図
- 感想
- 難しかったところ
オブジェクト図
- モデルについて自己評価
75点
- 難しかったところ
- コメント
久本くん 趣味全開のオブジェクト図ですね(笑)。でも、とっても分かりやすいモデルです。コンセプトにあるように、お題をシンプルに表現していますね。
マスター ええ。「会員」が「日記」を書くこと、「日記」には「コメント」が付くこと、が一目で分かります。
吉井さん うん。でもお題にある『テーマ毎に複数の日記を書くこともできます。』が表現されていないのかな。
久本くん 「日記」クラスの属性に「テーマ」がありますよ。
吉井さん 本当だ。「日記」に付随する情報という理解なんだね。
唐沢さん 「テーマ」をクラスにしない、という判断をされた理由を知りたいですね。
マスター そうですね。モデルが妥当かを判断するには理由が欲しいところです。
唐沢さん 「テーマ」をクラスにするとしたら、どう表現しますか?
久本くん わたくしでよければ(笑)・・・「会員」と「日記」の間に「テーマ」クラスを挟みます。
吉井さん それだと、「会員」が「日記」を書くということが分かりにくくならない? 間じゃなくて「日記」の上に「テーマ」を置いてもいいかな。
マスター 「会員」が「日記」を書くことが本質ということでしょうか。
唐沢さん そう考えるのも1つでしょう。確かに『Square 日記サービス』には「テーマ」がありますが、日記には必ずテーマがある訳ではないですから。
マスター なるほど。本質的な部分を中心に、変化する部分を周辺にということですね。oO(・・・解答例も改善できますね)
◇
唐沢さん 「コメント」クラスに「投稿者:会員」という属性がありますが、これには違和感があります。
久本くん 「会員」クラスが出ているので、「会員」と「コメント」の関連で表現するのが自然な気がします。
吉井さん 文法の細かいことを言えば間違いとは言い切れないけどね。でも、妥当な表現は関連かな。よろし?(笑)
マスター クラスにするか属性にするかというのは、何か基準があるものでしょうか?
唐沢さん 久本くんに聞いてみたら?
久本くん そういう言い方、やめてほしいものだな。(笑)
吉井さん 久本くんなら出来てよ。(笑)
久本くん おだてないでください!(笑)
マスター 皆さん、お好きですね・・・
唐沢さん 脱線はこのくらいにして、実際のところ、ケースバイケースでしょう。私は概念の境界を意識します。その概念の内側にあるものか外側にあるものかです。
久本くん 難しいですね。
唐沢さん この場合、会員はコメントという概念の内側にあるものか?というと、違うでしょう。少なくとも、会員が日記を書くことは、コメントとは関係のない外側の話ですから。
◇
マスター 難しかったところで、オブジェクト図となっていますが、しっかり描けていると思うのですが。
吉井さん うん。描けてると思うよ。どの辺が難しかったのかな。
読者解答2:猫娘 様
- コンセプト
- 会員は1つ以上複数のテーマに参加できる。(コミュニティ)
- 会員は参加テーマに1日1つまで日記を投稿できる。
- 会員は参加テーマの他の会員、又は自分の日記にコメントを投稿できる。
- 本文のない日記にコメントはつけられない。
- テーマ内の日記は会員毎に前後の参照が可能である。
- モデル
- クラス図
図 3 猫娘 様の解答モデル(クラス図)
- オブジェクト図
図 4 猫娘 様の解答モデル(オブジェクト図)
- クラス図
- 感想
- 難しかったところ
テーマに投稿する日記ということで、テーマ・会員・コンテンツの関係をどうするかが難しかった。
- モデルについて自己評価
80点。
- 難しかったところ
- コメント
マスター テーマを「コミュニティ」と捉えられたのですね。
久本くん 面白いですね。
吉井さん 単に個人的なテーマではなく、複数人でテーマを共有するということかな。同じ趣味、同じ興味の人が集まるのは面白そうだね。
唐沢さん コミュニティの中で個人が日記を書くというのは、実際にあるのでしょうか?
久本くん コミュニティになると、スレッドを立てて議論する感じでしょうか。
マスター 日記とは少し事情が異なりそうですね。
吉井さん そうだね。あるテーマのコミュニティがあって、お題(スレッド)があって、そのスレッドにコメント書き込んで議論する、意見交換するという感じだね。掲示板か。
久本くん コミュニティとは少し違いますが、同じテーマに興味があって日記を書いている人を探すのに、このモデルは良い気がします。
吉井さん ふむ。「テーマ」と「会員」の関係が変わってくるけど、例えば「興味がある」という意味の関連だとすると、そうなるね。
唐沢さん 「テーマ」は「日記」に付けるタグというイメージでしょうか。
マスター なるほど。そう捉えた場合も同じようなモデルになりますね。
吉井さん このモデルは「テーマ」に関する本質を捉えているんだろうね。良いモデルだよ。
◇
久本くん コンセプトの最後「テーマ内の日記は会員毎に前後の参照が可能である。」は必要なんでしょうか。
マスター 日記が日付順に並んでいると分かる気がしますね。
唐沢さん 必要です。ないと「前」「後」の関連の意味が曖昧になってしまいます。
久本くん 曖昧ですか? 日付順に並ぶしかないと思うのですが・・・
吉井さん 「テーマ」と「日記」の関連を考えてみよう。この関連は、特定の「会員」の場合ではなく、その「テーマ」に沿って書かれた「日記」全部を含んでいるよ。
マスター なるほど。つまり、いろいろな「会員」が書いた「日記」があるということですね。「前」「後」というのが、「会員」は関係なく、投稿順という意味にもなることがあるんですね。
唐沢さん ええ。興味があるのは特定の「会員」の日記を追いかけること、と明示しています。必要なコンセプトです。
久本くん よく考えられてますね。すごい。
読者解答3:楢崎 様
- コンセプト
会員に着目する。
- モデル
- クラス図
図 5 楢崎 様の解答モデル - クラス図
- クラス図
- 感想
- 難しかったところ
日記について詳細にモデリングできていない。
- モデルについて自己評価
日記についての分析が十分でないと思う。
- 難しかったところ
- コメント
マスター コンセプトで『会員に着目する』とあります。
吉井さん ふむ。日記を書くときとコメントを付けるときで、「会員」の何かが違う、ということに気付いたんだね。
久本くん 違いますか?
唐沢さん モデルにあります。「日記」を書いた本人は「日記」を更新することができますが、それ以外の人はできません。
マスター きっと、削除するのも本人しかできないでしょうね。
久本くん そっかあ。なるほどです。
マスター ええ。日記を書いた「本人」と、コメントを書く「ゲスト」は違うということを表現しているんですね。これに気付かれたのはすばらしいと思います。
久本くん でも・・・「本人」クラスと「ゲスト」クラスは何か変な感じがします。
唐沢さん ええ。「会員」それ自体の性質の違い、分類の違いであれば汎化関係で表現して良いのですが、今回は違います。
吉井さん うん。「日記」と「会員」の関わり方で違いが出てくるんだよね。だから、「会員」の役割、見え方が違うのであって、「会員」自体の分類じゃないね。
久本くん 「会員」と「日記」の間に、違う意味の関連が2本あるということですか?
マスター そうですね。「会員」は、片方では「所有者」という役割、もう片方では「ゲスト」という役割になりますね。
◇
吉井さん これは印象なんだけど、全体的に振る舞い側面の方が強い感じだね。
久本くん どうしてですか?
マスター 関連にロール名(関連端名)がないからでしょうか。
吉井さん うん。関連が全部「○○が△△する」という形になっていることと、ロール名がないことが大きいかな。あと、「コメントを書く」という関連名は、名前の中に目的語が入ってる。
久本くん でも、クラスは「会員」「日記」というようにモノが出ていますよ。
マスター ええ。そこは良いですね。
唐沢さん 「日記」クラスを見ると「コメント」が属性に入っています。関連名が説明的で、目的語で対象がコメントであることを表現しています。
マスター 情報に注目してクラスを整理し、ロールを考えれば、構造的に表現することができそうですね。
吉井さん せっかくコンセプトに『会員に着目する』とあるので、着目した結果が欲しいかな。
久本くん そうですね。「会員」はどんなモノ、どんな性質のモノなのかが欲しいです。
マスター 難しかったところ、自己評価の『分析が十分でない』に繋がりますね。
唐沢さん 着目すると何が言えるのか、何が分かるのかが大切です。
3. 解答例
解答例としまして、当カフェのマスターのモデルを紹介致します。 コンセプト次第でモデルは変わりうるものですから、 正解としてではなく、1つの考え方としてご覧ください。
解答例
- コンセプト
会員は、テーマを作り、そのテーマに対して日記を書くと考える。
- 特にテーマがなく日記を書く場合は、「テーマ無し」というテーマで日記を書くとする。
- 会員は複数のテーマを持つことができる。
- 会員はテーマに対して日記を書く。日記は日付単位で書ける。また、日記は日付順に並んでいる。
会員は、日記に対してコメントを付けることができる。
- コメントは、ある会員が、ある日記に対して付けるものである。
- モデル
- オブジェクト図
図 6 解答例のオブジェクト図
- クラス図
図 7 解答例のクラス図
- オブジェクト図
4. 今月号の問題 (出題)
今月号の問題です。モデリングの進め方については、第 1 回のモデリングの進め方を参照してください。
【お題19】印鑑
久本くんは「久本」と刻まれた印鑑を持っています。
- 宅配便が届いたとき、配送記録書に1箇所押印しました。
- アパートの賃貸契約のとき、契約書に3箇所押印しました。
この状況をモデリングしてください。
不足する情報は適宜補っていただいて結構です。補った情報は、コンセプトに記述してください。 解答はクラス図で表現して下さい。クラスには必要な属性を、関連には多重度を明記するのがポイントです (解答時間の目安は15分~30分です)。
5. 解答モデルの送付について
解答モデルの送付についてをご覧ください。
なお、今月号は第 19 回です。
締め切りは 2008 年 10 月 23 日 (木) です。
解答例掲載は 2008 年 11 月号 ( 2008 年 11 月上旬 ) を予定しています。
6.参考文献
本連載では、文献[1]をベースに、より気軽にモデリングを愉しんでいただけるテイストにしております。 モデリングに関するしっかりした解説が欲しい場合には、以下の書籍をご覧になると良いと思います。
- 「思考系UMLモデリング即効エクササイズ モデ力を鍛える13の自主トレメニュー」、渡辺博之他、翔泳社
- 「UMLによるオブジェクト指向モデリングセルフレビューノート」、荒井玲子著、ディーアート
- 「UMLモデリングの本質」、児玉公信著、日経BP社
改訂履歴
- サイトテンプレート変更に伴う変更(2021年7月)