Django MVC MTVという設計方法について 解説します

「Djangoを使ってwebサイト開発をしたいけどどの様に作れば良いかわからない、どこに何を書けば良いのかわからない」と悩んでいる場合は設計の知識が不足しているかもしれません。

今回は設計モデルの一つであるMVCという考え方を使ってwebサイトをどう開発すれば良いか解説します。

MVCとは?

ソフトウェアの設計モデルの一つにMVCというモデルがあります。

MVCとは、ソフトウェアの設計モデルの一つで、機能を「Model」(モデル)、「View」(ビュー)、「Controller」(コントローラ)の三つの役割に分離して実装し、それらが連携して処理を進める方式。

IT用語辞典 e-Words

MVCのモデルを取り入れて作られたフレームワークをMVCフレームワークと呼ばれます。

webフレームワークやWebサイト開発関連本でもこの設計モデルがよく取り上げられます。

「webサイトをどう作れば良いか分からない!」

という人にはwebサイトを3つの機能に分割したMVCを使って解説した方が理解しやすいからだと思います。

MTVフレームワーク

Django では思想の違いから、MVCフレームワークではなくMTVフレームワークと称しています。MTVとはModel(モデル)、Template(テンプレート)、View(ビュー)を表します。

Django公式サイトに”Django は MVC フレームワークのように思えるのですが、コントローラ (Controller) を「ビュー (view)」と呼び、ビュー (View) を「テンプレート (template)」と呼んでいます。なぜ標準的な呼び方をしないのですか?“というFAQがるので興味がある人は読んでみてください。

Djangoを使う上でモデル、テンプレート、ビューは非常に重要な概念だという点を抑えましょう。

MTVとURLConf

MTVとURLconfの関係図

上のイラストはユーザがサーバーにRequestをしてResponseを受け取るまでの処理をURLconf、View、Model、Templateを使って表したものです。主な機能は以下の通りです。

URLconf:ユーザのリクエストに応じてどのViewを実行するかを制御しています。Viewからの結果(Response)をユーザーに返します。

View:ユーザーのリクエストに応じてモデルとデータをやり取りしたり表示するテンプレートを作成しResponseを返します。

Model:データを管理する機能です。ビューからのリクエストに応じてデータを作成・更新・読み込み・削除をします。

Template:HTTPレスポンスボディを作成します。主にHTMLファイルを作成します。テンプレートエンジンを使って作成しています。

表示に関する処理はViewに、データに関する処理はModelに、HTMLファイルに関する処理はTemplateに書く様にすれば保守や開発がしやすくなります。

まとめ

UIをもつソフトウェアをModel、View、Controller(MVC)の3つの要素に分ける設計方法があります。DjangoにはこのMVCに似たModel、Template、View(MTV)という設計モデルがあります。

DjangoにはFormやManager、LookUp、Signalなど様々な機能がありますが、

「webサイトをどう作れば良いか分からない。どこにどのコードを書けば良いか分からない」

という段階の場合は最初は重要な機能であるURLConf、ビュー、モデル、テンプレートの4つを覚えましょう。

スポンサーリンク
スポンサーリンク