🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

MVVM

MVVM(Model View ViewModel)は構築上のデザインパターンで、表現ロジック(ViewModel)によってデータ(Model)からページ(View)を分離させます。

アーキテクチャ

アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

Q&A

解決済

6回答

13451閲覧

なぜビジネスロジックが集まる層を「モデル(Model)」というのでしょうか?

jimyo

総合スコア243

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

MVVM

MVVM(Model View ViewModel)は構築上のデザインパターンで、表現ロジック(ViewModel)によってデータ(Model)からページ(View)を分離させます。

アーキテクチャ

アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

1グッド

7クリップ

投稿2019/09/21 02:26

MVCなどの概念でビジネスロジックを担当する層として「Model」という層が登場しますが、なぜこの名前なのでしょうか?

個人的な印象ですがモデルは「模型」のようなニュアンスが強いと思っていて、名前だけ聞くとデータオブジェクトのような雰囲気があります

MVVMの「ViewModel」はまさにモデルっていう感じで納得できるのですが、今まで見てきたMVCやMVVMのModelはビジネスロジックを担当していたりデータストアとのやりとりを担当していることが多いように感じました

また解説書や解説サイトなどでもModelはビジネスロジックを担当する層という説明がよくでてきます

アーキテクチャ自体に疑問はないのですがなぜこの層をModelというのでしょうか?
由来をご存知の方いたら教えて下さい

hrpie👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unoSSkR

2020/05/14 02:11

Thanks to Smalltalk-80 and its developers. Simply a Model means a modelled thing, so the answer by Mr ozwk is surely the best among the other answered!
guest

回答6

0

ベストアンサー

モデルという語の由来

英語の辞書を調べましたがこれというものがありません。そこで、他の回答者の意見も参考にして考案しました。モデルとは、物理学、工学、経済学などの分野で、その分野に固有の言語を使って表現した『対象の本質的な振舞い』と定義します。

初期のMVC

MVCの初期の論文に解説があります。MVC XEROX PARC 1978-79

controller (input) 入力(ボタンなどの入力用部品)
view (output) 出力(表示のための出力用部品)
model (mental model) ユーザーが心に描くアプリケーション機能

controllerとviewは一体となってToolと表記されていますが、今の言葉で言い直すとGUIです。画面(GUI)の背後にあって、ユーザーが心に思い描く像がモデルです。モデルとは問題領域の本質的な振る舞いを表す。おっしゃるとおり、ビジネスの領域では、ビジネスロジックの集合がモデルと考えられます。

ここから『GUIを取り去っても、付け加えても、アプリケーションの本質的な機能は変わらない』というモデルの要請が生まれます。

MVCとレイヤーアーキテクチャ

MVCアーキテクチャとレイヤーアーキテクチャとの類似点を見てみましょう。

  • プレゼンテーション層 GUI(View、Controller)
  • ビジネスロジック層 対象領域の本質的な振舞い (Model)
  • 永続化層 Modelを格納するストレージ

レイヤーアーキテクチャは上位層から下位層の呼び出し方法が決まっている。層が独立していて取り替えや並存が可能。プレゼンテーション層は、HTTPプロトコルだけでなく、別のUI機能を付け加えたり削除できます(複数のGUIが併存してもよい)。永続化層もRDBだけとは限らず多くのストレージが並存可能。アプリケーションの本質であるビジネスロジック層はモデルを表し、GUIにもストレージにも依存しない。別のプラットフォームにマイグレーションすらできるのが理想だと考えます。

投稿2019/09/21 11:55

編集2019/09/24 09:51
xebme

総合スコア1090

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimyo

2019/09/23 03:09

> ここから『GUIを取り去っても、付け加えても、アプリケーションの本質的な機能は変わらない』というモデルの要請が生まれます。 Chironian さんの回答と重なる部分があり腹落ちしました 一次ソースまで紹介していただきありがとうございました
xebme

2019/09/24 09:51

英語の綴り間違いを訂正しました。
guest

0

科学分野で、ある物事を考えるときに、その物事を単純化したり抽象化したりして
取り扱いやすくすることを「モデリング」と呼んで、その成果物を「モデル」と呼びます。

投稿2019/09/21 04:22

ozwk

総合スコア13551

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ASP.NET MVC の場合で、他は違うかもしれませんが・・・

MVCなどの概念でビジネスロジックを担当する層として「Model」という層が登場しますが、なぜこの名前なのでしょうか?

ASP.NET MVC の場合は以下の画像のような構造で 3 種類の Model が存在します。「ビジネスロジックを担当する層」=「Model」という訳ではなく、下の画像で言うと「ドメインモデル」にビジネスロジックが含まれる場合があるということになります。

イメージ説明

なので、

ビジネスロジックを担当していたりデータストアとのやりとりを担当していることが多いように感じました

は ASP.NET MVC の場合はその通りで、上の図の「入力モデル」をクライアントから送信されたデータを Controller で受け取るのに利用、「ビューモデル」を Controller から View にデータを渡すのに利用、「ドメインモデル」は「中間層(例えば Linq to Entities でその先が DB)」とのデータのやり取りに利用すると言った感じです。

ただし、図にあるように各 Model 間で重なっている部分があります・・・と言うより、Visual Studio で生成する Entity Data Model のように 3 つの機能がその中に入っていることもあります。

投稿2019/09/21 04:16

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

ビジネス・ロジック部分は、実世界の作業を仮想化したものだからだと思います。
例えば、発注→納品→精算の各実世界における作業に対応してビジネス・ロジックは構築されます。つまり、リアル世界のモデルとなっている筈です。
逆に現実世界からかけ離れたビジネス・ロジック部を持つプログラムは実世界の作業の変化に追従して改造することが非常に困難でしょう。そのようなプログラムは役に立ちません。

投稿2019/09/21 03:36

編集2019/09/21 04:08
Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimyo

2019/09/23 03:01

> ビジネス・ロジック部分は、実世界の作業を仮想化したものだからだと思います。 例えば、発注→納品→精算の各実世界における作業に対応してビジネス・ロジックは構築されます。つまり、リアル世界のモデルとなっている筈です。 これ非常に分かりやすいです ありがとうございます
guest

0

モデル

「概念」のところを見ると、モデルという言葉であっても特におかしくないように思います。

追記

オブジェクト指向 - 「モデリング」とは要は「視覚化」すること?|teratail

投稿2019/09/21 02:45

編集2020/05/14 01:43
Zuishin

総合スコア28669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

MVVMでは、役割がはっきりしているView、ViewModelと違ってModelについては細かく定義をしてません。
ViewとViewModel以外はすべてModelです。
Modelは複数の層を持ったりして構造化されているのが普通ですから、
そういった漠然とした構造→Modelととらえてもいいんじゃないでしょうか

投稿2019/09/21 02:53

編集2019/09/21 03:00
hihijiji

総合スコア4152

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問