先月号に引き続き、UML モデリングツールをお持ちでない方向けの読者プレゼントを実施しています。
弊社の UML モデリングツールである Elapiz スタンダードエディション の
Elapiz Basic の正規ライセンス(\15,750 相当)を、 解答モデルをご送付いただいた方の中から、抽選で 3 名の方にプレゼントいたします。
解答モデルの送付についてをご覧いただき、是非ご応募ください。
現在、応募していただいた方の当選確率は、85 %以上です!
オブジェクトの広場はオージス総研グループのエンジニアによる技術発表サイトです
毎回、身近にあるモノや出来事など、簡単な【お題】を出題し、皆様にモデリングをして頂きます。次回の記事で、皆様の解答モデルの中から3つほど取り上げて、コメントを付けていくかたちで進めていきます。
登山ルートをモデリングしてください。
奥岳山系の登山ルートは次のようになっています。

2つのルートが人気です。
不足する情報は適宜補っていただいて結構です。補った情報は、コンセプトに記述してください。
解答はクラス図で表現して下さい。クラスには必要な属性を、関連には多重度を明記するのがポイントです(解答時間の目安は15分~30分です)。
今回は、読者の皆様からこれまでで最多の解答モデルを頂きました。ありがとうございます。 これまでと同じように、3つの解答モデルをピックアップして、当カフェのマスターとヒトクセある!?常連たちと一緒に見ていきましょう。 皆様、飲み物の準備はできましたか? リラックスして、一緒にわいわいやる感じで考えてみてください。 また、残念ながら紹介することができなかった解答モデルはこちらに掲載しますので、 オブジェクトの広場 メーリングリストなどで意見交換していただければ幸いです。
1つの経路について、往復を、別々の経路と考えました。 詳細については、深く考えずに、地点と経路情報との関係だけを明確にすることを考えました。


幾つかの経路がある場合に、多重度をどう決めるかについて難しかったです。
今回は、3~4点です。
| マスター | コンセプトにあるように、地点と経路情報の関係を明確にしたいということで、意図が明確なモデルになっています |
|
| 唐沢さん | ええ。お題は一見複雑なのですが、「地点」とそれらを結ぶ「経路」という見方をすると同じことの繰り返しであることが分かります |
|
| 久本くん | 本質的な特徴を見つけ出しているってことですね |
|
| 吉井さん | そして、シンプルにそこだけをモデリングしてあるね。良いモデルだと思うよ |
|
| マスター | オブジェクト図を見て感じたのですが、地図を素直にそのまま表現されています |
|
| 吉井さん | そうだね。ノードとパスから作られるネットワークの形をしているものは、大抵、このような形になるね。地図もネットワークという側面があるから、そこに注目したということかな |
|
| |
||
| 久本くん | お題は登山ルートをモデリングせよってことだったんですが、このモデルでは登山ルートはどう考えたら良いのですか? |
|
| 唐沢さん | モデルでは、ある「地点」から見た「経路情報」の多重度が 0..* になっています。ですので、特定の「ルート」の場合とは考えていないのではないでしょうか |
|
| マスター | ですが、オブジェクト図は、あるルート上に存在する「地点」と「経路情報」を描いています |
|
| 吉井さん | クラス図で地図を表現して、オブジェクト図で「ルート」を表現しているのかもしれないね |
|
| 久本くん | そうか。いろいろなルートの場合を考えていくと、最終的には正に地図になりますね |
|
| |
||
| 吉井さん | このお題では、「経路情報」のインスタンスが何を指すのかが1つのポイントかな |
|
| 唐沢さん | そうですね。コンセプトにも示されています |
|
| 久本くん | え~と・・・どういうことですか? |
|
| マスター | 例えば「奥岳」と「屏風岳」の間の「道」はいくつありますか? |
|
| 久本くん | 「道」は1つです。あっ、コンセプトでは往復を別々の経路としてるんですね(図 3) |
|
![]() 図 3 道と経路は異なる |
||
| 唐沢さん | では、なぜ別々にしたのでしょうか? |
|
| 吉井さん | うん、そこは考えておきたいところだね。何か見落としているかもしれないし、暗黙的な条件があるのかもしれない |
|
| マスター | お題を素直に見ると、向きによって所要時間が変わってきますね。ですから、往路と復路は別の実体として考えられたのでしょう。実際、登りの時と下りのときではしんどさがぜんぜん違うことがありますし |
|
| 唐沢さん | そうですね。ですが「危険」や「注意」は向きに関係なく「道」の情報だと考える方が自然でしょう。今回はモデリングの対象範囲とされなかったようですが、これらを考えていくと問題になるかもしれません |
|
| 吉井さん | 往復を分けた方が良いかどうかは場合によるよね。だから大切なことは、どうしてそうしたのか、ということかな。モデルはこうなっています、だけではなく、こういう理由でこうなっています、というところをしっかり押さえておきたいね |
|


地点と登山道の関連(力地蔵~奥岳、奥岳~大奥岳)をどう表現するか。
「難度」という名前がしっくりこないのですが、まずまずでしょうか。
| 唐沢さん | 地図の情報とルートを区別しているのがとても素晴らしいです |
|
| 吉井さん | 地図は地図としてあって、じゃあ、どういうルートを選ぼうか、というのはまた別の興味ということだね |
|
| マスター | オブジェクト図を見るとそれがよくわかります。「登山道」を繋いでいくと「登山ルート」になります |
|
| 久本くん | 本当だ。「登山ルート」のインスタンスを隠して見ると地図になっていますね |
|
| 唐沢さん | 「人気ルート」というところが少し検討不足でしょうか |
|
| 吉井さん | だね。「人気」って何?、というところで悩まれたのかな |
|
| |
||
| マスター | OCL では何を伝えようとされているのでしょう |
|
| 久本くん | 常に、所要時間は正であること、始点と終点は異なる「地点」であること、始点と終点はどちらも同じ「系」に属していることでしょうか |
|
| 吉井さん | うん、確かにそうなんだけど、それは本当に伝えたいことなのかな |
|
| マスター | 所要時間が正であることは改めて言う必要はないかもしれませんね |
|
| 唐沢さん | おそらくですが、同じ「地点」の間に所要時間が 0(言い換えれば、距離が 0)の「登山道」ができないようにしたかったのではないでしょうか。結果として、このような場合も許されなくなりましたが(図 6) |
|
![]() 図 6 輪になった登山道 |
||
| |
||
| 久本くん | {sequence} という制約を初めて見ました。{ordered} とは何が違うのですか? |
|
| 唐沢さん | どちらも順序付きということですが、順序付きの "bag" か、順序付きの "set" かの違いですね |
|
| マスター | 簡単に言いますと、同じインスタンスの重複を許すか、許さないか、です。{sequence} の場合は同じインスタンスが繰り返し出てきても良く、{ordered} の場合は同じインスタンスが出てきてはいけません |
|
| 吉井さん | このモデルでは、ある「登山ルート」に同じ「登山道」が繰り返し出てきても良いということだね。こんな場合かな(図 7) |
|
![]() 図 7 ある登山道が繰り返し出る例 |
||

人気ルートは、クラス図にどう表せばよいか?表せないと思うので表記していない。
概ねできたと思う。
| マスター | 1つ特徴的な捉え方をされています |
|
| 久本くん | 「ルート」は「地点」が集まって出来ているんですね |
|
| 吉井さん | そうだね。「ルート」は「区間」が集まっている、と考えることも、「ルート」は「地点」が集まっている、と考えることもできるね |
|
| 唐沢さん | ええ。でも、「ルート」は「地点」が集まっていると考えるのには若干の違和感を感じます |
|
| 久本くん | そうですね。「ルート」は 1 本の線だし、「区間」が繋がっている方が自然じゃないですか? |
|
| 吉井さん | それはモデリングするときにどこに興味を持っているかで変わってくるよ。例えば、スタンプラリーの場合だったらどうかな? |
|
| 久本くん | ・・・「地点」が繋がっている方が自然ですね |
|
| 吉井さん | だね。たぶん、違和感を感じたのは「ルート」の所要時間に興味があったからじゃないかな。所要時間は「地点」と「地点」の間にあるものだから |
|
| |
||
| マスター | 人気ルートをどう表せば良いか悩まれたそうです |
|
| 吉井さん | 皆だったらどう表現する? |
|
| 久本くん | 「人気」っていうクラスを出して「ルート」と関連付けるかなぁ |
|
![]() 図 9 人気クラスを出す場合 |
||
| マスター | 「ルート」には人気ルートと不人気ルートがある、というように分類できるので汎化関係でしょうか。ちょっと不自然ですね |
|
| 唐沢さん | 私は「ルート」クラスに「人気度」のような属性を付けますね |
|
![]() 図 10 人気を属性にする場合 |
||
| 吉井さん | もし、"初心者向けルート"・"健脚者向けルート"・"熟練者向けルート"といったランクのようなものと同じように「人気」を捉えたら、久本くんの案でいいかもしれないね。人気にいくつか分類があるときとか。でも、このお題では人気についてあまり触れられていないから、唐沢さんの案のように属性にしておいてもいいと思うよ |
|
解答例としまして、当カフェのマスターのモデルを紹介致します。 コンセプト次第でモデルは変わりうるものですから、 正解としてではなく、1つの考え方としてご覧ください。
地図の情報とどこを通るか(登山ルート)をモデリングする


今月の問題です。モデリングの進め方については、第 1 回のモデリングの進め方を参照してください。
カレーの作り方をモデリングしてください。
不足する情報は適宜補っていただいて結構です。補った情報は、コンセプトに記述してください。

お題(カレーの作り方)
解答はクラス図で表現して下さい。クラスには必要な属性を、関連には多重度を明記するのがポイントです (解答時間の目安は15分~30分です)。
解答モデルの送付についてをご覧ください。
なお、今月号は第 7 回です。
締め切りは 2006 年 9 月 7 日 (木) です。
解答例掲載は 10 月号 ( 10月上旬 ) を予定しています。
先月号に引き続き、UML モデリングツールをお持ちでない方向けの読者プレゼントを実施しています。
弊社の UML モデリングツールである Elapiz スタンダードエディション の
Elapiz Basic の正規ライセンス(\15,750 相当)を、 解答モデルをご送付いただいた方の中から、抽選で 3 名の方にプレゼントいたします。
解答モデルの送付についてをご覧いただき、是非ご応募ください。
現在、応募していただいた方の当選確率は、85 %以上です!
本連載では、文献[1]をベースに、より気軽にモデリングを愉しんでいただけるテイストにしております。モデリングに関するしっかりした解説が欲しい場合には、以下の書籍をご覧になると良いと思います。
先月号の Elapiz Basic の正規ライセンスの当選者を発表いたします。おめでとうございます!!
なお、当選者の方には、後日改めてメールにてご連絡いたします。お楽しみに!!
改訂履歴