質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MVC

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

3回答

2492閲覧

サルでもわかるMVCについてご意見伺いたいです

DaisukeIshii

総合スコア44

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MVC

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

5クリップ

投稿2015/08/05 05:28

イメージ説明

RailsのModel-View-Controllerの話がわかりにくかったので、
上記の様な例え話を作りました。
サルにもわかる様に説明したいのですが、
レストランという例えに違和感ありますでしょうか?
もしくは、もっと良い例え話ありますでしょうか?
初学者のためにお教え頂けますと嬉しいです。

参考資料:
[http://qiita.com/s-age/items/fe4b321c5445341dfd6e]

イメージ説明

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

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

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

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

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

guest

回答3

0

私はサルがレストランで食事したり厨房で働いているのを見たことがありません。比喩するなら動物園やジャングルの方が相応しいと思います。
この比喩で「よく分かった!」とならなければ、読者はサル以下ということなので、タイトルには注意してください。あなたが実際にサルに協力してもらって、平均的なサルなら理解できると検証しているのなら、謝ります。

ちなみに、私はよく分かりませんでした。私の知るレストランというものは、ウェイターは注文を受けますが、料理を運んでもくれます。図ではウェイターに注文し、運んでくれるのは料理自身になっています。それとも矢印の意味は、ウェイターがキッチンを作り、キッチンが料理を作り、最後に料理がお客を作る、という意味でしょうか?

基本的に矢印の意味がそれぞれ違う1枚図は書いてはいけません。適当に見る人を理解した気にはさせますが、逆にちゃんと見る人を混乱させます。

投稿2015/08/05 06:21

sharow

総合スコア1149

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

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

0

ベストアンサー

MVCにレストランのたとえ話が使われることはよくあります。
ただ、「View」=「Food」の部分には違和感があります。

オブジェクト指向はたんなる部品の切り分け方ではなくて、
責務の分け方になります。すなわち責務の分散協調系です。

レストランのたとえで言うと、伝票を運ぶ注文係(C)と
皿を運ぶ提供係(V)に、ウェイターの仕事をさらに分業する感じです。

Foodを使うとしたら、HTML(に表示される文字列や画像)など、
自力で処理できないデータ部分だと解釈したほうがしっくり来ます。

オブジェクトを擬人化するのであれば、変更があるときに
誰の担当、責任か、ということを明確化したいわけです。
提供(表示)される食べ物(データ)自体は責任を負いません。

たとえば、食べ物=データがおかしいときに、
注文(リクエスト)の取り違えが起きたならCの責任、
冷蔵庫(DB)で腐っていたならMの責任ですし、
テーブルに運ぶ途中で落としたらVの責任です。

「責務」という発想を忘れないでください。

投稿2015/08/05 06:25

LLman

総合スコア5592

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

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

DaisukeIshii

2015/08/05 13:26

詳細なご説明誠にありがとうございます! 頂いたアドバイスを基に、理解が深まりましたので、 引き続き足元を固めて学習を進めて参ります。
guest

0

この図で一番違和感を感じるのは、コントローラからビューへの矢印が無いことです。
あくまでもコントローラは図の中心であって、コントローラがmodelやviewを手や足として使用している感じです。viewが直接ユーザと繋がるのも違和感があります。やはりユーザーと繋がるのはコントローラです。
ユーザーへの入出力でviewを使いますが、ユーザー(人)以外の外部プログラムと直接つながるのはviewではなくコントローラです。全ての中心がコントローラなのです。

でも、色々な表現が有って、ほとんどの場合でユーザー(人)と繋がるのはviewですので、そのように解説しているサイトも多いですし、wikipedia の図もそうなっていますね。

投稿2015/08/05 10:41

編集2015/08/05 10:49
rik

総合スコア1151

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問