Django じゃんご
PythonフレームワークMVTアーキテクチャORM管理画面Webアプリケーションフルスタック
Djangoについて教えて
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の対応関係
Djangoの主な「バッテリー(同梱機能)」
| 機能 | 説明 | 導入コスト |
|---|---|---|
| ORM | PythonコードでDBを操作(SQL不要) | すぐ使える |
| 管理画面(Admin) | 設定数行でCRUD管理UIが自動生成 | すぐ使える |
| 認証・認可 | ログイン・パーミッション管理が組み込み済み | すぐ使える |
| フォーム | 入力検証・HTMLフォーム生成を自動化 | すぐ使える |
| マイグレーション | DBスキーマ変更を安全に管理 | すぐ使える |
| セキュリティ | CSRF・XSS・SQLインジェクション対策が標準 | デフォルトで有効 |
歴史と背景
- 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を選ぶかどうかは、他のフレームワークとの比較で判断するのが実務的です。
| フレームワーク | 言語 | 特徴 | 向いているケース |
|---|---|---|---|
| Django | Python | フルスタック・全部入り | 管理画面が必要・中〜大規模 |
| Flask | Python | 軽量・最小限 | 小規模API・細かく制御したい |
| FastAPI | Python | 高速・API特化 | REST/GraphQL API専用 |
| Ruby on Rails | Ruby | Djangoに似た思想 | スタートアップ・MVP開発 |
| Laravel | PHP | PHPのフルスタック | PHP資産がある環境 |
| Spring Boot | Java | 大規模エンタープライズ向け | Java人材・大企業システム |
DjangoとFlaskの選び方(簡易フロー)
関連する規格・RFC
※ Djangoはオープンソースプロジェクトであり、特定のIETF RFC・ISO・IEEE規格には直接対応していません。ただし、Djangoが実装しているWebプロトコルや関連規格を以下に示します。
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 9110 | HTTP Semantics(DjangoのHTTPリクエスト/レスポンス処理の基盤) |
| RFC 6265 | HTTP State Management Mechanism(Cookieによるセッション管理) |
| RFC 6749 | OAuth 2.0(django-allauthなどの認証拡張が準拠) |