【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モデルとは- Model(データベースアクセス)
- Template(ページレイアウト)
- View(ページ選択とデータをページに埋め込む)
の頭文字をとったものです。
図で書くと下のようになります。
(手書き。。。😥)
ユーザーから受け付けた依頼(リクエスト)に応じてViewがDBからModelデータを取ってきてデータをこねこねしてtemplateに埋め込んで返す(レスポンス)という流れです。
飲食店の注文で例えると
- 顧客の注文を店員が受け付けます(リクエスト)。(View⇒なんの料理をどれだけ注文したか)
- 店員が注文に応じて冷蔵庫から材料を選択します。(Model⇒レシピ確認後に在庫があるか)
- そしてレシピ通りに料理を作り、必要な数の料理を顧客に提供します(レスポンス)。(Template⇒レシピと最初の注文内容)
図で書くとこんな感じです。
上記をふまえるとDjangoのアプリケーションを作るときには少なくともModel、View、Templateを定義してやる必要があるということですね。
それではそれら3つをアプリケーションに実装することをゴールに設定し、チュートリアルを進めましょう。
次からはチュートリアルにある投票アプリ(polls)を作っていきます。
⚠️チュートリアルはこちらから
はじめての Django アプリ作成、その 1 | Django ドキュメント | Django
makimakimakino.hatenablog.com
- 【Anaconda+Django】 PythonでWebアプリを開発してみる。【環境構築が実は一番ハードル高い?】 - だって楽したいじゃんか!
- 【Python】Pycharmを日本語化する【ぼくは英語ができましぇん】 - だって楽したいじゃんか!
- 【Python】辞書型dictを使う【文法】 - だって楽したいじゃんか!
- 【Anaconda+Django】 PythonでWebアプリを開発してみる【Djangoの設計思想MTVモデル?なにそれおいしいの?編】 - だって楽したいじゃんか!
- 【Anaconda+Django】Django(Python)でWebアプリを開発してみる【チュートリアルも一苦労編】 - だって楽したいじゃんか!
- 【Heroku+Django】DjangoプロジェクトをHerokuにデプロイしてWebサービス化する方法 - だって楽したいじゃんか!