31日目 MVCというアプリ開発時の考え方

おはようございます。
今日はRails(Ruby on Rails)で取り入れているMVCについて触れたいと思います。

MVCとはModel、View、Controllerという概念の3つの頭文字を取ったものであり、ソフトウェアアーキテクチャの一種です。

たくさんのソースコード(以下、コードと略)で構成されるアプリケーションに対して、それらのコードをModel、View、Controllerという3つの概念ごとにまとめることによって、アプリケーションの構造や動きなど全体像を把握できるようにし、ソースコードの管理・開発を容易にすることができます。

ソフトウェアアーキテクチャとは

ここで、「ソフトウェアアーキテクチャ」という言葉がありますが、アプリを開発する際にはたくさんのコードを書く(プログラムを作る)必要があります。

人によるかもしれませんが、それらのコードを1つ1つ把握するのは大変です。そんなコードの膨大な量によって構築されるアプリについて、その構造・動きを抽象化することで、アプリのイメージを掴み、シンプルにどんなコードを書けばよいか考えられるようにしよう、という取り組みが「ソフトウェアアーキテクチャ」というもの(だとわたしは認識しています。)

ソフトウェアアーキテクチャについては以下に記事がありますが、どうやら今回触れるMVCというのは1980年代初頭に登場したもののようです。

しかし、近年では頻繁にアップデートの発生するモバイルアプリではMVCでは対応できないため、MVPやMVVM、Flux、Clean Architectureなど、他のアーキテクチャも考案されているようです。

それでも、MVCは他のソフトウェアアーキテクチャと比べると古い概念ではありますが、Railsで開発する際にはは今でも取り入れている概念ですので、MVCについて知って損はないかと思います。

MVCというそれぞれの概念

改めて、MVCの話に戻ると、MVCはそれぞれ以下のような役割があります。
・Model:データベースを扱う役割
・View:Webページ表示や入出力などユーザーインタフェースを扱う役割
・Controller:ModelとViewを操作する(連携させる)役割

最初の「Model」については、データベースを扱うところですが、この「Model」で大事なデータを保存したり、保存したデータを取り出すためのデータベースの構造・動きを考えていきます。

例えば、ネットショッピングなどで何らかの品物を注文したとき、
・どんな品物を注文したか(例:品番、品名、数量など…)
・いつ、誰が注文したか(例:購入時刻、購入者など…)
・いくらかかったか(例:単価、合計金額など…)

などの情報があると思いますが、その情報がどのような形式で、どのように保存・取り出されるべきかというデータベースの構造を定義する部分などを「Model」でまとめ、その「Model」を元にコードを書いていきます。

次に「View」について、こちらはWebページを表示する、または何らかの情報を入力する、入力した後のアプリからの応答が表示(出力)されるなど、ユーザーインタフェースを扱うところです。

先ほどと同様に、ネットショッピングを例に挙げると、
・どんな品物を購入できるのか一覧で見せる
・品物を購入するためのボタンや、配送先など情報を入力する項目がある
・購入したら、購入後の金額や配送日など、詳細を知らせるためのメッセージを表示する
といった「見た目」を担当する部分となっており、文章の内容や文字の大きさ、色、ボタンの形など、「見た目」を構成する様々な要素を「View」で定義します。(この「View」がほとんどの場合、Webページとして姿を変えて、ユーザーの目に触れることになるかと思います。)

Rails開発時においてはこの「View」について、主にHTML、CSS、JavaScriptなどの言語で「見た目」の要素を定義することになるかと思います。

最後の「Controller」については、先ほどの「Model」と「View」を連携させるところになります。こちらもネットショッピングを例に、「Controller」、「Model」、「View」のそれぞれの動き方について説明します。

  1. ユーザーが(PCやスマホなどのブラウザから)ネットショッピングのための購入ページにアクセスしようとする。

  2. 「Controller」が1でユーザーがアクセスしようとする動きを受け取ったら、「Model」で定義されたデータベースから、
    ・品物
    ・値段
    ・数量
    など、保存済の情報を引っ張っていく。

  3. 「Controller」は更に、「Model」から引っ張っていった情報を用いて、「View」で定義されている「見た目」の要素に基づいてWebページを作っていく。

  4. 「View」によってWebページが作られたら、「Controller」はユーザーの元へWebページを、アクセスした結果として返す。

  5. ユーザーが使っているPCやスマホ等のブラウザ上に、そのアクセスした結果として返されたWebページが表示される。

おおざっぱに説明しましたが、とりあえず、「Model」と「View」を上手く操作しているのが「Controller」と認識すれば良いかと思います。

Railsでは、これら3つの概念(「Model」「View」「Controller」)によってアプリケーションが動作するようになっているため、「Model」「View」「Controller」それぞれでコードを書いていけば、アプリケーションが動くようになる、というふうにできています。

おわりに

ここまで読んでくださってありがとうございました。
今日は作業する部分はなく、作業の前に理解したほうがよさそうな概念の説明のみになります。

次回は3つの概念のうち、「Model」について作業できればと思います。
次回もよろしくお願いいたします。

いいなと思ったら応援しよう!