はじめに

記事をご覧くださり、ありがとうございます!

はじめまして。
26卒新入社員の木村遥菜です。
大学時代は文系の学問を専攻していましたが、エンジニアの道を志し、開発エンジニア職としてKDDIアイレットに入社しました。

今回は、研修で学んだDjangoによるPythonのWebアプリ開発、特にデータベース操作を、IT初学者で入社した私なりの理解からご紹介します。
本ブログの目的は、Djangoは開発者にとって最大の味方であることを皆さんに知ってもらうことです。そこで、Djangoフレームワーク開発の基本的な流れを述べ、Djangoがある場合とない場合とで、データベース操作の利便性がどのように異なるのかを、具体例を提示しながら説明していきます!

DjangoによるPython開発の流れ

いきなり「DjangoフレームワークによるWebアプリ開発」と言われても、何のことかさっぱりな方がほとんどだと思います。

ですが、Django開発において、生成されたフレームワークを全て理解する必要はありません。全体像を掴むことが大切なのです。以下の流れと作業ファイルを覚えれば、Pythonを使用した基礎的な開発ができるようになります!


図では①〜⑧の流れとなりますが、ざっくりまとめると、次の4ステップで開発が進みます。

  1. リクエストの受信と振り分け(図①〜③)
    ユーザーからのページ表示要求を、プロジェクト(projects/urls.py)とアプリ(projects/app/urls.py)のルーティングが受け取って整理する。
  2. ビューによるデータ処理(View, Model)(図④)
    全体の制御を担うビュー(=views.py)が、フォームのチェック(forms.py)やデータベースの処理(=models.py)を行う。
  3. 画面の生成(Template)(図⑤)
    処理したデータをHTMLテンプレート(templates/〇〇.html)へ引き渡し、ユーザーに見せる画面を作成する。
  4. レスポンスの返却(図⑥〜⑧)
    完成した画面データをルーティング経由でユーザーのブラウザに送り、画面を表示する。

Djangoがない場合、その他の環境構築は自分で行わなければなりません。ですが、DjangoはWebアプリ開発に必要な基本機能の多くを最初から用意してくれます。
そのおかげで、開発者の皆さんは本腰の開発に集中することができるのです!

Djangoなしでデータベースを操作する2つの難点

MySQLだけでDBを操作すると…

ここからいよいよDjangoによるデータベース操作の説明に入ります!
ですがその前に、Djangoのありがたみを知るために、Djangoがない世界のデータベース操作を想像してみましょう。

Djangoがない場合、データベースの専門言語であるSQLを完璧にマスターし、ターミナル上でSQL文を手書きして実行する必要があります。
ここでは、Dockerコンテナを使用したMySQLの操作を例に、データベース操作をターミナル上で実行します。

  1. docker exec -it mysql-container bash: ターミナルでDockerコンテナの中に入る。
  2. mysql -u root -p: MySQL(データベース)にログインする

ここでようやく、データベースの操作が始まります。ですが、一般的に、データに手を加える操作を行う前に、以下のSQLによる操作が 必要となります。

  3.操作データベースとテーブルの選択
    SHOW DATABASES;:データベースの一覧を見る
    USE sample_database;:使用するデータベースを選択する
    SHOW TABLES;:テーブルの一覧を見る

ここまでの操作を行い、ようやくデータの処理を実行することができます。この操作を、データベースに手を加えるごとに毎回行わなければなりません。データベースの操作に至るまで、思いのほか長い道のりではないでしょうか…。
この後、データの更新、追加、削除の操作をSQL文で実行していくのですが、Djangoのない場合はSQL文のミスが起こりやすく、一つの誤りがシステムに致命傷を与えます
どういうことなのか、順番に見ていきましょう。

難点①:SQL文は文法ミスが起こりやすい

SQL文は思った以上に複雑で打ち込む際に苦労する存在です。
例えば、todo_app_taskテーブルにtaskデータを追加する操作を実行してみましょう。

INSERT INTO todo_app_task (task_title, task_detail, limit_date, priority, is_completed, created_at, user_id) VALUES ('英語の宿題', '単語帳をp.20まで進める', '2026-06-20', 'HIGH', 0, '2026-06-15 12:00:00', 5);

この場合、属性(列名)7つと、それに対応する値(データ)7つを、順番が完全に一致するように、長い1行の文章として手書きしなければなりません。
順番が1つでもズレたり、,'が1箇所抜けただけでエラーになります。黒い画面でこれを打ち込むのは、プロでも打ち間違いが発生するほど非効率な作業です。

難点②:一つのミスで、データが全て消える

例えば、データ削除を例に考えてみましょう。
DELETE のSQLには、対象を絞り込むために WHERE username = ‘kawaguti’ という条件をつける必要があります。もし、 WHERE を付け忘れたまま Enter キーを押してしまうとどうなるでしょうか。

-- 恐怖の誤操作:条件を忘れて実行
DELETE FROM todo_app_user;

これを実行した瞬間、テーブルに保存されていた何百万人ものユーザーデータが一瞬で削除されます
間違えたらデータがなくなるというプレッシャーのせいで、コマンドを1行打つたびに何回も確認せざるを得ず、作業効率が大幅に下がります。想像しただけでとても怖いですね…。

DjangoにDB操作を助けてもらおう!

DB操作の下準備と流れ

Djangoでは、Djangoフレームワークで用意されているmodels.pyに作成したいテーブル(表)と属性(列)を定義し、ターミナルでマイグレーションファイルを作成・実行するだけで、データを操作する下準備が完了します。SQL文ではいちいち使用するデータベースを決めたり、テーブルを参照するという手間がかかりますが、Djangoでは上記の下準備を一度行うだけで、次回以降はデータの操作に集中することができるのです。そのあとは、以下のコマンドをターミナルにて実行することで、すぐにデータベース操作に取りかかることができます。

  1. python manage.py shell
    データベースを直接操作できる環境を立ち上げる

  2. from todo_app import models
    操作したいテーブルの情報が含まれている models を読み込み、使える状態にします。
    ここでは、Djangoフレームワークのtodo_app/models.pyファイルの情報を読み込んでいます。

それでは、DjangoによるDB操作において、こうした非効率さがどのように改善されるのかを見ていきましょう。

恩恵①:簡潔な文法によるスペルミスの削減

先ほど事例に挙げた、todo_app_taskテーブルにtaskデータを追加する操作をDjangoのもとでターミナルを使い実行すると、以下のようになります。

models.Task.objects.create(
     task_title='ブログを書く',
      task_detail='Django研修の記事を執筆する',
      limit_date='2026-06-20',
      priority='HIGH',
      is_completed=False,
      created_at='2026-06-15 12:00:00',
      user_id=5
)

ご覧の通り、Pythonの感覚でデータを操作できてしまうのです。「列名=値」ですぐに追加したいデータ項目の対応づけができ、列名と値の順番を気にすることなく実装できます。そのため、SQL文と比較すると文法の誤りを劇的に減らすことができるのです。

恩恵②:致命傷を予防する仕組み

Djangoのない場合では致命傷となり得る削除操作ですが、Djangoでは文法の構成によって予防がなされています。

--  kawagutiというユーザーを一件指定して削除を実行する
models.User.objects.get(username='kawaguti').delete()

これにより、全データを消すときは、わざわざ models.User.objects.all().delete() all()を明示して書かない限り動かない仕組みとなっているため、ミスによるデータの全滅が防げます。
このように、Djangoでは全件削除のような危険な操作に対して、明示的なメソッド(all()など)を要求する文法設計であるため、対象を明示しやすく、操作の見通しがよくなる仕組みとなっています。もちろん、 Python文法によるDB操作でもコード上で誤った値を入力、実行すれば同様に致命傷となり得るため、慎重な操作は不可欠ですが、素のSQLを叩くよりもシステム開発者に多くの効率性と安心を届けてくれるのです。

したがって、Djangoは文法ミスの防止や後戻りのできない操作ミスを軽減する構成により、システム開発者に効率性と安心を届け、スムーズに開発しやすい環境を提供していると言えます。

おわりに

ここまで、Djangoフレームワークを使用したPython開発のデータベース操作に焦点を当てて私なりの理解からまとめました。

DjangoによるPython開発は、全体から見た仕組み同士の関係性を把握することや、フレームワークがどう開発者に寄与するのかなど、システム内部だけでなく外部に広がるつながりを意識することで、理解が深まったと実感しています。

一つずつできることを着実に増やし、開発エンジニアとしての配属に向けて、これからの研修や勉強も頑張って参ります!