検索

キーワード


【Java】WebアプリケーションにおけるMVCモデル

  • 公開日:2020-10-21 16:32:14
  • 最終更新日:2020-11-13 21:40:06
【Java】WebアプリケーションにおけるMVCモデル

こんにちは。エンジニアの新田です!
ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。
今回は、MVCモデルについて、JavaサーブレットとJSPを使ったシステムを例に解説します。
Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!

関連記事:【Java】Webアプリケーションとは?


MVCモデルとは?


プログラムは、全く同じ機能を実現する場合でも多種多様な書き方ができます。

全ての処理をまとめて書くこともできれば、役割ごとにクラスを分けたり、処理ごとに関数を分けて整理しておくといった事も可能です。

しかし、複数人で同時にシステムを開発するときに、それぞれが好き勝手にプログラムを作っていたら、中身を見るのが大変でメンテナンス性も悪くなり、機能を結合したときに問題も起こりやすくなります。

そこで、プログラムの構成を分かりやすく管理できるようにしたのが「MVCモデル」です。

MVCモデルは、プログラムを3つの構成要素「Model(モデル)」「View(ビュー)」「Controller(コントローラー)」に 分割し、システムを構築する設計方法のことを指します。

Webアプリケーションの開発でも、最も基本的なアーキテクチャパターンの一つです。


MVCモデルのイメージ



Model(モデル)

Model(モデル)はアプリケーションの中で、ビジネスロジックを担当するいわばシステムの本体部分にあたります。

ビジネスロジックとは、例えば申込フォームの内容をデータベースへ登録させる処理です。

Controller(コントローラー)から受け取った指示に基づいて、必要な処理を行い、処理結果をController(コントローラー)へ返します。

EJB(JavaBeans)などの一般的なjavaファイルがModelにあたります。


View(ビュー)

View(ビュー)は、Webフォームなど、ユーザーが実際に参照する画面の表示や入出力部分にあたります。

コントローラーから渡された出力結果(HTML, JSP)などを表示します。

例えば、ログイン画面でユーザー名を入力してログインする場合、DBからログイン情報を探し出して、ユーザー名を画面に表示する部分です。

HTML形式に書かれているJSPファイルがViewにあたります。(Servletで出力する場合もあります)


Controller(コントローラー)

Controller(コントローラー)は、View(画面)からの情報入力を受け、Model(処理やデータ)を呼び出し、処理後の出力結果をView(ビュー)に返します。

またユーザーの処理(入力内容など)に基づいて、処理対象のModel、出力対象のViewを制御する部分であり、自分自身で画面表示を行ったり、ビジネスロジックを実行したりしません。

Javaサーブレットを使ったシステムでは、サーブレットクラスがControllerにあたります。



MVCモデルを使うメリット

  • プログラムの基本的な構造が定義されるため、どの処理がどこに記述されているかが明確になる
  • デザインとビジネスロジックを分離することによって、デザイナーとエンジニアがお互いの作業を分担できる
  • 専門性の高い業務(デザインとビジネスロジック)を分けることで、作業効率と品質が向上する
  • 専門分野に特化しているため、バグ修正やトラブルに柔軟に対応することができる
  • Modelにビジネスロジックを集中させることにより、コードの再利用がしやすくなる




MVCモデルはWebアプリケーション開発で必須というわけではありませんが、プログラムの構造が明確になり効率的に開発を進めていくことができる便利なツールです。

実際の業務でもMVCモデルがベースになっているシステムが多数ありますので、知識としてしっかり把握しておきましょう。



関連記事:【Java】Webアプリケーションとは?



【著者】

新田

JavaメインのWebアプリケーション開発に多く携わっています。
Javaの基本的な部分の紹介や、これまで経験したシステム開発手法、新しい技術についても紹介していこうと思います。

よく読まれている記事
【Java】JSPでタグライブラリを使う(JSTL)

【Java】JSPでタグライブラリを使う(JSTL)

こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様