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」のそれぞれの動き方について説明します。
ユーザーが(PCやスマホなどのブラウザから)ネットショッピングのための購入ページにアクセスしようとする。
「Controller」が1でユーザーがアクセスしようとする動きを受け取ったら、「Model」で定義されたデータベースから、
・品物
・値段
・数量
など、保存済の情報を引っ張っていく。「Controller」は更に、「Model」から引っ張っていった情報を用いて、「View」で定義されている「見た目」の要素に基づいてWebページを作っていく。
「View」によってWebページが作られたら、「Controller」はユーザーの元へWebページを、アクセスした結果として返す。
ユーザーが使っているPCやスマホ等のブラウザ上に、そのアクセスした結果として返されたWebページが表示される。
おおざっぱに説明しましたが、とりあえず、「Model」と「View」を上手く操作しているのが「Controller」と認識すれば良いかと思います。
Railsでは、これら3つの概念(「Model」「View」「Controller」)によってアプリケーションが動作するようになっているため、「Model」「View」「Controller」それぞれでコードを書いていけば、アプリケーションが動くようになる、というふうにできています。
おわりに
ここまで読んでくださってありがとうございました。
今日は作業する部分はなく、作業の前に理解したほうがよさそうな概念の説明のみになります。
次回は3つの概念のうち、「Model」について作業できればと思います。
次回もよろしくお願いいたします。