この資料は「エンタープライズ開発入門」シリーズの一部です。以前の記事:
- ネットワークについて。
- ソフトウェアアーキテクチャについて。
- HTTP/HTTPS プロトコルについて。
- Maven の基本について;
- サーブレットについて (単純な Web アプリケーションを作成しています)。
- サーブレットコンテナについて。
MVCの歴史
MVC のアイデアは、70 年代後半に Xerox PARC で働いていた Trygve Reenskaug によって策定されました。当時、コンピュータを使って仕事をすることは、学位を取得し、膨大な文書を絶えず勉強することなしには不可能でした。Reenskaug が非常に強力な開発者のグループと協力して解決した問題は、平均的なユーザーとコンピューターの対話を簡素化することでした。非常にシンプルで理解しやすい一方で、コンピューターと複雑なアプリケーションの管理を可能にするツールを作成する必要がありました。リーンスカウグは、アラン・ケイのリーダーシップの下、「あらゆる年齢の子供向け」ポータブル コンピューター Dynabook と SmallTalk 言語を開発したチームに取り組みました。フレンドリーなインターフェイスの概念がその場で定められました。Reenskaug 氏のチームとの取り組みは、IT 分野の発展に大きな影響を与えました。MVC とは直接関係ありませんが、これらの開発の重要性を示す興味深い事実を紹介しましょう。2007 年、Apple iPhone のプレゼンテーションの後、アラン ケイは次のように述べています。私はこう言いました。これは批判に値する最初のパーソナルコンピュータです。プレゼンテーションの後、スティーブ・ジョブズがやって来て、「iPhone は批判に値するのか?」と尋ねました。それで私は言いました、これを5×8インチにすれば世界を征服できるでしょう。」3 年後の 2010 年 1 月 27 日、Apple は 9.7 インチ iPad を発表しました。つまり、スティーブ・ジョブズはアラン・ケイのアドバイスにほぼ文字通り従ったのである。レンスカウグが取り組んだプロジェクトは 10 年間続きました。そして、MVC の作成者による MVC に関する最初の出版物は、さらに 10 年後に出版されました。ソフトウェア アーキテクチャに関する多数の書籍や記事の著者である Martin Fowler は、SmallTalk の実用バージョンから MVC を学んだと述べています。長い間、一次情報源から MVC に関する情報がなかったため、またその他の理由により、この概念については多数の異なる解釈が登場しました。その結果、多くの人は MVC を設計スキームまたはパターンであると考えています。それほど一般的ではありませんが、MVC は複合パターン、または複雑なアプリケーションを実装するために連携して機能するいくつかのパターンの組み合わせと呼ばれます。しかし、実際には、前に述べたように、MVC は主に、さまざまなパターンを使用してさまざまな方法で実装できる一連のアーキテクチャ上のアイデア/原則/アプローチです。次に、MVC の概念に組み込まれている主なアイデアを見ていきます。MVC とは: 基本的な考え方と原則
- VC は、ユーザー インターフェイスを備えた複雑な情報システムを構築するための一連のアーキテクチャ上のアイデアと原則です。
- MVC は、Model-View-Controller の頭字語です。
ステップ 1: アプリケーションのビジネス ロジックをユーザー インターフェイスから分離する
MVC の重要な考え方は、ユーザー インターフェイスを備えたアプリケーションは、大まかに 2 つのモジュールに分割できるということです。1 つはアプリケーションのビジネス ロジックの実装を担当するモジュール、もう 1 つはユーザー インターフェイスです。最初のモジュールは、アプリケーションの主な機能を実装します。このモジュールはシステムの中核となり、アプリケーション ドメイン モデルが実装されます。MVC の概念では、このモジュールは文字 M、つまり モデル。2 番目のモジュールは、ユーザーへのデータの表示やアプリケーションとユーザーの対話ロジックを含む、ユーザー インターフェイス全体を実装します。この分離の主な目的は、システムのコア (MVC 用語ではモデル) を独立して開発およびテストできるようにすることです。このような分割後のアプリケーション アーキテクチャは次のようになります。ステップ 2. Observer パターンを使用して、モデルのさらなる独立性とユーザー インターフェイスの同期を実現します。
ここでは 2 つの目標を追求します。- モデルのさらなる独立性を実現します。
- ユーザーインターフェイスを同期します。
ステップ 3. インターフェースをビューとコントローラーに分割する
引き続きアプリケーションをモジュールに分割しますが、階層の下位レベルで分割します。このステップでは、ユーザー インターフェイス (ステップ 1 で別のモジュールに分割された) がビューとコントローラーに分割されます。ビューとコントローラーの間に厳密な線を引くのは困難です。ビューがユーザーに表示されるものであり、コントローラーがユーザーがシステムと対話するためのメカニズムであると言う場合、いくつかの矛盾があります。Web ページ上のボタンや電話画面上の仮想キーボードなどのコントロールは、基本的にコントローラの一部です。ただし、ユーザーにはビューの他の部分と同様に表示されます。ここでは機能分割について詳しく説明します。ユーザー インターフェイスの主なタスクは、ユーザーとシステムの対話を保証することです。これは、インターフェイスには 2 つの機能しかないことを意味します。- システムに関する情報をユーザーに表示し、便利に表示します。
- ユーザーデータとコマンドをシステムに入力します(それらをシステムに送信します)。
- MVC の原則に従って、システムをモジュールに分割する必要があります。
- 最も重要で独立したモジュールはモデルである必要があります。
- モデルはシステムの中核です。インターフェイスとは独立して開発およびテストできる能力が必要です。
- これを行うには、システム分離の最初のステップで、システムをモデルとインターフェイスに分割する必要があります。
- 次に、Observer パターンを使用して、モデルの独立性を強化し、ユーザー インターフェイスの同期を取得します。
- 3 番目のステップは、インターフェイスをコントローラーとビューに分割することです。
- ユーザーからシステムに情報を入力するために必要なのは、コントローラーに入力することだけです。
- システムからユーザーに情報を出力するものすべてが表示されます。
GO TO FULL VERSION