ストラタジーナム メニュー

2007年6月15日金曜日

UML中級講座 第115回 プロファイルとMOF

知人に、茨城県から都内の職場へ通っている人がおります。長年、常磐線を使っていたそうですが、最近、筑波エクスプレスが開通し、通勤環境が劇的に向上してきたそうです。

筆者は、この話を聞いて、今から20年ほど前、高校時代の友人が就職で関西から上京し、初めてMという常磐線に近い町に住み始めた頃の事を思い出しました。友人は、学生時代まで関西でしたので、東京に土地勘がなく、なんとなくMに引越したそうです。Mと言う町は(市かも知れません)田園風景の中ののどかな場所だそうで、町そのものには何の不満も無かったそうですが、通勤の行き帰りに利用する常磐線の混み方が半端でなく酷いと、当時、久々に会った筆者に訴えていました。
まず、混んでいる状態の判断基準が違うそうです。
常磐線では、ホームに電車が入ってきてドアが自動的に開くようでは、混んでると言ってはいけません。
列車がホームに近づくと、乗客たちは、ホームに待っている黒山の人だかりをみて、これ以上乗ってきては困ると、盛んに圧力を上げてドアが開かないように抵抗を試みます。
ホームで待っている人たちは、この文字通りの無言の抵抗に対し、外から自動ドアに手をかけ思いっきりひっぱって開けるそうで、その際、中から二、三人、勢い余ってホームへころげ落ちてきます。
そんな大混雑なのに、不思議なことに、あれだけホームに人が溢れていたにも関わらず、最終的に皆乗れてしまうのは、どういうわけでしょうか?友人も、それは謎だと言っていました。
友人は、ラッシュの中で、2度ほど眼鏡を無くしたそうです。あっという間に人と人の間に消えて行ってしまい、まったくどうしようもなかったそうです。
また、車内の圧力で窓ガラスがしょっちゅう割れるらしいのですが、皆慣れっこになっていて、血を流している人も含め、「ああ、またか」と言う感じで平然としているらしいのです。

彼の話を聞いて、あまりの壮絶さに「常磐線恐るべし」と言う固定観念が植え付けられてしまい、ラッシュ時の常磐線は極力近づかないようになってしまいました。今でも、こっちの方面は、まったくと言っていいほど土地勘がありません。
その結果、幸か不幸か、この話がどの程度ほんとうかは、20年以上経っても実地に体験する事が無く真実はわかりません。
ただ、たまに、常磐線で通勤していると言う人に会った時に、この話をしても、皆、否定しないので、かなり真実を突いているのでは、と想像しています。

茨城県から筑波エクスプレスで通っている知人は、この電車のおかげで、通勤環境が地獄から天国に上がったと言っています。そう言えば、声のピッチも三度ほど上がったような気がします。しかしながら、筆者は昔のイメージが強いため、実際に乗って確かめる勇気はありません。



プロファイルとMOF

前回お話しましたように、プロファイルは元の言語体系を変えずに拡張のみを行なうのに対し、MOFは、基本的にメタモデルを自由に変更する事が可能です。その意味で、MOFはプロファイルの機能を含むと言う言い方が出来ます。
そして事実、プロファイルで拡張したものを、MOFの表現で記述することが出来ます。

図I04は、インターフェースと言うメタクラスを拡張し、ホームと言うステレオタイプを拡張しています。

図 I04



これと同等の表現をMOFモデルを使って書くと、図I03のようになります。MOFによる拡張は、この図に示されるように、コンポジット集約の形になります。元のメタクラス「インタフェース」がステレオタイプ「ホーム」(これもメタクラスです)を占有し、かつステレオタイプ側から、コンポジット側(元のメタクラス)への誘導可能性が必要になります。(つまり、両方向へ誘導可能)
コンポジット側の多重度は1となりますが、[ホーム」側のインターフェースは、0..1となっています。
前者は、コンポジット集約であることの制約により当然1ですが、後者は、0..1以外の多重度を持つ場合があります。これについては、後日、解説致します。

図 I03




2007年6月6日水曜日

UML中級講座 第114回 インタフェースの拡張例

筆者が20代の頃、アメリカにしばらく住んでいたことがあったのですが、ご存知の通りアメリカの会社は4時過ぎぐらいになると社員が皆帰ってしまい、アメリカに来て間もない頃は、退社後の時間をどうやって過ごすかは、一つの重要な課題でした。
筆者が住んでいたのは、アメリカ南部の田舎町で(ノースカロライナ州の州都、ローリーと言う町です)、ゴルフ場とかテニスコートなどはやたらあるのですが、東京の六本木や渋谷のような若者が好みそうなナウい(死語 失礼)繁華街はありませんでした。たまに、職場の人間とゴルフをしたり食事をしたりする事はあったのですが、とても毎日と言う訳にはいきません。
日本にいる時は、テレビはほとんど見なかったのですが、退屈を持て余してスイッチを入れる事も多くなりました。しかしながら、言葉の問題もありますが、正直言って全然面白くなく、10分もするとテレビの前にいるのが苦痛になって来ます。
その当時、アメリカ人の友人で100チャンネル以上映るテレビを持っている人がおり、筆者も映るチャンネル数を増やす契約をしようかと相談した所、実は、彼自身もほとんど見ておらず、家族、特に子供が見ているだけと言うことが判明しました。彼は、「くだらない10個のチャンネルが、くだらない100個のチャネルになるだけだ。」と言い捨てていました。
個人差はあると思いますが、20〜30歳以降の男は段々テレビを見なくなっていく傾向があるように感じます。筆者も、小学生の頃はテレビが大好きで、ニュースと相撲以外の番組をほとんど見ない自分の父親を不思議な気持ちで眺めていましたが、気がつくと自分がそうなってしまいました。
たまに友人と旅行先の旅館などでテレビを見たりしますが、筆者などは10分も経たずに降参してしまいますが、中には1時間以上一心不乱に見入っている人がいたりします。「面白いか?」と聞くと、「いや全然」と答えながら平然と見続けていたりします。こういう人は、きっと長時間の座禅なども平然と組めるタイプでしょう。

インタフェースの拡張例

前回、プロファイルによって、ほとんど全てのUMLモデル要素を拡張出来るお話をしましたが、本日は、例としてインタフェースの拡張を見てみましょう。

図I-01の(A)図は、メタクラス”Interface”を拡張し、"Remote"と言う名前のステレオタイプを定義していることを示しています。
この絵は、いわゆるメタモデル図であり、言語を拡張していることを示しています。
この拡張により、ステレオタイプ<<Remote>>が、ユーザーモデル層で使用可能になります。
(B)図は、その表記例です。
この図中の「テスト」と名付けられたエレメントは、インターフェースの性質を引き継ぐと共に、「Remote」で定義された性質(メタ属性やアイコンなど)を継承します。


図 I-01






2007年6月4日月曜日

UML中級講座 第113回 拡張

5月の連休中に都内某所のビルにこもって書き物系の仕事をしていたのですが、どうも、それ以降、体調がすぐれず、オフィスの移転等もあって普段よりも忙しかったせいもあり、ブログを書く余力がありませんでした。
月が変わり、6月に入りようやく本来の調子を取り戻しつつあります。

実は、連休中にこもっていたビルは、オフィスの移転先の候補としても考えていたのですが、諸般の事情により取りやめた場所でした。見晴らしも良く、都心であるにも関わらず静かであり、非常に好条件でした。個人的には大変気に入っており、連休中のため、移転先のオフィスのごたごたがなかなか片付かない状態でしたので、無理を言って、一週間ばかり一室を書斎のように使わせてもらっていました。
ゴールデン・ウイークのためビルにまったくと言っていいほど人影はなく、ビルを独り占めしているかのような状態でした。筆者は、書き物系の仕事になると生活が段々夜型にシフトして行く性格(タチ)ですが、この時も徐々に帰宅が深夜帯になってきました。
最後の日、筆者は夜の2時半ごろ仕事を切り上げ部屋を出ました。暗い廊下の向こうにエレベータ・ホールがあり、ランプが下の階からエレベータが昇って来つつあることを示していました。こんな時間に、いったい誰がエレベータに乗っているのか訝しく思われ、入口から少し離れた所で立ち止まって見ていました。日中も含め、ほとんど誰にも会わない状態でしたので、ひょっとしたら”ビル荒し”などが入ってきたのでは、と良からぬ想像が頭に浮かんだり、もし、この階(最上階でした)に見知らぬ人物が昇って来たら、どういう言葉で挨拶しようかなどとつまらないことを考えたりしながらランプの動きを見ていました。こういう時は、ビルの隣が墓地であることも脳裏をかすめたりします。
そうしているうちに、エレベータは最上階まで昇ってきました。暗い廊下に明るい影を映しながらドアが開きましたが、誰も降りて来ません。エレベータは無人で昇ってきたのでした。
きっと、最後に乗った誰かが間違えてこの階のボタンを押したのだろうと自分自身に思い込ませながら、筆者はエレベータに乗り一階まで降りて行きましたが、乗っている間、いい気持ちはしませんでした。
体調がくずれ始めたのは、その日以降です。翌日は結構熱が出ました。きっと気のせい、あるいは偶然だと思いますが、誰かに話すことにより、気も晴れるだろうと思い、このブログに書いてみました。


拡張の表現

前回に述べましたように、プロファイルを用いた拡張は、既存の言語のルールはそのまま温存します。そして、事前に定義されているUML図の構成要素(エレメント)に新規に機能を付け加え、(同じ名前ですと言語を変更してしまうので)別の名前を付けて言語体系に付け加えます。この新たに付けられた名前をステレオタイプ名と呼びます。
図I-02で示される矢印は、拡張を表現します。ターゲット側に拡張される側の既存のエレメントを置き、ソース側に拡張の結果生成される新たなステレオタイプを書きます。
拡張される側のエレメントは、クラス、コメントなどほとんど全てのUMLエレメントが対象となりますが、唯一例外があり、ステレオタイプ自身はプロファイルにより拡張することができません。

図I-02



次回は、この拡張の具体例の表記を見てみましょう。