1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MVCモデルについて

Posted at

本記事の目的

MVCモデルの適切な使いかたについてまとめ、「拡張性が高く、使い回しの効くコードを作成をする」ためにはどのようにモデルを設定すべきか考える。

3層アーキテクチャ

Modelは3層アーキテクチャにおけるドメイン層、データ層を担い、ViewとControllerは3層アーキテクチャにおけるプレゼンテーション層を担う。

View

3層アーキテクチャにおけるプレゼンテーション層を担う。

ユーザの操作に伴うシグナルの発火

ボタンが押される、テキストボックスに文字が入力されるなどユーザの操作を把握する必要がある場合に設定する。

表示の変化

カラーピッカーや異常値が入力された際のエラー表示などの事前に設定された情報のみで管理可能な処理を設定する。

コールバック

クリック時に行われる操作をclickCallback()にまとめる
senderを用いてシグナルを発火したオブジェクトを辿ることで、少ないコード量で別々の処理を行わせることができる。

UIライブラリへの依存

ユーザー側の要求によってWeb、スマートフォン向け、Windows向け、Unix向けのように変化し、言語もPython、Go、Javaのように変化する
UI表示はこの要求による影響を最も受けることから汎用的に使いまわすことは難しい。

入力と出力

入力はユーザの操作、出力は表示の変化
ユーザーの操作はControllerモデルに送信される。
その後Controllerモデルからの出力を受取り、そのまま出力される。

まとめ

ユーザが操作するUIであり、その入力に基づいた表示を行う。
汎用性を高くする需要は低く、寧ろユーザーごとに適切な実装をすることが求められる。
入力はControllerモデルに送信し、Controllerモデルの出力をもとに表示を変更する。

Controller

3層アーキテクチャにおけるプレゼンテーション層を担う。

Viewで受けた入力をもとに必要な処理を持つModelを設定する

処理の順番、入力以外に必要な情報の要求などを行う。
処理も記述するが、Viewの表示のために必要な処理のみを記述し、Viewが不必要になった際にControllerも削除可能な状態にする。

入力と出力

入力はユーザーの操作によって得られたデータ、出力はViewの求めるデータ形式に沿ったデータ
ユーザの操作によって得られたデータをもとに多様なModelを用いて処理する。
その後Modelによって処理されたデータをViewの求める形に変更し渡される。

まとめ

Viewの求める内容の処理の要求とそのために必要な情報の要求を行う。
Viewの内容の変化、Modelの内容の変化に対応しやすいことが大きな魅力。
入力内容をModelを用いて処理し、Viewの求める形にして出力する。

Model

3層アーキテクチャにおけるドメイン層、データ層を担う

ビジネスロジックや抽象化された処理を設定する。

ファイルの作成や出力、データ操作、データ通信などを行う。
一つの入力に対して複数の出力内容に変化させることができるように実装することで拡張性を上げることができる

入力と出力

Controllerから送られるデータをもとに実際の処理を行い、処理の結果を元のControllerへ渡す
入力と出力はControllerの内容によって多彩に変化する。

まとめ

最も汎用性を高くなるように実装し、使い回しを効かせる必要がある。

全体のまとめ

MVCモデルにおけるViewとControllerが3層アーキテクチャにおけるプレゼンテーション層であり、Model層が3層アーキテクチャにおけるドメイン層、データ層を担うことからMとVCに分けて考察を行った。
大規模な開発ではMVCを分ける必要があるが、小規模な開発の場合はViewとControllerはまとめて実装しても良いが、Modelは分けて実装したほうが効率が良いように感じた。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?