【ぴーあいえむ】

PIM(プラットフォーム非依存モデル) とは?

公開:
💡 技術を選ぶ前に、システムの仕組みを描く

PIMは、対象とする特定の実装基盤に依存せず、システムの構造や振る舞いを表すモデル。モデル駆動開発のMDAで使われ、業務のルールと実装技術の選択を分けて考えるために役立ちます。

📌 このページのポイント
PIM:共通の仕組みをモデルに 注文システムのPIM 注文は複数の明細を持つ 合計=単価×数量の合計 特定の言語・DBの定義に結びつけない 基盤に合わせて変換 Java向けPSM C#向けPSM Javaのクラスへ C#のクラスへ 同じ業務ルールを、異なる技術の設計へ
注文モデルの例。矢印はモデルの変換を表します。変換には基盤ごとの規則が必要です。
ひよこ ひよこ
PIMって、どんなことを書くの?
ペンギン先生 ペンギン先生
例えば注文システムなら「注文は複数の明細を持つ」「合計は各明細の単価×数量を足す」といった構造やルールを表すよ。ここではJavaのクラスや特定のDBのテーブル定義に結びつけず、システムが扱う意味を整理するんだ。
ひよこ ひよこ
PSMとはどう違うの?
ペンギン先生 ペンギン先生
PSM(プラットフォーム依存モデル)は、選んだ基盤にどう実装するかを反映したモデルだよ。例えば注文をJavaのクラスへ対応づけるPSMと、C#のクラスへ対応づけるPSMを考えられる。同じ業務ルールを出発点に、技術ごとの設計へつなぐんだ。
ひよこ ひよこ
ざっくりした図があればPIMになる?
ペンギン先生 ペンギン先生
ざっくりしているかどうかだけでは決まらないよ。モデルの要素や関係、処理の意味を明確にすることが大切なんだ。変換するための情報が足りなければ、ツールが意図を補ってくれるとは限らない。PIMにも詳しい制約や振る舞いを表せるよ。
ひよこ ひよこ
UMLの図を使わないとダメ?
ペンギン先生 ペンギン先生
UMLはよく使われるけれど、PIMという考え方がUMLの図だけを指すわけではないよ。OMGのMDAではモデルを表す言語の基盤としてMOFを使う。説明用の絵を描いただけで、自動的にMDAのモデルとして変換できるわけではないんだ。
もっと詳しく知りたい人へ

PIMには技術的なことを一切書けない?

一切書けないわけではありません。OMGの説明では、特定基盤の詳細を避けながら、永続化やトランザクションなどの性質を含むモデルも扱います。どの基盤の固有情報から独立させるかを決めることが重要で、「業務の概要だけ」という意味ではありません。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「PIM」って出てきたら「特定の実装技術から切り離して、システムの仕組みを表すモデル」と思えばだいたいOK!
📖 おまけ:英語の意味
「Platform Independent Model」 = プラットフォーム非依存モデル
💬 Independentは「独立した」という意味。MDAでは、対象とする実装基盤の固有の事情から切り離してモデルを考えるんだよ。

参考資料

← 用語集にもどる