メタモデル

メタモデル（Metamodel）とは、ソフトウェア工学およびシステム工学などにおいて、所定の問題領域でのモデリングに適用可能で有益なフレーム・規則・制限・モデル・理論を意味する。メタモデリング（Metamodeling）とは、メタモデルの分析・構築・開発を意味する。この用語はメタとモデルという用語の組み合わせである。
メタモデリングは「メタ」であるが故に、その活動とメタモデルは、メタ科学、メタ哲学、メタ理論、一般システム理論などで研究されている。そういった意味ではTOGA metatheoryによればメタモデルはゴール指向のメタ知識であり、モデル化する領域（参照領域）に関連している。そのため、理論的に言えばメタモデリングの成果であるモデル階層をメタモデル階層と混同するかもしれない。
計算の観点では、この概念は数学で使われており、計算機科学/計算機工学/ソフトウェア工学で実用のために応用されている。本項目は主に後者の観点で述べている。
概要.
計算機科学などでは、メタモデリングとはある領域内でのコンセプトの集合を構築することである。モデルは実世界の現象の抽象化であり、メタモデルはそれをさらに抽象化し、モデル自身の属性を際立たせたものと言える。モデルがメタモデルに従うということは、コンピュータプログラムがプログラミング言語の文法に従うのと相似している。メタモデルの一般的な利用法には以下のものがある:
定義.
ソフトウェア工学においては、モデルの利用がますます推奨されるようになっている。モデルの使用は従来のコードをベースとした開発技法とは対照的である。あるモデルは常に1つのメタモデルにしたがっている。モデル駆動工学の中でも特に活発なのがOMGが提案するモデル駆動型アーキテクチャ (MDA) である。MDAでは Meta-Object Facility (MOF) と呼ばれる言語でメタモデルを記述する。OMGが提案している典型的なメタモデルは、UML、SysML、SPEM、CWM である。ISOでも、で標準メタモデルを公開している。後述する各種言語も全てMOFで書かれたメタモデルとして定義される。
メタデータモデリング.
は、ソフトウェア工学やシステム工学で使われているメタモデリングの一種で、ある種の問題についてモデルを構築・分析するのに適している（データモデリングも参照）。
モデル変換.
モデル駆動工学の重要な活動の1つはモデル変換言語の体系的利用である。OMGはこのための標準規格QVT（Queries/Views/Transformations）を提案した。QVTはMOFに基づいている。モデル変換言語の中でもQVTに準拠した実装としては AndroMDA、、、 などがある。MOF/QVTにおいては、モデル変換自身もモデルである。このため、変換言語をメタモデルで定義できる。明確なメタモデルに基づいたモデル変換言語としては、ATLがある。
オントロジーとの関連.
メタモデルはオントロジーと密接に関連している。どちらもコンセプト間の関係を記述したり分析したりするのに使われることが多い。
メタモデルの種類.
ソフトウェア工学では、メタモデルの種類（および関連するメタモデリング手法）を以下のように分類できる: