Django(ジャンゴ)とは、Pythonで書かれた無料&オープンソースのWebフレームワークのこと。
豊富な機能と簡単な拡張性により、開発者が迅速にメンテナンス性の高いWebアプリケーションを作成できるように設計されている点が特徴。
Pythonという言葉を聞いたことがあるかもしれませんが、Python自体は一種のプログラミング言語で、その上で動作するDjangoはその能力を最大限に引き出すためのツールです。
この記事では、「Djangoって何?」「何のためにどうやって使われているの?」という疑問を解消すべく、IT初心者向けにDjangoの魅力とその基本的な使い方を分かりやすく解説します。一緒にDjangoの世界を探求していきましょう!
Pythonエンジニアであれば、知っておいて損はない基本知識の1つ。是非最後までご覧ください。
Webフレームワークとは?
はじめに、Webフレームワークとは何か、なぜそれが重要なのか?についてご説明します。
Webフレームワークは、一言で表すと「WebサイトやWebアプリケーションを作るための道具箱」です。
Webフレームワークがあることで、プログラマーは難解なコードを1から書く必要なく、複雑なWebアプリケーションを効率的に開発することができます。
例えば、Webフレームワークには以下のような役割があります。
これらの機能をフレームワークが提供してくれることで、開発者は複雑なWebアプリケーションも効率よく作成することができます。1から自分ですべてを作る必要がないので、必要な機能の開発にコストをかけることが可能。
その一つがPythonで作られたDjangoです。
Djangoはこのような一般的なフレームワークの機能に加え、セキュリティ対策や管理画面など、より高度な機能を初めから備えており、世界中の様々なWebサイトがDjangoをベースに構築されています。
Webサイト | 概要 |
---|---|
世界で最も人気のある写真共有サービスの一つ。 ユーザーは写真をアップロードしそれを他のユーザーと共有することが可能。 | |
Mozilla | Firefoxの開発者であるMozilla Foundationの公式Webサイト。 |
ユーザーがイメージを「ピン」として保存し、 それらをテーマ別に分類することができるプラットフォーム。 | |
The Washington Post | 米国の主要な日刊新聞のWebサイト。 ニュース記事やコラム、ブログを提供しています。 |
それでは、なぜDjangoが多くのWebサイトで利用されているのか?次の章ではDjangoの特徴や利点をわかりやすく解説します。
Django(ジャンゴ)の特徴
Djangoの主な特徴は以下の通り。
それぞれの内容について少しだけ深掘りしながら説明します。徐々にDjangoが何者であるか?がわかってくることと思います。
Djangoの特徴1:DRY原則による効率的な開発
DjangoではDRY(Don't Repeat Yourself)という原則が重視されています。これは「同じコードを何度も書かない」という意味です。
例えば、あなたが手紙を書くとき、同じ内容の手紙を5人に送るとします。それぞれの手紙を一から書くのは時間がかかりますよね。でも、一度書いた手紙のコピーを作れば、それほど時間はかかりません。
これがDRYの原則です。これにより、コードは整理され、保守も容易になります。
Djangoの特徴2:セキュリティ対策
Djangoはセキュリティを最初から考慮に入れて設計されています。
通常、セキュリティは設計・開発を行いながら、徐々にその精度や強度を高めていくものですが、Djangoを利用すれば最初からそれらのセキュリティのセットが組み込まれているので、効率的かつ安心に利用することができます。
Djangoを使用すれば、SQLインジェクションやクロスサイトスクリプティングなど、Web開発における一般的なセキュリティの脅威から保護されます。
家を建ててから、鍵や防犯カメラを設置するのではなく、最初から鍵や防犯カメラが設置されている家を改築・増築していくようなイメージに近いかもしれません。
Djangoの特徴3:高度な管理画面
Djangoは初めから使える高機能な管理画面を提供しています。
これは、あなたが新しいスマートフォンを手に入れたときに、最初から便利なアプリがインストールされているのと同じ。これにより、ユーザー管理やコンテンツの管理が容易になります。
通常、0からWebアプリケーションを開発する際には、当たり前ですが管理画面も存在しないため、必要であれば自分で管理画面を作成します。その手間が省けるというのがDjangoを利用するメリットの1つ。
Djangoの特徴4:柔軟なデータベース設計
Djangoではデータベース設計が非常に柔軟に行えます。
Djangoのオブジェクトリレーショナルマッピング(ORM)という機能を用いると、データベースの操作がPythonのコードで直感的に書けるようになります。
Python自体でデータベース設計を行うことも可能ですが、Pythonだけでデータベースを操作するためには、SQL(Structured Query Language)というデータベースを操作するための言語を学び、直接SQLを書く必要があります。
対して、Djangoを利用すればORMが利用できるので、Pythonのコードだけでデータベース操作が可能となります。これにより、SQLの詳細な知識がなくても、直感的にデータベース操作が行えるという点が特徴。
さらにDjangoでは、データベースのスキーマ(構造)を定義するためのモデルという概念が提供されています。これを用いることで、Pythonのクラス定義だけでデータベースのスキーマを定義することができ、コードの見通しが良くなります。このような機能があるため、Djangoを用いるとPythonだけでデータベース設計を行うよりも手間が大幅に削減できます。
PythonとDjangoのインストール手順
Djangoを利用するためには、まずPythonとDjangoを自身のコンピューターにインストールする必要があります。
その詳細な手順は別記事にて詳しく解説していますが、概要を以下に説明します。
ステップ1
Pythonのインストール:Pythonは多くのオペレーティングシステムで使用可能です。公式ウェブサイトからダウンロードし、インストールします。
ステップ2
Djangoのインストール:Pythonをインストールした後、Pythonのパッケージ管理システム(pip)を使用してDjangoをインストールします。
↑こちらの記事ではVPS上にPythonの実行環境を構築する手順を解説しています。
Djangoでの基本的なWebアプリケーションの作り方
Djangoを用いてWebアプリケーションを作る流れを簡単に説明します。
まずは、新たなDjangoプロジェクトを作成するところから始めましょう。
Djangoプロジェクトの作成
DjangoでWebアプリケーションを作るためには、まずDjangoプロジェクトを作成する必要があります。
Djangoプロジェクトとは、あなたのWebアプリケーション全体を指す「コンテナ」「箱」「入れ物」のようなもので、アプリケーションの設定やデータベースの設定など、アプリケーション全体に関わる情報を管理するもの。
Djangoプロジェクトの作成は非常に簡単で、以下のコマンド一つで新たなプロジェクトを作成できます。
django-admin startproject myproject
このコマンドを実行すると、「myproject」(名前は任意で変更可能)という名前の新たなDjangoプロジェクトが作成されます。プロジェクト内部には、最初から基本的な設定が行われた設定ファイルやURLのルーティングを管理するファイルなどが含まれています。
ファイル ディレクトリ | 説明 |
---|---|
myproject/ | プロジェクトのルートディレクトリ。 このディレクトリ名は、 startproject コマンドで指定したプロジェクト名。 |
├── myproject/ | Djangoプロジェクトの設定ディレクトリ。 このディレクトリ名も、 startproject コマンドで指定したプロジェクト名。 |
│ ├── init.py | Pythonのパッケージを表すための空ファイル。 |
│ ├── settings.py | プロジェクトの設定ファイル。 データベースの設定、インストールされたアプリケーションのリスト、 テンプレートの設定、ミドルウェアの設定など。 プロジェクト全体に関わる設定がここに記述されます。 |
│ ├── urls.py | プロジェクトのURL設定ファイル。 URLとビューを結びつけるためのルーティング設定がここに記述されます。 |
│ └── wsgi.py | プロジェクトを配信するためのWSGIアプリケーションのエントリポイント。 WebサーバとDjangoアプリケーションをつなげる役割を果たします。 |
└── manage.py | Djangoプロジェクトを管理するためのコマンドラインユーティリティ。 Djangoアプリケーションの作成、開発用サーバの起動など。 Djangoに関連する様々なタスクをこのスクリプトを通じて行います。 |
上記はDjangoプロジェクトを新規に作成したときの最初のディレクトリ構成。
この中に新たなDjangoアプリケーションを作成したり、追加の設定を行ったりすることで、Webアプリケーションを作り上げていきます。
Djangoアプリケーションの作成
Djangoプロジェクトを作成した後、次に行うのがDjangoアプリケーションの作成です。Djangoアプリケーションは、特定の機能を持つ一つのモジュールを指します。
例えば、ブログ機能、ユーザー管理機能、商品管理機能などはそれぞれ機能ごとに別のアプリケーションとして作成していきます。
Djangoアプリケーションの作成もコマンド一つで行うことができます。以下のコマンドで新たなアプリケーションを作成します。
python manage.py startapp myapp
上記のコマンドを実行すると、「myapp」という新たなDjangoアプリケーションが作成されます。
アプリケーション内部には、モデル(データベースの構造を定義)、ビュー(アプリケーションの「見た目」を制御)、URLの設定などを行うための基本的なファイル群が自動的に作成されます。
ファイル名 | 内容 |
---|---|
__init__.py | パッケージの初期化を担当する特殊なPythonファイル。 このファイルがあることで、 Djangoはこのディレクトリをパッケージとして扱う。 |
admin.py | Djangoの管理インターフェースでモデルを操作する設定を行う。 |
apps.py | アプリケーションの設定を行うためのファイル。 アプリケーションの名前や設定などを記述します。 |
migrations/ | このディレクトリはデータベーススキーマの マイグレーション(変更)履歴を管理するために使われます。 |
models.py | アプリケーションで使用するデータベースのテーブルを Pythonのクラスとして定義する。 |
tests.py | テストを書くためのファイルです。 Djangoはテスト駆動開発を強く推奨しており、 新しい機能を開発する前にまずそのテストを書くことを推奨している。 |
views.py | ユーザーがブラウザでアクセスしたときに 表示されるページ内容を決めるためのファイル。 各ページにどのようなデータを表示するのか、 どのテンプレートを使用するのかなどを定義します。 |
このように、Djangoではプロジェクトとアプリケーションの概念をうまく分離して管理することで、1つの大きなWebアプリケーションを小さな部品(アプリケーション)の集合体として扱うことができます。
データベースの設定
Djangoは多種多様なデータベースエンジンとの連携が可能で、その設定方法は非常にシンプルです。
ここではその設定方法について、初心者の方でも理解できるよう詳しく説明します。
まず、Djangoでのデータベースの設定は、settings.py
というファイルに書かれます。具体的には、settings.py
内にあるDATABASES
という部分にデータベースの設定を書きます。この設定はPythonの辞書型という形式で記述されます。
デフォルトの設定では、DjangoはSQLiteというDBMSを使用します。これは小規模なアプリケーションには適していますが、大規模なアプリケーションの場合はPostgreSQLやMySQLといったデータベースエンジンを使うことが多いです。
MySQLを利用する場合、settings.py
内のDATABASES
セクションは以下のように書き換えます。
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '3306', } }
ENGINE
: 使用するDBMS。MySQLの場合はdjango.db.backends.mysql
となります。NAME
: 使用するデータベースの名前。あらかじめMySQLで作成しておく必要があります。USER
: データベースのユーザー名。該当のデータベースにアクセス可能なユーザーを指定します。PASSWORD
: データベースのユーザーのパスワード。HOST
: データベースサーバーのホスト名またはIPアドレス。同一マシン内で動作させる場合はlocalhost
を指定。PORT
: データベースサーバーのポート番号。MySQLのデフォルトは3306
です。
以上の設定を行うことで、DjangoからMySQLデータベースにアクセスできるようになります。
View/URL/テンプレートの基本的な作り方
Djangoの魅力の一つは、View、URL、テンプレートという3つの要素が連携してWebアプリケーションを構築するアーキテクチャ――MTV (Model Template View) と呼ばれるアーキテクチャを採用しています。
それぞれの要素の役割と、その基本的な作り方を見ていきましょう。
Viewの作り方
Viewは、ユーザーからのリクエストを受け取り、適切なレスポンスを生成する役割を果たします。基本的にはPythonの関数またはクラスとして定義します。
from django.http import HttpResponse def hello(request): return HttpResponse("Hello, world!")
上記のhello
関数は、リクエストを受け取り、文字列 "Hello, world!" をレスポンスとして返します。
URLの設定
URL設定は、ユーザーがブラウザでURLを入力したとき、そのリクエストをどのViewに送るべきかを決定します。urls.py
にパスと対応するViewを指定することで、URLの設定を行います。
以下に、先程作成したhello
関数を対応させるURLの設定例を示します。
from django.urls import path from . import views urlpatterns = [ path('hello/', views.hello, name='hello'), ]
テンプレートの作り方
テンプレートは、HTMLを生成するためのファイル。
参考 HTMLとは?
テンプレートを利用することで動的なデータを簡単にHTMLに組み込むことができます。Djangoは、テンプレート言語を用いて、Pythonの変数や命令をHTML内に埋め込むことが可能です。以下に、シンプルなテンプレートの例を示します。
<!DOCTYPE html> <html> <head> <title>My First Django Page</title> </head> <body> <h1>Hello, {{ name }}!</h1> </body> </html>
ここでは、{{ name }}
がテンプレート変数で、この部分がViewから渡された値に置き換わります。
これら3つの要素――View、URL、テンプレート――がうまく連携することで、Djangoでは動的で豊富な機能を持つWebアプリケーションを簡単に作り上げることができます。
Python:Djangoのまとめ
始めてPythonを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。
Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!
読者料典 Python入門:学習カリキュラム ←こちらから!