メタモデル
見なれない単語がタイトルになっているとお思いの方もいるでしょうから、ま ず言葉の意味から説明します。
「モデル」というのは対象となるものをわかりやすく説明したものです。ここ では「クラス図」や「インスタンス図」のことだと思ってもらってかまいませ ん。そして「メタモデル」とは、「モデルのモデル」のことです。つまり、 「五行はどういう関係にあるか」というのをモデル化したのが「五行相関図」 というモデルであり、「五行相関図というのはどういう仕組みになっているか」 というモデルがメタモデルなのです。
クラス図とインスタンス図の関係
なぜここで「メタモデル」という言葉を出すのかというと、これがちょうどク ラス図とインスタンス図の関係だからです。インスタンス図が現実世界をその まま図にしたモデルだとすれば、クラス図というのはその図の構造を示したモ デル、つまりメタモデルにあたるのです。
例えば、以前に「裁判所のしくみ」というクラス図の例を示しました。この図 は下のインスタンス図のメタモデルにあたります。
裁判所の構成図
実際にあるそれぞれの裁判所がインスタンスです。そしてその間の関係を書い たのがインスタンス図でした。これは実際にはすべての裁判所の名前を書き出 し、その間を線で結んだ図になります。
それに対して、この図の特徴を表現しようとしたのが前述のクラス図です。こ のクラス図は、文章で書けば次のことを言っています。
「最高裁判所」「高等裁判所」「地方裁判所」「家庭裁判所」 「簡易裁判所」の5種類の裁判所がある。
上位の裁判所と、「上告」「抗告」「公訴(民事)」「公訴 (刑事)」という4つの関係のどれかで結ぶ。
端的に言うと、クラス図というのはインスタンス図の書き方を指示している図 なのです。
UMLというメタモデル
メタモデルとは何かがわかれば、UMLというのもまたメタモデルであることが わかるでしょう。ここで書いている事柄は、「クラス図やインスタンス図の書 き方」を指示しているものです。つまり、すべてのクラス図やインスタンス図 のメタモデルなのです。
クラス図を書くためのメタモデルは次の2種類のことを規定しています。
モデルをどう表現すればいいか
モデルをどうやって図に書けばいいか
前者は例えば「クラスとは何か」「インスタンスとは何か」という話で、後者 は「クラスは箱の中に名前を書いて表します」とか「関係は線で書きます」と いう話です。
UMLでは前者の「クラスとは何か」というような問題には答えていません。後 者の「モデルをどうやって書けばいいか」という問題だけに答えています。で すからUMLだけを勉強しても無駄なのです。モデルをどう表現するかを考えま しょう。
常にメタモデルを考えよ
何かをモデル化したら、常にメタモデルを考えましょう。まずは対象世界につ いてインスタンス図を書いてみて、その図の法則を考えるのです。それがクラ ス図です。もしクラス図にもまた決まったパターンが見えてきたら、そのパター ンをモデル化することを考えましょう。それがメタクラス図です。
何かをやっていて「同じ事の繰り返しで面倒臭い」と思ったら、それはメタモ デルの出番です。図を全部書くのが面倒になって「……」でごまかそうとした 時もメタモデルの出番です。自分が何を繰り返しているのかを考え、それをモ デル化しましょう。そうすれば一段高い視点から物を見ることができます。そ して自分がやっている事への理解が深まります。