はじめに
未経験からITスキルを身につけて、副業をはじめてみたり、
プログラミングの学習を進めていくと、
出会ってしまう謎の単語がフレームワークです。
私自身、Pythonを学習中ですが、
副業や在宅でもできるITスキルを身につけるためには
押さえておかなければいけないのが、このフレームワークです。
現在はポートフォリオの作成の一環として、
PythonのフレームワークであるDjango(ジャンゴ)を利用して、
Webアプリを作成しています。
今回は、そんなPython未経験の私が学んだフレームワーク
Django(ジャンゴ)の基本と仕組みについて、
学習した内容をもとにまとめていきます。
Djangoは、Pythonで書かれたWebアプリケーションの開発を
支援してくれる便利なツールです。
プログラミングの基本的な文法の学習などと比べると、
一見ハードルが高そうに見えますが、要点を押さえれば
未経験でも使いやすいフレームワークになっています。
この記事はこんな方におすすめです!
- IT未経験だけど、Pythonで
ポートフォリオを作ってみたい - 在宅で副業に挑戦したいけど、
まず何から始めればいいかわからない - Djangoの仕組みや使い方がピンとこない
- 簡単なプログラミングの学習はしたけど、
フレームワークはまだわからない
第1章:Djangoとは
まず、IT未経験から学習している方にとって、
フレームワークという言葉を知らない方も多いと思います。
フレームワークとは、プログラムを作るときの
「土台」や「型」のようなものです。
家づくりに例えると、設計図や骨組み
があらかじめ用意されていて、
その上に壁やインテリアを加えていくイメージに近いです。
プログラミングにおいて、Webサイトやアプリといった
多くの機能をもつものを
すべて自分で書こうとすると、非常に時間がかかってしまいます。
そんな中で、大きな骨組みを活用して、
必要な処理を穴埋めの様に利用できるのがフレームワークです。
そして、PythonでWebアプリを作るとき、
このフレームワークの代表格の一つとなるのが
Django(ジャンゴ) です。
名前の由来は有名なジャズギタリスト
「ジャンゴ・ラインハルト」から来ているとされ、
2005年に公開されて以来、世界中の開発者に
支持され続けています。
Djangoは難しそうに見えますが、
実は初心者が学ぶのにも向いているフレームワークです。
理由としては、作りたいものを
最初から形にできる機能が豊富だからです。
ポートフォリオを作りたい、
小さなWebアプリを公開してみたいという
私のようにIT未経験から在宅ワークを目指す方にとって、
Djangoは心強い味方になってくれると思います。
Djangoの特徴
Djangoの大きな特徴は、
- 開発スピードが早い
基本的な機能が揃っているため、
一から作る必要がなく、
短期間でアプリが完成 - セキュリティが強い
SQLインジェクションやXSSといった攻撃
に対する防御機能が標準装備 - コミュニティと情報が豊富
世界中に利用者が多く、エラーが出ても
検索すれば解決策が見つかりやすい
具体的には以下のようなポイントがあります。
- MTVモデルを採用している
Webアプリを以下の3つに分けて考える仕組み
・データの設計(Model)
・処理(View)
・画面表示(Template) - 管理画面が自動生成される
開発者がコードを書くだけで、
データを管理するための管理者用ページを
自動で生成 - ユーザー認証など便利な機能が
最初から用意されている
ログイン、ログアウト、パスワード管理など
Webアプリに必須の機能を、
最初から組み込める仕組みがある - 大規模開発にも耐えられる拡張性
シンプルなブログからSNS、
ECサイトまで対応可能
スタートアップから大企業まで利用例がある
MTVモデルとは
Djangoを理解するうえで欠かせないのが、
MTV(Model・Template・View)モデル です。
これは一般的に知られる MVCモデルとほぼ同じ考え方ですが、
Djangoでは用語の呼び方が少し違います。
- Model(モデル)
- データベースの設計図
- ユーザー情報や投稿内容をここで管理
- Template(テンプレート)
- ユーザーに見せる画面(HTML部分)
- View(ビュー)
- リクエストを受け取って処理し
- どのテンプレートを返すかを決定
イメージとしては、以下の3ステップで
Webアプリが動く仕組みです。
- Modelでデータを用意する
- Viewで処理の流れを決める
- Templateで見た目を整える
第2章:つまずきやすいポイントとよくある誤解
Djangoをはじめ、簡単なプログラミング文法と比べ
フレームワークを学び始めたとき、
多くの方が思っていたより難しいと感じてしまいます。
実際には、Djangoのようなフレームワークそのものが
特別に難しいわけではなく、
Webアプリ開発に必要な考え方が一度に出てくるため
混乱しやすいことが原因だと思います。
Djangoに限らず、初めてWebアプリを作るときには
必ずつまずきがあります。
正直、初めての概念に触れるから当然のことです。
プログラミング学習と同じで、大事なのは
一気に全部やろうとせず、小さな機能を作りながら
少しずつ理解することです。
たとえば、
まずはユーザー登録だけ動かす → 次にログイン機能を試す
とステップを分けることで、
すこしずつ理解を深めていくことができます。
ここでは、Djangoを利用するにあたって、
私がしていた誤解やつまずいた点を整理してみます。
誤解その1:Djangoは難しいから未経験者には向かない
IT未経験で在宅ワークや副業をしたいと感がる場合、
まずは言語の学習、その次にポートフォリオの作成
が大まかな流れになります。
そんな中で、Djangoは
本格的なWebアプリケーションが作れるため、
ポートフォリオ作成のための選択肢の一つになると思います。
しかし、それと同時に私は
「未経験の自分にはまだ早いのでは?」と思っていました。
実際には、最初から少しの実装で
ログイン機能や管理画面が作成できたため、
私のようにPython未経験でも、
ある程度形になる成果を得やすいフレームワークでした。
ハードルの正体は、
仕組みを一度に覚えようとしていたことでした。
ポートフォリオ作成でもそうですが、
フレームワークの操作を最初から全部理解する必要はないです。
実装するにあたって、必要な部分だけ切り出して
試してみることでハードルは下がります。
誤解その2:HTMLとの連携が面倒そう
私自身、業務ではバックエンド側ばかりで
フロントエンド(見た目)はほとんど触っていません。
たとえば、HTMLで「ログイン画面」を作っても、
それだけでは、Pythonで作ったバックエンド側の
ログイン処理は動きません。
自分でこのHTMLとPythonを
連携させようとするのは非常に大変です。
しかし、Djangoでは、
データベースとのやり取りやリクエスト処理
といったバックエンド側の処理だけではなく
ViewやTemplateでフロントエンド側の処理
も扱うことができます。
そして、ViewやTemplate、Modelを組み合わせることで
フロントエンドとバックエンドをつないで、
ユーザー情報を確認してログインするといった流れ
を簡単に実装することができます。
つまずきその1:URL設定の壁
Djangoでは、画面ごとにURLをurls.py
で定義します。
http://localhost:8000/signup/
にアクセスされたら、
signup_view を呼び出す
といったルールを自分で書く必要があります。
これはユーザーの行動とプログラムをつなげる
大事な役割を担っています。
慣れるととても便利な仕組みですが、
単純なプログラムの学習と異なり、URL遷移という
Webアプリならではの考え方につまずきました。
しかし、慣れてくると
各画面ごとに設定するURLの遷移を、urls.py
をみればわかるので
いまでは、便利さを非常に感じています。
urls.py
については、別記事でも学習内容をまとめているので
URL制御がピンとこない方は、こちらもチェックしてください。
-
-
Djangoのurls.pyでのURLルーティング制御の仕組み
2025/9/12
つまずきその2:マイグレーションの仕組み
Djangoでは、モデル(Model)を書き換えたら、
必ずマイグレーションという作業でデータベースに反映させます。
いままで、DBの操作やテーブルの作成は
DBを扱うためのSQLで行うものだと考えていたので、
この流れを忘れて、はじめは毎度つまずいていました。
DjangoではDBのテーブルの作成を、python manage.py makemigrations
と migrate
の
2ステップで実施できます。
そのため、SQLを自前で作成することがなくて便利なのですが
慣れるまでは時間がかかりました。
この仕組みを理解するとDjangoでのModelの扱い方が
つかめるようになります。
つまずきその3:テンプレート構文の独特さ
Djangoのテンプレートの中では、{{ user.username }}
のように独自の書き方をします。
単純なHTMLしか学習していなかった私にとっては、
値の使い方や、記述方式がうまくつかめず、
エラーばかり出ると感じていました。
慣れてしまえば、非常に簡単なことで、
Pythonの変数をHTMLに埋め込むための書き方に過ぎません。
一度ルールを理解すれば、
バックエンドであるPythonで組み立てた値を
フロントエンドのHTMLに連携するための
非常にシンプルで使いやすい仕組みです。
第3章:Djangoの全体像とプロジェクト構造
フレームワークであるDjangoを使えば、
簡単にWebアプリが作れると言われても、
実際の仕組みや構造もイメージできていないと
作るに作れないですよね。
この章では、Djangoでアプリを作るときに
押さえておきたい全体像とプロジェクトの構造
をざっくり紹介します。
イメージをつかむことができれば、
実装もずっと理解しやすくなります。
Djangoの動きの基本:MTVモデル
Djangoは MTVモデル(Model・Template・View)
を採用しています。
Djangoの特徴でも軽く紹介しましたが、
これは「MVCモデル」と呼ばれる設計パターンの仲間で、
アプリを3つの役割に分けて考える方法です。
- Model(モデル):
- データベースの設計図
- ユーザー情報や記事、商品データなどを定義
- Template(テンプレート):
- 画面の見た目
- HTMLに近い形で、
ユーザーに情報を表示する部分
- View(ビュー):
- リクエストを受け取り、必要な処理を行う
- どのテンプレートを返すか決める役割も担う
簡単に言ってしまえば、
Modelでデータを管理 → Viewが処理 → Templateで見せる
この3つが組み合わさってWebアプリが動く仕組みです。
ユーザーがアクセスするとどう動くのか
たとえば、ログイン画面にアクセスした場合の流れをみると
- ユーザーが
/login/
にアクセスする urls.py
がそのURLを探し、
対応するViewを呼び出す- ViewがModelに問い合わせてデータ
(ユーザー情報)を確認 - 処理結果に応じて、ログイン成功なら「mypage.html」、
失敗なら「login.html」をTemplateとして返す
一見複雑に見えたり、感じてしまうのは仕方がないです。
しかし、Djangoが用意しているルール通りに組み合わせれば
自然に流れが作れるのが強みです。
プロジェクトとアプリの関係
DjangoでWebアプリを作る際に押さえておきたい構造として、
「プロジェクト」と「アプリ」という考え方があります。
- プロジェクト:
Webアプリサービス全体 - アプリ:
機能ごとの小さな部品
(ユーザー管理、ブログ記事管理、チャット機能など)
イメージとしては、
ショッピングモール(プロジェクト)の中に、
服屋・本屋・カフェ(アプリ)が入っている感じです。
プロジェクトは「モール全体の管理」をし、
各アプリは「自分の店の役割」を果たします。
Djangoの仕組みを一度に理解しようとすると難しく感じますが、
プロジェクト全体 → アプリごとの役割 → MTVモデルの流れ
という順番で整理すれば、すっきり理解できます。
実際に、Djangoでプロジェクトを作ると、
以下のような構造ができます。
mysite/ ← 1.
├── manage.py ← 2.
├── mysite/ ← 3.
│ ├── __init__.py ← 4.
│ ├── settings.py ← 5.
│ ├── urls.py ← 6.
│ ├── asgi.py ← 7.
│ └── wsgi.py ← 8.
└── users/ ← 9.
├── __init__.py ← 10.
├── admin.py ← 11.
├── apps.py ← 12.
├── models.py ← 13.
├── views.py ← 14.
├── urls.py ← 15.
├── tests.py ← 16.
└── templates/ ← 17.
- プロジェクトのルートディレクトリ
- Djangoプロジェクト全体の「入れ物」
- 名前は任意だが、
慣習的にmysite/
などが多い
- manage.py
- Djangoを操作するためのコマンドライン
- サーバー起動(
runserver
) - DB操作(
migrate
) - アプリ作成(
startapp
)など
- サーバー起動(
- Djangoを操作するためのコマンドライン
- mysite/(設定フォルダ)
- プロジェクト全体の設定ファイルをまとめるフォルダ
- __init__.py(プロジェクト設定フォルダ内)
- Pythonパッケージであることを示す
- 基本的に空ファイル
- settings.py
- プロジェクト全体の動作ルールを記述
- データベースの種類
- タイムゾーン
- 利用するアプリ(INSTALLED_APPS)など
- プロジェクト全体の動作ルールを記述
- urls.py(プロジェクト側)
- 全体のURLルーティングを定義
- 各アプリの
urls.py
を
ここに取り込み利用する
- asgi.py
- 非同期サーバーでDjangoを動かすための
エントリポイント - チャットやリアルタイム通信で利用
- 非同期サーバーでDjangoを動かすための
- wsgi.py
- 本番環境(ApacheやNginxなど)でDjangoを動かすための
エントリポイント
- 本番環境(ApacheやNginxなど)でDjangoを動かすための
- users/(アプリケーションフォルダ)
python manage.py startapp users
で作成- ユーザー管理やブログなど、
機能単位のまとまり - 各機能ごとに作成
- init.py(アプリ内)
- Pythonパッケージであることを示す、
通常は空
- Pythonパッケージであることを示す、
- admin.py
- Djangoの管理画面に
モデルを登録するファイル - 記述することで、
/admin/
から
データをGUIで操作可能
- Djangoの管理画面に
- apps.py
- アプリ自体の設定を記述
- Djangoがアプリを認識する際に利用
- models.py
- データベースの設計図
- アプリごとに利用するテーブルが定義
- マイグレーションでDBに反映
- views.py
- リクエストを処理してレスポンスを返す
- ユーザーが各URLにアクセスしたときの
処理をここに記述
- urls.py(アプリ側)
- アプリ内で利用するURLルーティング
- プロジェクト側
urls.py
に取り込んで利用
- tests.py
- アプリの動作確認を自動化するための
テストコード - 学習初期は触らなくても問題ない
- アプリの動作確認を自動化するための
- templates/
- HTMLテンプレートを置くフォルダ
管理画面(Admin)の存在
Djangoを扱うなら、有効活用したいのが
管理画面(Django Admin) です。
python manage.py createsuperuser
で管理者を作り、/admin/
にアクセスすると、自動的に管理画面が生成されます。
ここでは、ユーザーの追加・編集・削除などを
Web画面から行えるため、
コードを書かずにデータを確認できる便利なツールです。
IT未経験の場合、まずは動かすことが大切です。
そんな中でアプリが動いている実感を得やすい部分でもあります。
第4章:DjangoでWebアプリを作るステップ
Djangoの全体像や構造を学んぶことも大切ですが、
ポートフォリオにするには実際に作成することが大切です。
ここからは、実際にDjangoで
Webアプリを作るときの流れを紹介します。
小さな機能から少しずつ実装することで、
未経験でも必ずアプリを動かせるようになります。
Step1:モデル(Model)を定義
Djangoでは、まずどんなデータを扱うのかを決めるのが楽です。
たとえばユーザーを管理するなら、
- 名前
- メールアドレス
- パスワード
といった項目が必要です。
これを models.py
にクラスとして定義します。
from django.db import models
class User(models.Model):
username = models.CharField(max_length=100)
email = models.EmailField(unique=True)
password = models.CharField(max_length=200)
このように書くだけで、
Djangoが自動的にデータベースの設計を作ってくれるのです。
SQLを直接書かなくてもよいため、
開発のためにSQLの学習コストが減るのは
未経験から始めた方には助かる利点の一つです。
Step2:マイグレーションでデータベースに反映
モデルに定義をしただけで、
実際のデータベースが作られるわけではありません。
Webアプリとして、データベースを利用するためには、
実際のデータベースに反映させる必要があります。
この反映のための操作が「マイグレーション」です。
python manage.py makemigrations
python manage.py migrate
この2つのコマンドをPythonの実行環境で発行します。
成功すると、データベースにモデルで定義した
「User」テーブルが作られます。
最初は、なぜ2つのコマンドが必要なのかと
感じるかもしれません。
これらは、DBのための設計書を作る(makemigrations)、
実際にテーブルを作成する(migrate)
という流れをとるためです。
Step3:ビュー(View)で処理を記述
次は処理を担当する views.py
です。
ここが、バックエンド側の
基本的な処理操作を記述する箇所になります。
たとえば「ユーザー登録画面を表示する」
処理は次のように書けます。
from django.shortcuts import render
def signup_view(request):
return render(request, 'signup.html')
ここでは単にHTMLを返しているだけですが、
フォームから送られたデータを処理する仕組みも
ここに書いていきます。
views.py
の基礎を押さえることで、
Webアプリのバックエンド側の処理の多くを担うことができます。
views.pyについて、学習内容を別記事にしていますので、
こちらも参考にしてください。
-
-
Djangoのviews.pyでリクエストとレスポンスの制御
2025/9/12
Step4:URL設定でルーティング
実際に画面の裏側の処理を記述したら、
どのURLにアクセスしたら、
どのViewを呼ぶのかを設定する必要があります。
それを urls.py
に記述します。
from django.urls import path
from . import views
urlpatterns = [
path('signup/', views.signup_view, name='signup'),
]
こうすることで、http://サーバー名/signup/
にアクセスすると、
signup.html
が表示されるようになります。
これが URLルーティング と呼ばれる仕組みです。
Step5:テンプレートでHTMLを表示
ユーザーに見せる画面は、templates/
フォルダにHTMLファイルを置きます。
たとえば signup.html
はこんな感じです。
<!DOCTYPE html>
<html>
<head><title>ユーザー登録</title></head>
<body>
<h1>サインアップ</h1>
<form method="post">
{% csrf_token %}
<input type="text" name="username" placeholder="ユーザー名"><br>
<input type="email" name="email" placeholder="メールアドレス"><br>
<input type="password" name="password" placeholder="パスワード"><br>
<button type="submit">登録</button>
</form>
</body>
</html>
Djangoでは {% csrf_token %}
のような
独自タグを使うのが特徴です。
これはセキュリティ対策で必須のものです。
Step6:フォームでユーザー入力を受け取る
画面で受け取ったユーザーからの
入力データを処理するには、request.POST
を利用します。
from django.http import HttpResponse
def signup_view(request):
if request.method == 'POST':
username = request.POST['username']
return HttpResponse(f"ようこそ、{username}さん!")
return render(request, 'signup.html')
このように書けば、フォームに入力した名前を使って
メッセージを返すことができます。
最初の一歩は単純ですが、
これで「ユーザーとアプリがやり取りできた」
ということになります。
Step7:ユーザー認証の仕組みを導入
Djangoの強みの一つとして、
ユーザー登録やログインをサポートする機能が
標準で備わっています。
たとえば、以下のようなフォームを使うことで、
最小限のコードでログイン機能を作ることができます。
from django.contrib.auth.forms import UserCreationForm
ただし注意点もあります。
カスタムユーザーモデルを作る場合は、set_password()
を使わないとログインできない
といった「初心者がよくハマる落とし穴」も存在します。
ここを知っているかどうかで学習のストレスが大きく変わります。
開発サーバーで動作確認する
すべてのステップを経由して、
Model、View、Templateの準備が整ったら、
以下のコマンドでアプリを動かします。
python manage.py runserver
ブラウザで http://サーバー名
にアクセスすれば、
今まで書いてきたコードが実際に動いていることを確認できます。
ここで、画面が出たり、登録できたという体験を得られると、
モチベーションは一気に高まるのではないでしょうか。
ここまで来てしまえば、
あとは各画面を同様にすこしずつ実装するのみです。
ある程度機能を実装したら、ポートフォリオとして利用できます。
第6章:まとめ
この記事では、Djangoとは何か、その仕組みと開発の流れを
Python未経験である私の学習した内容から紹介していきました。
- Djangoは「MTVモデル」で動く
Pythonフレームワーク - プロジェクトとアプリを
分けて整理する仕組みがある - ユーザー登録やログインといった
基本機能を短時間で実装できる - ポートフォリオ作成や在宅ワークにも活かせる
最初はファイル構成や新しい用語に戸惑うかもしれません。
未経験から成果を出すには、
小さく動くアプリを作る経験を積むことが一番の近道です。
完璧に理解するよりも、まず動かすことを意識すれば、
自然とDjangoの全体像が身についていきます。
まだまだ、私自身もDjangoについて勉強しなくていけないですが
ただの知識から業務で使えるレベルへ進めるためにも、
とにかく動かして実装していこうと思います。
また、ポートフォリオとしてのソースができたら、
それも記事にしていこうと思います。
▶次回の記事はこちら:
【現在、準備中】