カテゴリ: Django 更新日: 2026/01/31

Djangoマイグレーションの基本コマンド完全解説|makemigrationsとmigrateでDB設計を理解しよう

Djangoマイグレーションの基本コマンド|makemigrations と migrate
Djangoマイグレーションの基本コマンド|makemigrations と migrate

先生と生徒の会話形式で理解しよう

生徒

「Djangoでアプリを作り始めたんですが、マイグレーションって何をしているのか全然わかりません…」

先生

「マイグレーションは、Pythonで書いたモデルの設計を、データベースに反映させるための仕組みです。家の設計図を元に、実際の家を建てるようなイメージですね。」

生徒

「makemigrations と migrate っていうコマンドは、何が違うんですか?」

先生

「それぞれ役割が違います。順番に、とてもゆっくり説明していきましょう。」

1. Djangoマイグレーションとは何か?

1. Djangoマイグレーションとは何か?
1. Djangoマイグレーションとは何か?

Djangoマイグレーションとは、Djangoで作成したモデルの内容を、データベースに反映するための仕組みです。データベースとは、たくさんのデータを表の形で保存する場所のことです。Excelの表を思い浮かべるとイメージしやすいです。

Djangoでは、Pythonのコードで「どんな表を作るか」を書きます。その設計図を、実際のデータベースに変換する作業がマイグレーションです。これにより、難しいSQLを書かなくても、データベース設計ができます。

2. makemigrationsの役割を超やさしく解説

2. makemigrationsの役割を超やさしく解説
2. makemigrationsの役割を超やさしく解説

makemigrationsは、「設計図を作るコマンド」です。models.pyに書いた内容を読み取り、「こういう変更をしますよ」という記録ファイルを作成します。この時点では、データベースはまだ変わりません。

たとえるなら、ノートに家の間取り図を書く作業です。実際に工事は始まっていません。


python manage.py makemigrations

このコマンドを実行すると、migrationsフォルダの中にファイルが作られます。このファイルが、変更内容の履歴になります。

3. migrateの役割を超やさしく解説

3. migrateの役割を超やさしく解説
3. migrateの役割を超やさしく解説

migrateは、「設計図を元に工事をするコマンド」です。makemigrationsで作られたファイルを使って、実際のデータベースにテーブルを作成します。

設計図だけでは家は完成しません。migrateを実行して、はじめてデータベースに反映されます。


python manage.py migrate

このコマンドを実行すると、データベースに表が作成され、アプリが正しく動くようになります。

4. モデル変更とマイグレーションの流れ

4. モデル変更とマイグレーションの流れ
4. モデル変更とマイグレーションの流れ

Djangoでは、モデルを変更したら、必ずマイグレーションを行います。例えば、ユーザーの年齢を保存したい場合、models.pyを修正します。


from django.db import models

class User(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()

この変更をデータベースに反映するには、makemigrations → migrate の順番で実行します。この流れを忘れないことが大切です。

5. マイグレーションファイルの中身を見てみよう

5. マイグレーションファイルの中身を見てみよう
5. マイグレーションファイルの中身を見てみよう

makemigrationsをすると、自動でPythonファイルが作られます。この中には、「どんな表を作るか」が細かく書かれています。初心者のうちは、無理に理解しなくても大丈夫です。


class Migration(migrations.Migration):

    operations = [
        migrations.CreateModel(
            name='User',
            fields=[
                ('id', models.BigAutoField(primary_key=True)),
                ('name', models.CharField(max_length=100)),
                ('age', models.IntegerField()),
            ],
        ),
    ]

このファイルがあることで、Djangoは変更履歴を正確に管理できます。

6. なぜマイグレーションが必要なのか?

6. なぜマイグレーションが必要なのか?
6. なぜマイグレーションが必要なのか?

マイグレーションがあることで、データベースの変更履歴を安全に管理できます。間違えても、過去の状態に戻すことができるのが大きな特徴です。

また、チーム開発でも同じ設計を共有でき、環境が違っても同じデータベース構造を作れます。これがDjangoが多く使われている理由の一つです。

7. 初心者がつまずきやすいポイント

7. 初心者がつまずきやすいポイント
7. 初心者がつまずきやすいポイント

よくある失敗は、makemigrationsだけ実行して、migrateを忘れることです。この場合、データベースは変更されません。

また、モデルを変更したのにマイグレーションをしないと、エラーが発生します。「モデルを変えたら、必ずマイグレーション」と覚えておくと安心です。

8. DjangoマイグレーションとDB設計の関係

8. DjangoマイグレーションとDB設計の関係
8. DjangoマイグレーションとDB設計の関係

Djangoマイグレーションは、データベース設計そのものです。モデルを考えることは、「どんなデータを保存したいか」を考えることになります。

難しい専門知識がなくても、Pythonコードを書く感覚でデータベース設計ができる点が、Djangoの大きな魅力です。makemigrationsとmigrateを正しく使うことで、安全で分かりやすいDB設計ができます。

カテゴリの一覧へ
新着記事
New1
Python
Pythonの文字列操作完全ガイド!結合・分割・検索の基本をやさしく解説
New2
Python
Pythonで多重継承を使うときの注意点と活用例!初心者でもわかるOOP設計
New3
Python
Pythonのセットに複数の要素をまとめて追加する方法(update()の使い方)を初心者向けに解説!
New4
Python
Pythonでセットの要素数を調べる方法(len()の使い方)を初心者向けに解説!
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.2
Java&Spring記事人気No2
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.3
Java&Spring記事人気No3
Flask
Flaskで非同期処理を成功させるベストプラクティス集|初心者でも失敗しない考え方
No.4
Java&Spring記事人気No4
Django
Djangoモデル入門|初心者が最初に知るべきORMの基本操作
No.5
Java&Spring記事人気No5
Flask
FlaskアプリのSECRET_KEYの設定方法を完全ガイド!初心者でもわかるセキュリティ対策
No.6
Java&Spring記事人気No6
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.7
Java&Spring記事人気No7
Python
Pythonのリストを分割する方法を完全ガイド!初心者でもわかるスライス・split・itertoolsの使い方
No.8
Java&Spring記事人気No8
Flask
Flaskのログをファイルに保存する方法!初心者でもわかる設定手順を徹底解説