MVCなどの概念でビジネスロジックを担当する層として「Model」という層が登場しますが、なぜこの名前なのでしょうか?
個人的な印象ですがモデルは「模型」のようなニュアンスが強いと思っていて、名前だけ聞くとデータオブジェクトのような雰囲気があります
MVVMの「ViewModel」はまさにモデルっていう感じで納得できるのですが、今まで見てきたMVCやMVVMのModelはビジネスロジックを担当していたりデータストアとのやりとりを担当していることが多いように感じました
また解説書や解説サイトなどでもModelはビジネスロジックを担当する層という説明がよくでてきます
アーキテクチャ自体に疑問はないのですがなぜこの層をModelというのでしょうか?
由来をご存知の方いたら教えて下さい
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答6件
7
ベストアンサー
モデルという語の由来
英語の辞書を調べましたがこれというものがありません。そこで、他の回答者の意見も参考にして考案しました。モデルとは、物理学、工学、経済学などの分野で、その分野に固有の言語を使って表現した『対象の本質的な振舞い』と定義します。
初期の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総合スコア1029
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
6
科学分野で、ある物事を考えるときに、その物事を単純化したり抽象化したりして
取り扱いやすくすることを「モデリング」と呼んで、その成果物を「モデル」と呼びます。
投稿2019/09/21 04:22
総合スコア13360
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
2
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
総合スコア17909
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
2
こんにちは。
ビジネス・ロジック部分は、実世界の作業を仮想化したものだからだと思います。
例えば、発注→納品→精算の各実世界における作業に対応してビジネス・ロジックは構築されます。つまり、リアル世界のモデルとなっている筈です。
逆に現実世界からかけ離れたビジネス・ロジック部を持つプログラムは実世界の作業の変化に追従して改造することが非常に困難でしょう。そのようなプログラムは役に立ちません。
投稿2019/09/21 03:36
編集2019/09/21 04:08総合スコア23259
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント
2
投稿2019/09/21 02:45
編集2020/05/14 01:43総合スコア28303
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
こちらの回答が複数のユーザーから「過去の低評価」という指摘を受けました。
0
MVVMでは、役割がはっきりしているView、ViewModelと違ってModelについては細かく定義をしてません。
ViewとViewModel以外はすべてModelです。
Modelは複数の層を持ったりして構造化されているのが普通ですから、
そういった漠然とした構造→Modelととらえてもいいんじゃないでしょうか
投稿2019/09/21 02:53
編集2019/09/21 03:00総合スコア4150
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
Q&A
解決済
DefaultTableModelのremoveRow()メソッドに関して
回答2
クリップ1
更新
2023/05/21
Q&A
受付中
asp.net core で input type="file" の選択内容を保持する
回答3
クリップ1
更新
2023/05/31
Q&A
解決済
k-meansを用いたグラフについて
回答1
クリップ0
更新
2023/05/29
Q&A
解決済
【Rails】モデルのカラムの型でjsonとは何か?
回答2
クリップ0
更新
2023/05/30
Q&A
解決済
データフレームの扱いについて
回答1
クリップ0
更新
2023/05/28
意見交換
受付中
大規模言語モデル ファインチューニングの方法
回答1
クリップ0
更新
2023/05/31
Q&A
解決済
Javaでの不具合となります。
回答1
クリップ0
更新
2023/05/29
Q&A
解決済
アプリを実行したいのですが、MySQLのエラーが出てしまいます。
回答1
クリップ0
更新
2023/05/29
同じタグがついた質問を見る
MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。
MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。
MVVM(Model View ViewModel)は構築上のデザインパターンで、表現ロジック(ViewModel)によってデータ(Model)からページ(View)を分離させます。
アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます
オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。