MVCについて解説 プログラム構成概念 Model・View・Controller

当サイトは広告を含みます

MVCとはシステム設計の基本概念(デザインパターン)です。

円滑にプロジェクトを作成する為に使用します。

こちらの記事概要
・初心者向け
・MVCについて
・DAO、DTO、Beanなど、Modelの詳細

ITの単語で不明な点がありましたら、こちらをご覧ください。

目次

MVCとは

システム開発を円滑に行うための概念です。
クラスやシステムなどを機能別に分類して、システム設計をします。

具体的には、システムを大きく下記の3つに分類して構築を行います。

1. 機能(Model)

2. 画面(View)

3. コントローラ(Controller)

図で一連の処理を解説

図の流れとしては下記の通りです。

  1. ユーザが画面(View)にて入力、要求を行う
  2. Viewがユーザの「入力、要求」データをControllerに渡す
  3. 2のデータをModelが受け取り、データの加工や処理を行う
  4. 3で処理されたデータの結果を、Controllerに渡す
  5. Controllerが処理結果をViewに渡す
  6. ユーザへ結果(画面の更新、遷移など)が帰ってくる

メリット
・機能が分類されているので、読みやすく理解しやすい
・各機能が独立しているため、修正や追加が容易
・上記理由で、複数人で作業しても管理しやすい

デメリット
・処理スピードが低下する
・システムが複雑化する
・定義があいまいになりやすい

よろしくないシステムの例
・Controllerに機能を実装する(演算、セキュリティ、ファイル入出力など)
・VIewからModel、またはその逆を「Controller」を介さず実行する
・View、Model、Controllerの機能が分けられていない

View -ビュー

画面です。
表示や入出力などの処理を行います。

Controller -コントローラー

制御部分です。
ViewとModelの橋渡し係を行います。

View(画面)とModel(プログラム)が直接動作するのではなく、Controllerを通してVIewまたはModelを実行します。

注意として、基本的にControllerでは橋渡し以外の機能を実装するのはよろしくないです。

Action

リクエストパラメータの受け取りと画面処理を行います。
機能的にはControllerですが、業務ではModelにあったりと曖昧な分類です。

リクエストパラメータとは
簡単にいうと、Webアプリケーションにて必要な処理をするためのデータです。
フォーム画面に入力した、氏名メールアドレスなどが含まれます。

Model -モデル

ざっくりいうと、ViewとController以外のモノです。

DBとのやり取り他プログラムなどの実行処理は全てModelとまとめられます。
そんなModelの中でも、更に種類を分けた機能が下記です。

Service

機能の処理です。
システム開発における、目的を達成するためのプログラムを実行します。

具体例: 『生徒管理システム』を作成する場合
・ログイン機能のクラス – ServiceLoginClass
・生徒をCRUDする機能のクラス – ServiceStudentCRUDClass

Entity(Beans)

データを情報としてまとめたモノです。
Entity、もしくはBeansとも呼ばれています。

具体例:『生徒管理システム』を作成する場合
・生徒情報のEntity(Beans)クラス – EntityStudentClass
→生徒ID、氏名、性別、住所、電話番号などをデータで保存

コードの例

public class EntityStudentClass{
	/** 生徒ID */
	private String student_id;

	/** 氏名 */
	private String student_name;

	/** 性別*/
	private int student_gender;

	/** 住所 */
	private String student_address;

	/** 電話番号 */
	private String student_tel;

}

DAO

データベースへのアクセスを行うモノです。
データベースにアクセスするための接続手段や、データベースから指定のデータを取得する存在です。

正式名称は『Data Access Object』といいます。
訳すとデータベースにアクセスする機能、そのままです。

具体例:『生徒管理システム』を作成する場合
・JDBCというデータベースにアクセスするための、JavaのAPIを準備するクラス – JDBCConnectClass
・データベースから生徒のデータを取得、参照、削除、変更するクラス – DAOStudentClass

DTO

データを転送するためのモノです。
DAOとServiceが送受信するデータを、一気に格納または保護する存在です。

よく使用されている形としては、ゲッター&セッターがあります。

正式名称は『Data Transfer Object』です。
Transferとは、転送という意味です。

具体例:『生徒管理システム』を作成する場合
・生徒データ転送クラス – DTOStudentClass

コードの例

public class DTOStudentClass{
	/** 生徒ID */
	private String student_id;

	/** ゲッター */
	public String get_student_id(){
		return student_id;
	}

	/** セッター */
	public void set_student_id(String student_id){
		this.student_id = student_id;
	}
}

ゲッター&セッターについて
ゲッター、セッターは多くの現場で使用されていますが、安心、性能も良いという訳ではありません。

問題点
・システムの複雑化、修正コストが高い
・オブジェクト指向の趣旨が逸れる

ゲッターセッターに限らず、コードのデメリットやメリットは必ず存在します。自分に何が必要なのか取捨選択しましょう。

MVCを使用した構築例

MVCを適用すると、上記の図が出来上がります。
プロジェクトや開発者によってばらつきはありますが、こちらの形状が多かったです。

Model→Javaのパッケージ内で更にDTO、Serviceなどに分けておく

View→Javaのプログラムと同じ場所ではなく、「resource」下の「template」という場所に分かれている

Controller→JavaのControllerのパッケージの中におく

最後に

システム設計の基本、MVCについては以上です。
他にもMapperといった機能分けもしますが、今回は基本・定番だけをご紹介しました。

機能は各役割でパッケージやファイルを分けて、プログラムを作成するとだけでも覚えて頂ければ大丈夫です。

要は複数の人間が見ても理解しやすい、システムの品質を上げるための概念です。
指標であっても、目的ではないのでご注意ください。

シェアお願いします!
  • URLをコピーしました!

この記事を書いた人

ご閲覧ありがとうございます。
少しでも、プラスになれたのなら幸いです。

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次