WebフレームワークDjangoって何?

PROGRAMMING

フレームワークとは?

”フレームワークとはWebサイトを効率的に作れるようにするための機能”のことです

でも、なんだかイメージしにくいですよね。少し分かりやすくするために、具体例でみていきましょう↓

そもそも、Webサイトって?

webサイトは皆さんが使うWebブラウザ(クローム、IE、ファイアフォックス等)上では、きれいな見た目をしていますが、その正体は、英語文字列の羅列です。

このwebサイトの完成形と文字列の関係をを違う例で考えると、料理と食材の関係のようなものです。

カレーは、もともと、皮のついた野菜や生肉からできています。食材を切ったり、火を入れたり、調味料で味付けされて美味しいカレーが出来上がるのです。

Webサイトも全く同じで、たんなる文字列の羅列から様々な機能を実装して、きれいなWebサイトを作り上げていきます。

あらためて、フレームワークとは?

料理でいうと、キッチンのようなものです。包丁や、ガスコンロがあるから、簡単に料理ができるのです。

キッチンなしにカレーを作れと言われたらどうですか?食材を買ったスーパーで『その場でカレーを作れ』と言われてもかなり難しいですよね。

同様に、より正確に、より効率的Webサイトが作るためのキッチンのようなものがフレームワークとなります。

Djangoとは?

Djangoを一言でいうと、Webフレームワークになります。

Webフレームワークは特に、多くのデータを扱うサイトを作るときに力を発揮します。

例えば、Youtubeといった動画投稿サイト(動画という多くのデータを扱う)。InstagramやDropboxといった超有名なサービスに使われています。

ただ、Webフレームワークというのはたくさんあります。djangoはプログラミング言語Python のフレームワークとなります。

  • Django(Python)
  • Laravel(PHP)
  • Ruby on rails(Ruby)
  • Vue.js(JavaScript)

実は、これらのWebフレームワークの中だと、Djangoの求人数(日本の企業が扱っている割合)は結構低いです。

では、なぜDjangoなのか?
僕がDjangoを選択した以下の理由は2つです。

  • 上記のようなビッグネームが採用するフレームワークであること
  • Python自体の人気が高まっていること(AI、ビッグデータ)

つまり、いまから学習を始めるとしたら、一番大きな将来性を感じたためDjangoを選択しました。

django と普通のWebサイトの違い

普通のwebサイトの場合

djangoと普通のウェブサイトの違いは、

ブラウザからのリクエストに対して、対象となる単一のURLとHTMLファイルをレスポンスで返します。

飲食店で言えば、ケーキ屋さんや惣菜屋さんのように、注文(リクエスト)と出てくる商品(レスポンス)が1対1の関係であるというのが普通のweb サイトになります。

それに対してdjango はラーメン屋さんのイメージです。

出来上がったラーメンを提供するのではなく、注文(リクエスト)を受けてから、トッピングなどのお客様(ユーザー)に合わせて、ラーメンを提供します(レスポンス)。

ユーザーが『醤油ラーメン大盛り』をリクエストしたとします。まずリクエストを引き受けるのがurl.py(繋ぎの役割)になります。

注文を受けたurl.py はviews.py にその注文を伝え指示します。指示を受けた、views.py テンプレート(x.html=どんぶり大盛り or y.html=どんぶり小盛り)を用意します。

その後、『醤油ラーメン大盛り』に必要な食材(データ)などをmodels.py から持ってきます。

そして、完成したものをレスポンスとして返します。特徴としては、異なった注文に対して簡単に対応できることです。(味噌ラーメン小盛りでも中身を変えるだけでレスポンスできる。)

YouTubeならどの動画をどのユーザーに提供するか。インスタグラムならば、どの投稿をどのユーザーに提供するか。同じページ上に中身を入れ替えてデータを提供しているわけですね。(逆に、ユーザー1人1人に対して、Webページを作っていったらめちゃくちゃ大変)

ここまでで、djangoのイメージはつかめたのではないでしょうか?
django学習において、一番挫折が多いところは『全体像の把握』のようです。

これから、djangoを学んで行きたいよという方は、この辺りを理解しておくことはとても大切だと思います。

おまけ↓

開発環境の構築(MacOS)

まずは全体像。

MacOSに『Python』と『django』を入れていきます。

  • PC: Mac
  • 使う機械: Terminal
  • OS: MacOS
  • Terminal: bash

あくまでも僕が使う環境ですのでWindowsの方などは他に分かりやすい記事がたくさんあると思いますので、そちらの参考にしていただければなと思います。

手順

terminal及びhomebrewを使ったインストール方法

1. ターミナルを立ち上げる

画面右上の検索アイコン🔍(Spotlight検索)から『ターミナル』と検索し、Terminal.appを起動

2. Xcodeのインストール

ターミナルで以下のコードを実行

sudo xcode-select --install

3. Homebrewのインストール

ターミナルで以下のコードを実行

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

4. Pathを通す

以下のコマンドで.bash_profileを開く

vim ~/.bash_profile

そのうえで、ファイルに以下のコードを書き、保存しましょう。

export PATH=/usr/local/bin:$PATH

<vimのコマンド>

i   →  挿入モード
(ここで上のコードを書く)
esqキー → 挿入モード終了
:wq → 保存して終了
:q! → 保存せず終了

5. Python3 のインストール

ターミナルで以下のコードを実行

brew install python3

6. Djangoのインストール

ターミナルで以下のコードを実行

pip install django