PR

Djangoとは?:Pythonの人気Webフレームワークを初心者向けに解説

Django

Django(ジャンゴ)とは、Pythonで書かれた無料&オープンソースのWebフレームワークのこと。

豊富な機能と簡単な拡張性により、開発者が迅速にメンテナンス性の高いWebアプリケーションを作成できるように設計されている点が特徴。

Pythonという言葉を聞いたことがあるかもしれませんが、Python自体は一種のプログラミング言語で、その上で動作するDjangoはその能力を最大限に引き出すためのツールです。

この記事では、「Djangoって何?」「何のためにどうやって使われているの?」という疑問を解消すべく、IT初心者向けにDjangoの魅力とその基本的な使い方を分かりやすく解説します。一緒にDjangoの世界を探求していきましょう!

このページで学べる内容
  • Webフレームワークの役割
  • Djangoの特徴/利点/使用例
  • Djangoのインストール方法
  • Djangoでの基本的なWebアプリケーションの作り方
    • Djangoプロジェクトの作成
    • Djangoアプリケーションの作成
    • データベースの設定
    • View、URL、テンプレートの基本的な作り方

Pythonエンジニアであれば、知っておいて損はない基本知識の1つ。是非最後までご覧ください。

スポンサーリンク

Webフレームワークとは?

はじめに、Webフレームワークとは何か、なぜそれが重要なのか?についてご説明します。

Webフレームワークは、一言で表すと「WebサイトやWebアプリケーションを作るための道具箱」です。

Webフレームワークがあることで、プログラマーは難解なコードを1から書く必要なく、複雑なWebアプリケーションを効率的に開発することができます。

例えば、Webフレームワークには以下のような役割があります。

Webフレームワークの主な役割
  • ルーティング
  • データベースとのインターフェース
  • テンプレートエンジン

これらの機能をフレームワークが提供してくれることで、開発者は複雑なWebアプリケーションも効率よく作成することができます。1から自分ですべてを作る必要がないので、必要な機能の開発にコストをかけることが可能。

その一つがPythonで作られたDjangoです。

Djangoはこのような一般的なフレームワークの機能に加え、セキュリティ対策や管理画面など、より高度な機能を初めから備えており、世界中の様々なWebサイトがDjangoをベースに構築されています。

Webサイト概要
Instagram世界で最も人気のある写真共有サービスの一つ。
ユーザーは写真をアップロードしそれを他のユーザーと共有することが可能。
MozillaFirefoxの開発者であるMozilla Foundationの公式Webサイト。
Pinterestユーザーがイメージを「ピン」として保存し、
それらをテーマ別に分類することができるプラットフォーム。
The Washington Post米国の主要な日刊新聞のWebサイト。
ニュース記事やコラム、ブログを提供しています。
Djangoで構築された主なWebサイト

それでは、なぜDjangoが多くのWebサイトで利用されているのか?次の章ではDjangoの特徴や利点をわかりやすく解説します。

「ライブラリ」「パッケージ」「フレームワーク」

Pythonを勉強している方は、ライブラリやパッケージといった単語を聞いたことがある方も多いかもしれません。ここでは、それらの関連性を整理しておきます。

参考 モジュール/パッケージ/ライブラリの違いを3分で解説

  1. ライブラリ:これはプログラミングにおいて、特定の機能を提供するコードの集まりのことを指します。例えば、数学的な計算を行うライブラリ、データをグラフとして描画するライブラリなどがあります。これらはプログラマーが自分で一からコードを書く手間を省くために存在します。
  2. パッケージ:パッケージは複数のライブラリやモジュールをひとまとめにしたものです。これらは特定の目的を達成するために、関連するライブラリやモジュールを一緒に管理し、利用しやすくするためのものです。
  3. フレームワーク:フレームワークはある種の"設計図"や"骨組み"のようなもので、開発者がアプリケーションを効率的に構築するための基盤を提供します。一般的には、特定のアーキテクチャやデザインパターンに基づいて設計されており、開発プロセスを標準化し、品質を向上させる役割を果たします。

これらの関連性について説明すると、フレームワークは特定の目的を達成するための一連のパッケージやライブラリを組み合わせ、それらを一つの統一された構造の中に組み込んだものと言えます。

つまり、フレームワークは複数のパッケージやライブラリを利用して、それらを一つの全体として働くように組み合わせたものです。

具体的にDjangoに置き換えて考えてみると、DjangoはWebアプリケーションを開発するためのフレームワークで、その内部にはWebページを作るためのテンプレートシステム、データベースを操作するためのORM、ウェブリクエストを処理するためのルーティングシステムなど、様々なライブラリやパッケージが組み込まれているものと考えられます。

これらを効率的に活用することで、ウェブアプリケーションの開発を効率化し、品質を高めることが可能になります。

Django(ジャンゴ)の特徴

Djangoの主な特徴は以下の通り。

Djangoの特徴
  • DRY原則による効率的な開発
  • セキュリティ対策
  • 高度な管理画面
  • 柔軟なデータベース設計

それぞれの内容について少しだけ深掘りしながら説明します。徐々に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のルーティングを管理するファイルなどが含まれています。

Djangoプロジェクト
図1:Djangoプロジェクト(1)
Djangoプロジェクト
図2:Djangoプロジェクト(2)
ファイル
ディレクトリ
説明
myproject/プロジェクトのルートディレクトリ。
このディレクトリ名は、startprojectコマンドで指定したプロジェクト名。
├── myproject/Djangoプロジェクトの設定ディレクトリ。
このディレクトリ名も、startprojectコマンドで指定したプロジェクト名。
│ ├── init.pyPythonのパッケージを表すための空ファイル。
│ ├── settings.pyプロジェクトの設定ファイル。
データベースの設定、インストールされたアプリケーションのリスト、
テンプレートの設定、ミドルウェアの設定など。
プロジェクト全体に関わる設定がここに記述されます。
│ ├── urls.pyプロジェクトのURL設定ファイル。
URLとビューを結びつけるためのルーティング設定がここに記述されます。
│ └── wsgi.pyプロジェクトを配信するためのWSGIアプリケーションのエントリポイント。
WebサーバとDjangoアプリケーションをつなげる役割を果たします。
└── manage.pyDjangoプロジェクトを管理するためのコマンドラインユーティリティ。
Djangoアプリケーションの作成、開発用サーバの起動など。
Djangoに関連する様々なタスクをこのスクリプトを通じて行います。

上記はDjangoプロジェクトを新規に作成したときの最初のディレクトリ構成。

この中に新たなDjangoアプリケーションを作成したり、追加の設定を行ったりすることで、Webアプリケーションを作り上げていきます。

Djangoアプリケーションの作成

Djangoプロジェクトを作成した後、次に行うのがDjangoアプリケーションの作成です。Djangoアプリケーションは、特定の機能を持つ一つのモジュールを指します。

例えば、ブログ機能、ユーザー管理機能、商品管理機能などはそれぞれ機能ごとに別のアプリケーションとして作成していきます。

Djangoアプリケーションの作成もコマンド一つで行うことができます。以下のコマンドで新たなアプリケーションを作成します。

python manage.py startapp myapp

上記のコマンドを実行すると、「myapp」という新たなDjangoアプリケーションが作成されます。

アプリケーション内部には、モデル(データベースの構造を定義)、ビュー(アプリケーションの「見た目」を制御)、URLの設定などを行うための基本的なファイル群が自動的に作成されます。

Djangoアプリケーション
図3:Djangoアプリケーション
ファイル名内容
__init__.pyパッケージの初期化を担当する特殊なPythonファイル。
このファイルがあることで、
Djangoはこのディレクトリをパッケージとして扱う。
admin.pyDjangoの管理インターフェースでモデルを操作する設定を行う。
apps.pyアプリケーションの設定を行うためのファイル。
アプリケーションの名前や設定などを記述します。
migrations/このディレクトリはデータベーススキーマの
マイグレーション(変更)履歴を管理するために使われます。
models.pyアプリケーションで使用するデータベースのテーブルを
Pythonのクラスとして定義する。
tests.pyテストを書くためのファイルです。
Djangoはテスト駆動開発を強く推奨しており、
新しい機能を開発する前にまずそのテストを書くことを推奨している。
views.pyユーザーがブラウザでアクセスしたときに
表示されるページ内容を決めるためのファイル。
各ページにどのようなデータを表示するのか、
どのテンプレートを使用するのかなどを定義します。

このように、Djangoではプロジェクトとアプリケーションの概念をうまく分離して管理することで、1つの大きなWebアプリケーションを小さな部品(アプリケーション)の集合体として扱うことができます。

Djangoのプロジェクトとアプリケーションの関係は、街(プロジェクト)とその中の建物(アプリケーション)という関係性に似ています。

例えば、街(プロジェクト)を考えてみましょう。

街全体の設計図(設定ファイル)があり、それにより街の全体像が定まります。その設計図に基づいて、道路が作られ、街の全体的なレイアウトが決定します。

そして、街にはさまざまな建物(アプリケーション)が存在します。例えば、レストラン、図書館、ショッピングモールなどがそれに当たります。これらの建物はそれぞれ特別な目的を持っています。レストランでは食事を提供し、図書館では書籍を提供し、ショッピングモールではさまざまな商品を提供。

このように、Djangoのプロジェクト(街)は全体的な構造や設定を定義し、アプリケーション(建物)はその中で特定の機能(レストランの食事、図書館の書籍など)を提供します。そしてこれらが組み合わさることで、一つの完全なWebサイトが構築されるわけです。

データベースの設定

Djangoは多種多様なデータベースエンジンとの連携が可能で、その設定方法は非常にシンプルです。

ここではその設定方法について、初心者の方でも理解できるよう詳しく説明します。

まず、Djangoでのデータベースの設定は、settings.pyというファイルに書かれます。具体的には、settings.py内にあるDATABASESという部分にデータベースの設定を書きます。この設定はPythonの辞書型という形式で記述されます。

Django データベースの設定
図4:Django データベースの設定

デフォルトの設定では、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データベースにアクセスできるようになります。

ただし、DjangoがMySQLと通信するためには、PythonのMySQLクライアントが必要で、mysqlclientPyMySQLなどが一般的に利用されます。これらは追加でインストールする必要があります。

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!")

参考 import文 / print関数

上記の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のまとめ

  1. Djangoとは・・・
    • Pythonで作成されたWebフレームワーク
    • Webアプリケーション開発に必要なすべてを1つに集約
  2. Djangoの特長
    • レスポンシブな開発: PCやスマホなど様々なデバイスに対応したWebアプリケーションを短時間で作成可能
    • 高度な管理画面: データの管理を手軽に行える自動生成される管理サイトを提供
    • 柔軟なデータベース設計: ORM(Object-Relational Mapping)を利用したデータベース操作を可能にする
  3. Djangoプロジェクトとアプリケーション
    • プロジェクト: DjangoのWebアプリケーション全体を管理するためのコンテナ
    • アプリケーション: 一つの機能やウェブサイトの一部を実現する単位
  4. データベース設定
    • Djangoのsettings.pyでデータベースの設定を行う
    • 使うデータベースに応じて設定を変える(例: SQLite, PostgreSQL, MySQLなど)
  5. View、URL、テンプレートの基本的な作り方
    • View: ユーザーからのリクエストを受け取り、適切なレスポンスを生成
    • URL: リクエストをどのViewに送るべきかを決定
    • テンプレート: HTMLを生成するためのファイル、動的なデータを簡単にHTMLに組み込むことができる

始めてPythonを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。

Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!

読者料典 Python入門:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
DjangoPython
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました