MVC パターン

作成: 2026.03.24更新: 2026.03.24

MVC パターンとは

MVC パターンは、アプリケーションの構造を Model(モデル)View(ビュー)Controller(コントローラー) の 3 つの役割に分離するアーキテクチャパターンである。もともとは 1979 年に Smalltalk の GUI 設計で考案されたが、現在では Web アプリケーション開発において最も広く採用されている設計パターンの一つとなっている。

各コンポーネントの責務を明確に分けることで、コードの見通しが良くなり、変更や拡張が容易になる。

なぜ SIer で重要か

SIer の Web アプリケーション開発では、MVC パターンが事実上の標準となっている。特に Java の Web アプリケーション開発で広く使われる Spring MVC フレームワークは、その名の通り MVC パターンをベースに設計されている。設計書やコードレビューで「Controller にビジネスロジックを書かないでください」「Model と View を分離してください」といった指摘を理解するためには、MVC の基本を押さえておく必要がある。

また、SIer の現場では複数のメンバーがチームで開発を行うため、責務の分離が明確であることはコードの分担やレビューの効率化に直結する。

基本概念

Model(モデル)

アプリケーションのデータとビジネスロジックを担当する。データベースとのやり取り、業務ルールの適用、データの加工処理などがここに含まれる。

例: 商品の在庫チェック、注文金額の計算、ユーザー認証の判定

View(ビュー)

ユーザーに表示する画面(UI)を担当する。Model から受け取ったデータを HTML などの形式で表示する。ビジネスロジックは含めず、純粋に「どう見せるか」に集中する。

例: 商品一覧画面の HTML 生成、エラーメッセージの表示、帳票の出力

Controller(コントローラー)

ユーザーからのリクエストを受け取り、適切な Model の処理を呼び出し、結果を View に渡す。交通整理の役割を果たし、Model と View の仲介役となる。

例: ログインリクエストの受付 → 認証処理の呼び出し → 画面遷移の決定

処理の流れ

Web アプリケーションにおける典型的な MVC の処理フローは以下のようになる。

ブラウザ → Controller → Model → Controller → View → ブラウザ

1. ブラウザがリクエストを送信
2. Controller がリクエストを受け取り、処理内容を判断
3. Controller が Model のビジネスロジックを呼び出す
4. Model がデータベースアクセスやビジネスロジックを実行
5. Controller が Model の処理結果を View に渡す
6. View が HTML を生成してブラウザに返す

SIer での使われ方

Spring MVC との関係

SIer の Java 開発で最もよく使われるフレームワークである Spring MVC は、MVC パターンを Web アプリケーション向けに実装したものである。

MVC の役割Spring MVC での実装
Controller@Controller アノテーションを付けたクラス
ModelService クラス + Entity / DTO クラス
ViewJSP、Thymeleaf などのテンプレートエンジン

Spring MVC では、Controller がさらに Service 層(ビジネスロジック)と Repository 層(データアクセス)に分離されることが多い。これはレイヤードアーキテクチャとの組み合わせであり、SIer の現場ではこの構成が標準的に採用されている。

設計書との対応

SIer の開発プロジェクトでは、基本設計の段階で画面遷移図や機能一覧が作成される。この設計書と MVC は以下のように対応する。

  • 画面設計書 → View の仕様
  • 機能設計書 → Controller + Model の処理仕様
  • DB 設計書 → Model のデータ構造

よくある間違い

新人開発者がやりがちな MVC のアンチパターンとして、以下がある。

  • Controller にビジネスロジックを書いてしまう --- Controller はあくまでリクエストの振り分け役。計算処理やバリデーションは Model(Service 層)に書く。
  • View にビジネスロジックを書いてしまう --- JSP や Thymeleaf のテンプレート内で複雑な条件分岐や計算を行ってしまう。表示の整形以外は Model で処理する。

まとめ

  • MVC パターンは Model / View / Controller の 3 つの役割にアプリケーションを分離するパターンである
  • SIer の Web アプリケーション開発では Spring MVC を通じて事実上の標準となっている
  • Model はデータとビジネスロジック、View は画面表示、Controller はリクエストの振り分けを担当する
  • Controller や View にビジネスロジックを書かないことが重要なルールである
  • レイヤードアーキテクチャと組み合わせて使われることが多い