【モデルくどうかいはつ】

モデル駆動開発(MDD) とは?

最終更新:
💡 モデルを中心に、設計から実装へつなぐ

モデル駆動開発(MDD)は、構造や振る舞いを表すモデルを開発の中心に置く手法。モデルの変換やコード生成を利用し、OMGのMDAを例に自動化できる範囲と変更管理の注意点を解説します。

📌 このページのポイント
モデル駆動開発:モデルから実装へつなぐOMGのMDAを使う一例PIM実行基盤に依存しないモデルPSM選んだ実行基盤に依存するモデルモデルを変換生成されたコード.java / .sql等手書き部分との分離再生成で消さないモデル・生成規則・ツールの版を管理自動化の範囲は方式による。生成物もテスト
MDAのPIM→PSM→コード生成の例で、すべてのMDDがこの順序や名前を使うわけではありません。構造や振る舞いのモデルを中心に設計と実装をつなぎます。
ひよこ ひよこ
モデルって、AIのモデルのこと?
ペンギン先生 ペンギン先生
ここではシステムの構造や振る舞いを表すモデルだよ。UMLの図などが例だけど、見た目の図だけが大事なのではなく、要素や意味を定めたモデルを実装につなげることが大事なんだ。
ひよこ ひよこ
モデルから全部のコードが出てくるの?
ペンギン先生 ペンギン先生
ツールとモデルが対応する範囲によるよ。クラスの骨格だけを生成する場合も、処理までモデル化して広く生成する場合もある。変換を手作業で補うこともあり、細かい処理は必ず手書きという決まりもないんだ。
ひよこ ひよこ
PIM、PSMって出てきたけど何?
ペンギン先生 ペンギン先生
OMGのMDAで使う考え方だね。PIM(プラットフォーム非依存モデル)は特定の実行基盤に依存しないモデル、PSM(プラットフォーム依存モデル)は選んだ基盤の事情を反映したモデル。図はPIMからPSMへ変換し、コードを生成する一例で、すべてのMDDがこの順番や名前を使うわけではないよ。
ひよこ ひよこ
モデルを直せば、実装も常に正しくなる?
ペンギン先生 ペンギン先生
自動では保証できないよ。変換規則の誤りや手書き部分との不整合もあり得る。再生成で手作業の変更が消えないように分け、モデル・生成規則・ツールの版を管理し、生成物もテストする必要があるんだ。
ひよこ ひよこ
AIにコードを書いてもらうことと同じ?
ペンギン先生 ペンギン先生
自然言語からAIがコードを作るだけでは、モデル駆動開発とは限らないよ。MDDは明確な意味を持つモデルを中心に実装と結びつける考え方。AIをモデル作成や変換の補助に使うことはできるけど、どちらも結果の検証が必要だね。
もっと詳しく知りたい人へ

設計図を描くだけでもモデル駆動開発になる?

設計の説明に図を使うことと、モデルを開発の中心に置いて変換・実装・保守へ結びつけることは区別できます。どのモデルを正本にし、どの変更を生成物へ反映するかを決めると運用しやすくなります。自動生成は有力な手段ですが、自動化の範囲は採用する方式とツールによって違います。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「モデル駆動開発」って出てきたら「モデルを中心に、変換や生成で設計と実装をつなぐ開発」と思えばだいたいOK!
📖 おまけ:英語の意味
「Model-Driven Development」 = モデル駆動開発
💬 Modelは構造や振る舞いを抽象化した表現、Drivenはそれを中心に進めるという意味。OMGのMDAは関連する代表的なアプローチで、MDD全体と同じ名前ではないよ。

参考資料

← 用語集にもどる