【Django①】Djangoの概要と環境構築

さあDjangoについて学んでいこう!AIといえば機械学習、機械学習といえばPython、PythonでWebアプリケーションを作るならDjangoすよね😎

Dajngoって何?ってところから環境構築のところまで必要な知識のみを厳選して記載しています。
大事なところは押さえながら効率的に学んで、Webアプリを作れるようになっちゃいましょう♪


ではさっそく初めていきます!

Djangoとは

Pythonで実装されたWebアプリケーションフレームワーク
フレームワーク:アプリケーションを開発する際によく使われる機能がまとまったソフトウェア
✅ オープンソースとして公開されている
✅ コンテンツ管理システムやWikiからソーシャルネットワーク、ニュースサイトなど高品質なWebアプリケーションを高効率かつ少ないコードで作成することができる
✅ InstagramやPinterest、Mozilla、National Geographicなどの有名なWebアプリでも使われている

Djangoを使うメリット

高速な動作
標準で、分散型のキャッシュシステムであるmemcachedが備えられており、キャッシュ機能が強力です。高速な処理速度が要求される大規模サービスなどで、有力な選択肢になる。


フルスタック・フレームワーク(多数の便利な機能を装備)
フルスタックとは、Webアプリケーションの実装に必要な機能が一通り揃っていること。
Webアプリでよく使われる「ユーザー認証」「管理画面」「サイト案内」「RSSフィード」などの機能が、あらかじめ含まれています。


セキュリティ的に安全な設計
一般的な設計上のセキュリティミスが起こりにくい仕組みを採用している。(セッション情報の配置場所など)


✅ メンテナンスの容易さ
モジュールの独立性が高く、メンテナンスや拡張が容易になるようにできています。


自由に選べるプラットフォーム
Pythonは多くのプラットフォームで動作する言語のため、Linux、Windows、macOS Xなどのメジャーなプラットフォームで実行できる。


✅ 学習コストの低さ
オンラインの学習プラットフォームなどでも複数の学習プログラムが展開されている。

Djangoのデメリット

レスポンスが比較的遅い
フルスタックフレームワークであるためコードベースが大きく、他のマイクロサービスアーキテクチャと比較するとやや動作が遅くなってしまいます。しかし高速なレスポンスが必要なアプリケーションを作成する必要があるなどの事情がなければ、無視できるレベルと言えます。

扱える日本人エンジニアが少ない
日本ではスクリプト言語としてはRubyが圧倒的な人気となっており、Pythonが扱えるエンジニアは比較的少ないと言えます。また日本ではPythonをメインで扱っている企業も現状は少ないため、自社開発で採用するにはハードルが高くなってしまう問題がある。

デメリットの方をしっかり理解してもらいたいので、しっかり書きました。
しかし、機械学習の優秀なライブラリが揃っているPythonへの注目が高まっている現在、Pythonを活用したい・Pythonで開発をしたいというエンジニアは増加傾向にあり、DjangoのようなPythonベースの人気のあるウェブフレームワークを採用するメリットは十分にあると言えると思います。

Djangoのチュートリアル

👇Djangoのチュートリアルは以下の二つがあります

Django Girls Tutorial :公式チュートリアルよりも初心者向け

各種開発ツール、URL, HTMLなどの基本的な用語の説明までされている。

Django公式チュートリアル:Djangoドキュメントに記載されている公式チュートリアル

設計思想を元にDjangoでの実装お作法の説明がされている

Djangoの全体像

下記かDjangoの全体像となっています。例えば、ユーザーがChromeでYouTubeにアクセスし、動画をクリック(Httpリクエスト)したとします。するとサーバーを経由して”urls.py”が”views.py”に何を表示させるか指示をします。それを受け取った”views.py”が、”model.py”(動画を保管するDBを構成している)に必要な動画をリクエストし、”.html”と一緒にサーバーへ返します。そしてサーバーがChromeに表示する(Http Response)という流れになります。

この流れをコードで作っていくのがWebアプリの開発になります。以上の流れをしっかり頭に入れておけば、この後のDjangoで書いているコードがどの部分にあたるのかが分かり、理解度は大幅に向上します。まずはこの図を頭に叩き込もう!

Djangoの機能

👇Djangoが標準で装備されている機能には以下のものがある

  1. Django管理サイト(django.contrib.admin)
  2. ユーザー認証機能(django.contrib.auth)
  3. モデル情報取り扱い(django.contrib.contenttypes)
  4. セッション管理(django.contrib.sessions)
  5. メッセージ表示処理(django,contrib.sessions)
  6. メッセージ表示処理(django.contrib.messages)
  7. 静的ファイル公開(django.contrib.staticfiles)

今回は”Django管理サイト”と”ユーザー認証機能”について詳細を説明します。

Django管理サイト(django.contrib,admin)

✅ Djangoが自動生成する管理サイトであり、マスタ管理画面やログインアカウントの権限管理などを行う機能がついている
✅ 表示するデータの変更やデザインの修正、新規ページの追加など柔軟にカスタマイズできるようになっている
✅ 通常のWebアプリケーションの開発では、一般ユーザー用と管理者用のWebアプリを1から作成すつことが多いが、その必要がなくなる

ユーザー認証機能(django.contrib.auth)

✅ Djangoに標準で装備されているユーザー認証機能
✅ “django-allauth”パッケージを利用すれば、簡単な設定を行うだけでパスワード再設定からソーシャルログイン機能まで対応している

環境構築(mac)

自分でホストPCに直接、または仮想環境を立てて構築する方法
(筆者的には非推奨)

まずはプログラムを起動させる環境の構築に必要なパッケージマネージャーをインストールしていきます。👇ターミナルを開き、以下を実行してください。

ホストPCに直接インストールする方法(非推奨)

こちらは何も考えずに、ご自身のホストPCに直接パッケージをインストールする方法になります。このインストール方法は、PC環境を管理することが難しいため、非推奨です。後述する仮想環境でのやり方にトライしてみてください。

仮想環境を立て、開発環境構築していく方法1(virtualenv): python2系以前まで推奨

仮想環境を立て、開発環境構築していく方法2(venv): python3系以降は推奨

仮想環境の入り方とDjangoのインストール

Docker を使ってコンテナ内で環境を構築する方法(推奨)

こちらの方法はDockerの学習が進んでいる方向けになります。
上記の方法は、ご自身のPCの環境に依存する部分が出てきてしまい、チームメンバーとコードやアプリ動作確認を共有しながら開発するケースにおいては、コミュニケーションがスムーズにいかない場合が想定されるため、個人的にはオススメできません(個人の趣味でアプリ開発したい場合はほとんど問題ないです)。

Dockerは遅かれ早かれ学習すべきだと筆者は考えているので、こちらの方法を推奨しています。
下記の記事に詳細を記載しているので、チェックしてみて下さいね👇

“Djangoの概要と環境構築”は以上になります、いかがだったでしょうか?
他のサイトを見てみるとかなりの情報量の記載があり、『これじゃあ初学者は何から学んでいいか分からないよなあ』って思ったので、書いてあることは本当に押さえといて欲しいところだけになっています。

ここまでは本当に概要のみなので退屈だと思った方も多いと思いますが、次回からはしっかりDjangoの中身について触れていきたいと思いますので、楽しみにしててくださいね!

今回はこの辺で、ばいばい👋

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です