現代のソフトウェア開発において、複雑なシステムを効率的に設計するための「モデル駆動工学」は欠かせない手法です。その中核を担う標準規格の一つが、Object Management Group (OMG) によって策定されたMOF (Meta-Object Facility) です。MOFは、オブジェクトの構造や振る舞いを定義するための型システムを提供し、モデルを構築するための「言語」としての役割を果たします。
もともとはCORBAアーキテクチャにおけるエンティティの型システムとして開発されましたが、現在ではドメイン駆動設計やオブジェクト指向モデリングなど、幅広い設計領域で活用されています。
Key Facts
- OMG標準:モデル駆動工学のための国際的な標準規格である。
- 4層構造:M0からM3までの階層的なメタモデリングアーキテクチャを持つ。
- メタ言語としての機能:UMLなどのメタモデルを定義するための基盤となる。
- 相互運用性:XMIを通じてXML形式でのモデル交換が可能である。
- 国際規格:ISO/IEC 19508 (MOF 2.4.2) などの国際標準として認定されている。
MOFの階層的なメタモデリングアーキテクチャ
MOFの最大の特徴は、モデルを定義するためのモデルを重ね合わせる「4層構造」にあります。これにより、抽象度の異なる情報を整理して管理することが可能です。
- M3層 (メタメタモデル):最上位の層であり、MOF自身がこの層に位置します。M2層のメタモデルを構築するための言語として機能します。
- M2層 (メタモデル):M3層を用いて定義される層です。代表的な例として、UML自体の定義である「UMLメタモデル」が挙げられます。
- M1層 (モデル):M2層のルールに従って作成された具体的なモデルです。例えば、UMLを用いて記述された設計図がこれに当たります。
- M0層 (データ層):現実世界の具体的なオブジェクトやインスタンスを記述する最下層です。

この構造は「閉じたメタモデリングアーキテクチャ」と呼ばれ、M3層であるMOFが自分自身に適合するように設計されています。これは、プログラミング言語の文法を定義するEBNFと同様の役割を担っており、MOFはメタモデルを定義するためのドメイン固有言語 (DSL) と言えます。
技術仕様とエコシステム
MOFは単なる概念的な枠組みではなく、実装や変換のための具体的な仕様を備えています。特にCORBAインターフェースを定義することで、モデルの作成や操作をプログラムから制御することが可能です。
データ交換と変換フォーマット
異なるツール間でモデルをやり取りするために、以下の仕様が定義されています。
- XMI (XML Metadata Interchange):MOFモデルをW3C XMLやXSDに変換するための標準フォーマットです(ISO/IEC 19503)。
- JMI (Java Metadata Interchange):MOFモデルをJava APIで操作するための仕様です。
主要なバリアントと関連規格
用途に応じて、MOFにはいくつかの派生形や補完的な規格が存在します。
- EMOF (Essential MOF):MOFの核となる機能を抽出した仕様。Eclipse Modeling Framework (EMF) のECoreはこのEMOFに準拠しています。
- CMOF (Complete MOF):完全な機能セットを持つ仕様。
- SMOF (Semantic MOF):意味論的な拡張を目指した提案仕様。
- OCL (Object Constraint Language):述語論理を用いてモデルに制約を課すための形式言語。
- QVT (Query/View/Transformation):MOFベースのモデルをクエリし、変換するための標準規格。
MOFの概要まとめ
| 項目 | 内容 |
|---|---|
| 策定団体 | Object Management Group (OMG) |
| 主な目的 | メタモデル定義のための共通基盤の提供 |
| アーキテクチャ | 4層構造 (M0, M1, M2, M3) |
| 交換フォーマット | XMI (XMLベース) |
| 国際標準番号 | ISO/IEC 19508 (MOF 2.4.2) / ISO/IEC 19502 (MOF 1.4) |
Frequently Asked Questions
MOFとUMLはどう違うのですか?
UMLはシステムを設計するための「モデリング言語」ですが、MOFはUMLのような言語そのものを定義するための「メタ言語」です。つまり、UMLのルール(クラスや関連などの定義)はMOFを用いて記述されています。
M3層が「自分自身に適合する」とはどういう意味ですか?
MOFという言語を使って、MOF自身の構造を定義できることを意味します。これにより、無限に階層を上げる必要がなく、M3層で定義が完結する「閉じた」構造が実現しています。
XMIを利用するメリットは何ですか?
XMIを利用することで、特定のモデリングツールに依存せず、XML形式でモデルデータを保存したり、異なるツール間でモデルを移行したりすることが可能になります。
DMTFのMOFとは同じものですか?
いいえ、異なります。Distributed Management Task Force (DMTF) が定義している「Managed Object Format (MOF)」は、CIM (Common Information Model) インフラストラクチャに関連する別の規格であり、OMGのMeta-Object Facilityとは混同しないよう注意が必要です。
References
- "OMG Meta-Object Facility (MOF) Core Specification, Version 2.4.1". . p. 1. Retrieved 17 February 2014.
- "Common Facilities RFP-5: Meta-Object Facility" (PDF). Object Management Group. 2 May 1996. Retrieved 14 January 2014.
- Common Interface Model (CIM) Interface Structure, version 2.5.0