MENU

Django — 新聞社発のフルスタックPython Webフレームワーク

Django アイキャッチ
Django

Djangoは2003年から2005年にかけて、米カンザス州ローレンスの地方紙『Lawrence Journal-World』のWebチームで、アドリアン・ホロヴァティ(Adrian Holovaty)とサイモン・ウィリソン(Simon Willison)らが社内開発したPython製Webフレームワークです。短い締切で記者の要望に応えるために生まれた経緯から、認証・管理画面・ORM・テンプレートまで一式が揃った「電池付き(batteries included)」設計が特徴。本記事では2025年現在も主要Webスタックの一角を占めるDjangoを解説します。

目次

この記事の目次

  1. Djangoが用意しているもの
  2. 新聞社で生まれた経緯
  3. 典型的なプロジェクト構成
  4. Flask・FastAPI・Railsとの違い
  5. まとめ

Djangoが用意しているもの

Djangoが用意しているもの

Djangoの設計思想は「Don't Repeat Yourself」と「Convention over Configuration」で、models.pyにモデルクラスを書くだけでマイグレーション・CRUD・管理画面・フォーム検証が自動的に成立します。django.contrib.adminは特に象徴的な機能で、ModelAdminを2〜3行登録するだけで一覧・編集画面が利用可能になり、社内ツールの土台としてよく使われます。

認証(django.contrib.auth)、セッション、CSRF対策、メッセージフレームワーク、国際化(i18n)、メール送信、キャッシュ、ファイルストレージ抽象化なども標準同梱で、サードパーティに頼らずアプリの骨格を組めます。GeoDjango拡張による地理情報、django-channelsによるWebSocket対応もあり、「不足分をマーケットから探す」フレームワークではなく「揃ったものを組み合わせる」発想が貫かれています。

新聞社で生まれた経緯

新聞社で生まれた経緯

Djangoの原型は2003年、Lawrence Journal-World社のWorld Onlineチームで動き出しました。新聞社の特殊事情として「企画から公開までが数時間」という締切が常態化しており、アドリアン・ホロヴァティとサイモン・ウィリソンは内製のPythonツールを高速開発の基盤に育てていきます。名前はジャズギタリストのジャンゴ・ラインハルト(Django Reinhardt)に由来し、2005年7月にBSDライセンスでOSS公開されました。

2008年6月には非営利のDjango Software Foundation(DSF)が設立され、企業色のない中立的なガバナンス体制を確立。リリースは現在「8か月ごとのフィーチャーリリース+3年LTS」というサイクルで運用されています。2022年12月公開のDjango 4.1で非同期ORMが本格化し、2023年5月のDjango 4.2 LTS、2024年12月のDjango 5.1と、安定したロードマップで進化しています。

典型的なプロジェクト構成

典型的なプロジェクト構成

Djangoのプロジェクトは django-admin startproject で雛形を作り、その下にアプリ(app)を切る構造が標準です。models.pyでテーブル定義、views.pyでロジック、templates/でHTMLを書き、urls.pyでURLパターンを並べる、という分担は20年来ほぼ変わっていません。管理画面はadmin.pyで数行登録、フォームはforms.py、テンプレートタグ追加はtemplatetags/と、ファイル名と置き場所の規約だけ覚えれば動かせるのが新人にやさしいポイントです。

純粋なREST APIサーバーとして使う場合は、Tom Christieが2011年に公開したDjango REST Framework(DRF)が事実上の標準で、Serializer・ViewSet・Routerを並べるだけでJSON APIが完成します。本番運用ではgunicornやuvicornをアプリケーションサーバーに、フロントにnginxを置き、PostgreSQLとRedisを組み合わせるのが王道。Instagram、Pinterest、Mozilla Add-onsなどユーザー数が極端に多いサービスにもDjangoは採用されてきました。

Flask・FastAPI・Railsとの違い

Flask・FastAPI・Railsとの違い

Pythonの世界で最もよく比較されるのがFlaskとFastAPIです。Flaskは「最小限のWAFを自分で組み立てたい」用途に向く一方、Djangoは「最初からセットで提供する」スタンス。FastAPIはASGIと型ヒントを活かした非同期API向けに新たに設計されており、「画面と管理機能まで含めたWebアプリ」を作るならDjango、「軽量なJSON API」ならFastAPIが選ばれやすい構図です。

言語をまたいだ比較ではRuby on Railsがしばしば対置されます。Railsは2004年に登場し「設定より規約」をWeb開発に持ち込んだフレームワークで、Djangoと同時期に同じ問題意識から派生した兄弟関係にあります。Node.js側のExpressやNestJSとは別カテゴリの選択肢で、プロジェクトの特性(管理画面の必要性・APIのみで完結するか・チームの言語)に応じて選ぶことになります。

まとめ

Djangoは新聞社の現場で磨かれた「揃ったものを組み合わせて速く作る」哲学を、20年にわたり貫いてきました。管理画面と認証が即座に手に入る点は依然として強力で、新規Web案件で「画面・データ・運用まで一式必要」な場合に今でも有力な選択肢です。

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次