だって楽したいじゃんか!

大学院(機械工学科)を首席で卒業した男がこれまでの経験を生かさず殺さず発信していく

【Anaconda+Django】 PythonでWebアプリを開発してみる【Djangoの設計思想MTVモデル?なにそれおいしいの?編】


DjangoでWebアプリを開発する環境が揃ったので、早速開発を始めていきます。
といきなりコードを書き始めてもいいのですが、まずはDjangoの設計思想について理解します。

(個人的な考え方ですが、背景や全体感を先につかまないと、途中で何やってるのかわからなくなってしまうので。。。読むのがめんどくさい人は飛ばしてください。😑また、間違ったこと言ってたらご指摘ください)
makimakimakino.hatenablog.com

設計思想とは先人の知恵

ここでいう設計思想はUIをもつアプリケーションソフトを実装するためのデザインパターンです。アプリケーションを楽に実装するためのフレームワークを指します。
デザインパターンやフレームーワークはある言語で書かれた便利機能の集まり(偉大な先人が楽をするために書いてくれたもの)と考えてください。🤤

などのMVCモデルなどが有名です。

この思想によってアプリケーションソフトウェアの内部データを分割することで、機能ごとの分離が明確になり、独立性が確保されます。
その結果、複数人での開発が容易にできるようになります。

また、機能間の結合度も下がりますので、その結果、変更に対して強く保守性が高いソースが出来上がるというメリットもあります。😵

要はこの考え方がないと一か所に修正を加えたら、あっちもこっちも、画面もDBもプログラムも全部を直さなきゃいけないってなります。

役割ごとに切り離すことで、そんなめんどくさいことを防ぐごうよ!というのがベースです。👏

(※M:Model☜ビジネスロジック(数値計算やデータの管理)を担当、V:View☜アプリのページレイアウト(入力フォームや表示)を担当、C:Controller☜ルーティング(Viewで受けたデータをModelに渡して、処理結果をViewに戻す)を担当)

DjangoではMTVモデルを採用

DjangoはMTVモデルという設計思想を採用しています。MTVモデルとは

MTVモデル

  • Model(データベースアクセス)
  • Template(ページレイアウト)
  • View(ページ選択とデータをページに埋め込む)

の頭文字をとったものです。
図で書くと下のようになります。
(手書き。。。😥)

f:id:makimakimakino:20180701234502j:plain:w300

ユーザーから受け付けた依頼(リクエスト)に応じてViewがDBからModelデータを取ってきてデータをこねこねしてtemplateに埋め込んで返す(レスポンス)という流れです。

飲食店の注文で例えると

モデル概念

  1. 顧客の注文を店員が受け付けます(リクエスト)。(View⇒なんの料理をどれだけ注文したか)
  2. 店員が注文に応じて冷蔵庫から材料を選択します。(Model⇒レシピ確認後に在庫があるか)
  3. そしてレシピ通りに料理を作り、必要な数の料理を顧客に提供します(レスポンス)。(Template⇒レシピと最初の注文内容)

といった流れです。
図で書くとこんな感じです。

f:id:makimakimakino:20180701234540j:plain:w300

上記をふまえるとDjangoのアプリケーションを作るときには少なくともModel、View、Templateを定義してやる必要があるということですね。
それではそれら3つをアプリケーションに実装することをゴールに設定し、チュートリアルを進めましょう。

次からはチュートリアルにある投票アプリ(polls)を作っていきます。
⚠️チュートリアルはこちらから
はじめての Django アプリ作成、その 1 | Django ドキュメント | Django
makimakimakino.hatenablog.com

makimakimakino.hatenablog.com