Webバックエンド - フレームワーク

Django じゃんご

PythonフレームワークMVTアーキテクチャORM管理画面Webアプリケーションフルスタック
Djangoについて教えて

簡単に言うとこんな感じ!

DjangoはPythonでWebアプリを作るための「全部入りの道具箱」だよ!ログイン機能・データベース連携・管理画面まで最初から揃ってるから、ゼロから作るより圧倒的に速くWebサービスが作れるんだ!


Djangoとは

Djangoは、Pythonで書かれたオープンソースのWebアプリケーションフレームワークです。2005年に公開されて以来、「ベストプラクティスの塊」として世界中の開発者に使われてきました。Instagram・Pinterest・Disqusなど、名だたるサービスの裏側でも活躍しています。

フレームワークとは「Webアプリを作るための骨格+よく使う部品のセット」のことです。Djangoの特徴は「バッテリー同梱(Batteries included)」という設計思想で、認証・管理画面・フォームバリデーション・セキュリティ対策など、Webアプリに必要な機能がほぼすべて最初から含まれています。ゼロから車輪を再発明する必要がなく、ビジネスロジックの実装に集中できます。

発注・選定の文脈では「Python製・フルスタック・枯れた技術」という3点が重要です。採用実績が豊富なので開発者を確保しやすく、長期保守が必要なシステムにも向いています。


MVTアーキテクチャ ― Djangoの設計思想

Djangoは MVT(Model・View・Template) という構造でアプリを整理します。聞きなれた「MVC」に似ていますが、名称が少し違います。

MVT役割現実のたとえ
Model(モデルデータの定義・DB操作倉庫の棚と在庫管理ルール
View(ビューリクエストを受け取り処理する受付係・調理担当
Template(テンプレート)HTMLを組み立てて返す盛り付け・提供係

この分離によって「データ」「処理」「見た目」が混在しないコードになり、保守しやすくなります。

MVCとMVTの対応関係

MVC(一般的な概念) MVT(Django) Model データ構造・DB操作 Controller リクエスト処理・ロジック View 表示・UI Model データ構造・DB操作 View リクエスト処理・ロジック Template 表示・HTML生成 同じ 対応 対応

Djangoの主な「バッテリー(同梱機能)」

機能説明導入コスト
ORMPythonコードでDBを操作(SQL不要)すぐ使える
管理画面(Admin)設定数行でCRUD管理UIが自動生成すぐ使える
認証・認可ログイン・パーミッション管理が組み込み済みすぐ使える
フォーム入力検証・HTMLフォーム生成を自動化すぐ使える
マイグレーションDBスキーマ変更を安全に管理すぐ使える
セキュリティCSRFXSSSQLインジェクション対策が標準デフォルトで有効

歴史と背景

  • 2003年 ― 米国カンザス州の新聞社「Lawrence Journal-World」で、記者向けのCMS開発ツールとして社内利用が始まる
  • 2005年7月 ― オープンソースとして一般公開。音楽家「ジャンゴ・ラインハルト(Django Reinhardt)」から命名
  • 2008年 ― Django 1.0リリース。安定したAPIが保証され、商用利用が本格化
  • 2011年 ― Instagram(写真SNS)がDjangoを採用。大規模サービスでの実績が注目される
  • 2013年 ― Django Software Foundation(DSF)が設立。非営利財団による継続的なメンテナンス体制が確立
  • 2017年 ― Django 2.0リリース。Python 2のサポートを終了しPython 3専用に
  • 2021〜現在 ― Django 4.x系。非同期処理(async/await)のサポートを強化し、現代的なWebアプリ開発に対応

他フレームワークとの比較

Djangoを選ぶかどうかは、他のフレームワークとの比較で判断するのが実務的です。

フレームワーク言語特徴向いているケース
DjangoPythonフルスタック・全部入り管理画面が必要・中〜大規模
FlaskPython軽量・最小限小規模API・細かく制御したい
FastAPIPython高速・API特化REST/GraphQL API専用
Ruby on RailsRubyDjangoに似た思想スタートアップ・MVP開発
LaravelPHPPHPのフルスタックPHP資産がある環境
Spring BootJava大規模エンタープライズ向けJava人材・大企業システム

DjangoとFlaskの選び方(簡易フロー)

Pythonで Webアプリを作りたい 管理画面・認証・DBが 最初から必要? YES NO Django フルスタック・ バッテリー同梱 Flask / FastAPI 軽量・API特化・ 自由度が高い 迷ったらDjangoから始めるのが無難!

関連する規格・RFC

※ Djangoはオープンソースプロジェクトであり、特定のIETF RFC・ISO・IEEE規格には直接対応していません。ただし、Djangoが実装しているWebプロトコルや関連規格を以下に示します。

規格・RFC番号内容
RFC 9110HTTP Semantics(DjangoのHTTPリクエスト/レスポンス処理の基盤)
RFC 6265HTTP State Management Mechanism(Cookieによるセッション管理)
RFC 6749OAuth 2.0(django-allauthなどの認証拡張が準拠)

関連用語

  • Python — Djangoが動作するプログラミング言語
  • ORM — PythonコードでDBを操作するオブジェクト関係マッピング
  • REST API — DjangoでAPIを提供するアーキテクチャスタイル
  • MVC — DjangoのMVTの元となる設計パターン
  • フレームワーク — Webアプリ開発の骨格となるソフトウェア基盤
  • PostgreSQL — DjangoのORMと組み合わせてよく使われるRDB
  • WSGI — DjangoがWebサーバーと通信するためのPythonインターフェース規格
  • Docker — Django開発・本番環境のコンテナ化に多用されるツール