支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • MVCモデルとは?詳しく解説させてい

MVCモデルの概要

IT業界においてテクノロジーは日進月歩と言えるほど急速な速度で進化を遂げており、近年では DX(デジタルトランスフォーメーション)化やローコード・ノーコートといった言葉を頻繁にメディアなどで 聞く機会が増えました。 ソフトウェア開発の歴史は半世紀を超える時間をかけてテクノロジーの進化を見せてきましたが、 現代社会においてソフトウェア技術への依存度や重要度は増していく一方であり、人々の日常的な生活に密着しているサービスはソフトウェア技術によって 支えられているといっても過言ではありません。 ここでは、ソフトウェアアーキテクチャーの一つであるMVCモデルについて説明させていただきます。 ソフトウェアアーキテクチャーとはソフトウェアをどのような方針やスタイルで構築を行うのか?という内容になり、MVCモデルはその代表例と言ってもいいでしょう。 (ソフトウェアアーキテクチャーに関する技術的な説明については長くなるためここでは割愛させていただきます) MVCモデルとは、Model(モデル)View(ビュー)Controller(コントローラー)のそれぞれの頭文字を取り命名したものであり、各機能ごとにプログラミングを行い役割を もたせることで、ソフトウェアの生産性や保守性を向上させるという考え方となります。 Model(モデル)はビジネスロジックを担当・View(ビュー)は表示、出入力を担当・ Controller(コントローラー)はModel(モデル)とView(ビュー)を制御する担当となります。 MVCモデルの考え方として、機能ごとに分類しコードを記述し処理することが特徴であり、 このように整理されることで「コードをわかりやすくなる」「開発者が機能ごとの実装に集中することができる」「作業効率が上がる」「保守性が担保させる」など様々なメリットが生まれます。 MVCモデルはソフトウェア開発に携わるエンジニアは基礎として知っておく必要がある知識であることは間違いありません。 以上が簡単なMVCモデルの概要の説明ととなります。 それではMVCモデルについてさらに詳しく解説させていただきます。

MVCモデルの歴史

MVCモデルの歴史について説明させていただきます。 MVCモデルは1929年に、パロアルト研究所でトリグヴェ・リーンスカウク氏によって考案されました。 パロアルト研究所はゼロックスの研究所でもあり、世界初のパソコン「ALTO」やマウス、イーサネット、レーザープリンターなど数々の発明が行われた場所として非常に有名です。 トリグヴェ・リーンスカウク氏はノルウェーのコンピューター科学者であり、オスロ大学(スウェーデン)の名誉教授でもあります。 トリグヴェ・リーンスカウク氏はオブジェクト指向手法の研究に広く携わっており、BVCモデルは「Smalltalk」開発の中で生まれた概念として知られております。 トリグヴェ・リーンスカウク氏ははMVCモデルおよびオブジェクト指向において「MVCは、大規模で複雑なデータセットを制御するユーザーの問題に対する一般的な解決策として考えられました。 最も難しい部分は、さまざまなアーキテクチャーの構成要素にふさわしい名前を付けることでした。 Model-View-Editorが最初の3つです。長い議論、とくに アデル・ゴールドバーグ との議論の後に、我々はModel-View-Controllerという用語に決めました。」と述べております。 ここで登場するアデル・ゴールドバーグはアメリカ出身のコンピューター科学者であり、「Smalltalk」の開発に携わった人物として有名です。 コンピュータ歴史博物館(アメリカ・カルフォルニア)はその名の通りコンピューターの歴史に関わる 世界最大級の博物館として知られておりますが、アデル・ゴールドバーグの「Smalltalk」に関する資料、報告書、出版物、ビデオテープなどが展示されております。

Smalltalkについて

MVCモデルを誕生させた「Smalltalk」というプログラミング言語について説明させていただきます。 「Smalltalk」は1970年代に設計されたオブジェクト指向のプログラミング言語であり、パロアルト研究所においてアラン・ケイ氏やダン・インガルス氏、そして上述したアデル・ゴールドバーグ氏らによって開発が行われました。 「Smalltalk」は開発環境と実行環境を統合したようなプログラミング環境とシンプルでわかりやすい文法と構文が特徴です。 もう少し具体的に説明させていただくと、従来のプログラミング言語のようにソースコードを記述しコンパイルを実行し言語処理を行うのでなく、ソースコードの記述・実行・結果表示・デバックまで一体化した統合環境により開発を行うことが可能でした。 「Smalltalk」はオブジェクト指向プログラミングの手本と呼ばれ、後世のオブジェクト指向プログラミングに対して大きな影響を与える事となります。 そもそも「Smalltalk」は「ALTO」のオペレーションシステムとしての役割を期待されておりましたが、同製品の販売中止を受けて1983年に「Smalltalk-80」としてリリースが行われたという経緯があります。 MVCモデルは「Smalltalk」の開発の中で誕生した概念として知られており、その歴史について詳しく説明させていただきました。

プログラミング言語とMVCモデル

「Smalltalk」から生まれたMVCモデルですが、派生してMVVM(モデル・ビュー・ビューモデル)が生まれました。 MVVMMVVM(モデル・ビュー・ビューモデル)のViewはMVCにおけるControllerを包含している点や、MVVM(モデル・ビュー・ビューモデル)のViewは宣言的に定義され状態を持たない点などが 両者の異なる点と言えるでしょう。 また、現在においては多くのプログラミング言語とフレームワークがMVCモデルを採用、もしくは影響を受けております。 例えばJavaのおいてはStrutsがMVCモデルをデファクトスタンダートとしてその後も様々なフレームワークの開発を行っていることは周知の事実となります。 その他にもPHPの多くのフレームワークでMVCモデルの採用を行っており、2021年現在PHPのフレームワークで圧倒的な人気を誇るLaravelもMVCモデルを導入しております。

MVCモデルの詳細

MVCモデルの詳細について説明させていただきます。 MVCモデルはModel(モデル)View(ビュー)Controller(コントローラー)の3つから成立していると 説明させていただきましたが、それぞれについて解説させていただきます。

Model(モデル)

MVCモデルのMであるModel(モデル)について説明させていただきます。 MVCモデルにおけるModel(モデル)はビジネスロジックを担当する部分となります。 J2EEでは JavaBeans、EJBがモデルを担当します。

View(ビュー)

View(ビュー)について説明させていただきます。 MVCモデルにおけるView(ビュー)はユーザーが閲覧する表示部分の処理を担当します。 J2EEではServletやJSPで実装します。 通常のHTML表示に関してはJSP、そのほかケースにおいてはServletを用いられるケースが多いです。

Controller(コントローラー)

MVCモデルのCであるController(コントローラー)について説明させていただきます。 MVCモデルのCであるController(コントローラー)はModel(モデル)と View(ビュー)を制御する役割を持ちます。 自身では表示やロジックの実行を行うことなく、View(ビュー)からの入力に対してロジックの実行を Model(モデル)に依頼を行うという橋渡しのような役割を担います。J2EEではServletで実装します。

MVCモデルのメリット

MVCモデルのメリットについて説明させていただきます。 ポイントを5つに絞り紹介させていただきますので、参考にしていただけましたら幸いです。

効率性

MVCモデルのメリットの一点目が効率性となります。 役割や機能別にコードを記述していることで、開発者が混乱することなく効率性をあげることが可能となります。

保守性

MVCモデルのメリットの二点目が保守性となります。 各機能別に役割をもたしているため、別機能での変更の受けにくく保守性が担保されるというメリットがあります。

わかりやすい

MVCモデルのメリットの三点目がわかりやすいという点となります。 特に多くの技術者が関わるプロジェクトにおいて、コードのわかりやすさは 非常に重要となってきます。 MVCモデルにおいては機能別に役割を割り振っていることもあり、コードのわかりやすさを担保しやすいというメリットがあります。

MVCモデルとデザインパターン

MVCモデルとデザインパターンについて説明させていただきます。 デザインパターンは『オブジェクト指向における再利用のためのデザインパターン』において紹介された、 ソフトウェア開発において再利用可能である汎用的な設計パターンのことを指します。 デザインパターンはソフトウェア設計においてのコンセプトとしての考え方であり、必ずしも全ての開発現場において最善な考え方でない点に注意が必要となります。 MVCモデルとデザインパターンは混同して考えられるケースも多く、MVCモデルはデザインパターンの一つとして考えることもありますが、 MVCモデルが小さなデザインパターンから構成されているという考え方をすると概念としてはソフトウェアアーキテクチャーとしたほうが近いとされております。

まとめ

いかがでしたでしょうか? MVCモデルについて詳しく説明させていただきましたので、参考にしていただけましたら幸いです。