Django
Python 製のフルスタック Web フレームワーク。必要な機能を一式備え高速開発を支える
Django とは
Django (ジャンゴ) は、Python で Web アプリケーションを構築するためのフレームワークだ。Web 開発に必要な機能を一通り標準で備える「フルスタック」型で、データベース操作・管理画面・認証・セキュリティ対策などが最初から用意されている。公式が掲げる設計哲学は疎結合と高凝集で、一式そろっていてもテンプレート層は Web リクエストを知らず、データベース層は表示のしかたを知らない。各層が互いを知らずに済むよう保たれているため、一式で使いながら必要な部分だけを差し替えることもできる。もう一つの明示された目標は「コードを少なく」、つまり定型的な繰り返しコードを書かせないことで、これが少ないコードで本格的な Web サービスを組み上げられる理由になっている。
生まれと現行の版
出発点は 2003 年秋、米国の新聞社の Web 部門 World Online で、Adrian Holovaty と Simon Willison が PHP をやめて Python で自社サイトを作り始めたことだった。取材の締め切りに追われる報道現場では複雑な Web アプリを数時間で公開する必要があり、その中から汎用の枠組みが抜き出されていった。2 年ほど手を入れたのち、2005 年夏に open source として公開されたのが Django だ (公式 FAQ)。名前は 1930 年代から 1950 年代前半に活躍したジャズギタリスト Django Reinhardt にちなむ。
2026 年 8 月時点の最新版は 6.1、長期サポート (LTS) の現行は 5.2 LTS で、こちらは 2028 年 4 月まで延長サポートが続く。4.2 LTS は 2026 年 4 月にサポートが切れているため、これから始めるなら 5.2 LTS 以降を選ぶ。なお 2028 年のリリースからは版番号が西暦 4 桁になり、機能リリースは毎年 1 月、どの機能リリースも 3 年サポートを受ける方式へ移行することが公式に告知されている。「LTS だけが長期サポート」という前提で運用計画を立てていると、この切り替えで前提が変わる。
何を提供するか
| 機能 | 役割 |
|---|---|
| ORM | データベースを Python オブジェクトとして操作 |
| 管理画面 | データ管理用の画面を自動生成 |
| 認証 | ログイン・権限管理を標準装備 |
| セキュリティ | 主要な攻撃への対策を組み込み |
特に、データモデルを定義するだけで管理画面が自動生成される機能は、開発初期の生産性を大きく高める。
ORM とマイグレーションの機序
ORM ではモデルクラスが 1 つのテーブル、クラスに並べたフィールドがその列に対応する。問い合わせは SQL ではなく Python の式として組み立て、実際に値を必要とする時点まで実行を遅らせてから SQL に変換される。この「遅延」があるため、条件を継ぎ足していっても発行される問い合わせは 1 本にまとまる。
モデル定義を書き換えたときに、既存のデータベースのテーブル構造を追随させる仕組みがマイグレーションだ。makemigrations がモデルの変更点をマイグレーションファイルにまとめ (公式ドキュメントはこれをコミットに例えている)、migrate がそれをデータベースへ適用する。ファイルは各アプリの migrations ディレクトリに置かれ、コードと一緒にバージョン管理へ入れて配布する前提で設計されている。適用前に実際の SQL を見たいときは sqlmigrate、どこまで当たっているかの一覧は showmigrations で確認できる。
つまずきやすいのは次の 2 点だ。1 つは一覧画面で 1 行ごとに関連オブジェクトを取りに行き、問い合わせが表示件数の分だけ増えてしまう形で、公式は select_related() と prefetch_related() でまとめて取得することを勧めている (6.x 系ではアクセス時に一括取得する fetch mode も用意された)。もう 1 つは複数のブランチが同じアプリのマイグレーションを並行して作ってしまう衝突で、こちらは makemigrations --merge が解消用に用意されている。どちらも開発中は気づかず、データ量と人数が増えてから表に出る。
FastAPI との違い
| 観点 | Django | FastAPI |
|---|---|---|
| 範囲 | 画面を含む Web アプリ全体 | API 構築に特化 |
| 機能 | 一式そろったフルスタック | 軽量・必要な部分を組む |
| 向く用途 | 総合的な Web サービス | 高速な API・マイクロサービス |
画面も含めた Web サービス全体を作るなら Django、API に特化するなら FastAPI という使い分けになる。管理画面と認証を自前で作る手間を考えると、社内向けの管理ツールを含む案件では Django 側に寄せたほうが総量は小さくなりやすい。
採用時の注意点
Django は多機能なぶん、フレームワーク独自の作法を理解する必要があり、小規模なアプリには重く感じることもある。標準機能が「規約」に沿って動くため、その流儀から大きく外れた要件では、かえって扱いにくくなる場合がある。また、セキュリティ対策が組み込まれているとはいえ、設定を誤れば穴になるため、過信は禁物だ。とりわけ DEBUG を有効なまま公開すると例外画面に設定値まで表示され、ALLOWED_HOSTS の指定を怠れば意図しないホスト名でのアクセスを受ける。
版の選択も採用時の判断に含まれる。機能リリースの寿命は LTS より短く、追随の手が空かない運用なら LTS を選んでおくほうが安全だ。逆に、新機能を早く取り込みたい場合は最新の機能リリースを追い、年 1 回程度の更新作業を運用計画へ最初から織り込む。
この記事は役に立ちましたか?
関連用語
Python
読みやすさを重視した汎用プログラミング言語で、データサイエンス、AI、Web 開発で広く使われる
FastAPI
Python 製の高速な Web API フレームワーク。型ヒントを活かした効率的な開発が特徴
Database
データを整理して保存 / 検索 / 更新するための仕組み。システムの根幹を担う
Laravel
PHP 製の人気 Web フレームワーク。優雅な記述と豊富な機能で開発を効率化する
Rails
Ruby 製の Web アプリケーションフレームワーク。規約に従うことで高速開発を実現する
Firebase
Google が提供するアプリ開発基盤。サーバー構築なしで認証や DB を利用できる
関連する記事
体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版は初版と何が違うか - 買い直し判断ガイド
通称「徳丸本」こと体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版 (2018 年) と初版 (2011 年) の違いを出版社公表の改訂内容から整理。章の削除 / 新設 / 追加点の一覧と、初版所有者が買い直すべきかの判断基準を解説します。
セキュリティ本ガイド - Web 開発者が読むべき技術書の選び方
Web セキュリティの基礎から実践まで学べる技術書の選び方マトリクスと、読了後にやるべき 3 つのアクションを紹介します。
AWS 本の選び方 - 全体像 / 構築 / 設計 / 運用 / セキュリティの 5 視点
AWS を学ぶ技術書の選び方を「全体像 / 構築 / 設計 / 運用 / セキュリティ」の 5 視点で整理。公式ドキュメントと本の役割分担、資格対策書の位置づけまで、2026 年 8 月時点の定番書で AWS 独学のルートを解説します。