Djangoアプリを並行開発する際のマイグレーション戦略

By Takayuki Shimizukawa

Elevator Pitch

Djangoアプリの開発中に起こる、マイグレーションの競合を避けるにはどうすればよいでしょうか?複数のブランチで同じテーブルのカラムを追加して使いたい場合や、DBスキーマの変更が競合する場合は、ブランチのマージ時に競合してしまい、解決に苦労することがあります。このトークでは、実際の開発現場で発生したいくつかの事例を元に、トラブルを避けるためのブランチ運用とリリース戦略について紹介します。

Description

DjangoなどのWebフレームワークには、DBのスキーマを変更するマイグレーション機能があります。一般的に、プログラムを実装するときはリポジトリでブランチを作りそれぞれのブランチで実装作業を進めます。Djangoアプリの開発でも同様ですが、各ブランチでDBスキーマを変更する場合には注意が必要です。例えば、複数のブランチで同じテーブルのカラムを追加して使いたい場合や、DBスキーマの変更が競合する場合は、ブランチのマージ時に競合してしまいます。多くの機能を並行開発したり、マージするまでの期間が長い場合には、このような競合が増えてしまいます。

このトークでは、Djangoのデータベースマイグレーションの仕組みから、実際の開発現場で発生したトラブルとその解決方法について紹介します。

アジェンダ

  • Djangoのデータベースマイグレーション機能の紹介
  • DBスキーマ変更が競合するシンプルな例
  • 実際の開発現場で発生したトラブル事例
  • DBスキーマ変更の先行リリース
  • 新旧DBスキーマの並行運用