PythonのWebフレームワークであるDjangoが、2028年1月から年に1回のリリースへ切り替わります。次の大きな版は7.0ではなく、2028.0という年を表す番号になります。
あわせて2026年9月22日には、Djangoの運営ルールを定めたDEP 19が正式に承認されました。この2つは、Djangoの開発の進め方を数年ぶりに大きく変えるものです。
Djangoを学んでいる途中の方は、版番号が変わると聞いて少しどきっとしたかもしれません。結論から言うと、学習中の人が今すぐ何かを変える必要はありません。
今回は、何が決まったのかと、なぜそう決めたのかを順番に見ていきます。
まずは何が決まったのかを整理しよう¶
2つの決定が重なっているので、最初に全体を表にまとめます。DEPは、Djangoの仕様や運営の方針を文書にまとめた提案書です。
| 決定 | 中身 | いつから |
|---|---|---|
| DEP 20 | 年1回のリリース、年を表す版番号、どの版も3年サポート | 2028年1月の2028.0から |
| DEP 19 | 運営を担う委員会の役割や、委員になれる条件を整理 | 2026年9月22日に承認 |
PythonのPEPと同じような位置づけの文書だと考えるとわかりやすいです。
PEPについては、こちらで紹介しています。【関連記事】PEPとは?
Djangoそのものがまだよくわからない方は、先にこちらを読んでおくと話がつながります。【関連記事】PythonのDjangoとは?
Djangoは年に1回、1月にリリースされる¶
今のDjangoは、DEP 4で決められた約8か月ごとのリリースで動いています。DEP 20はこれを置き換えて、新機能の入った版を年に1回だけ出すことにしました。
新しい版は、毎年1月の第2週ごろに公開されます。その前には、次のような準備期間が設けられます。
| 時期 | 出るもの | 意味 |
|---|---|---|
| 10月上旬〜中旬 | アルファ版 | Python本体の新バージョンが出た後に公開。新機能の受け付けはここで締め切り |
| 11月上旬〜中旬 | ベータ版 | 不具合を洗い出す段階 |
| 12月上旬〜中旬 | リリース候補版 | ほぼ完成した状態での最終確認 |
| 翌年1月 | 正式版 | その年の番号を付けて公開 |
ここで面白いのは、アルファ版がPythonの新バージョンのすぐ後に置かれている点です。毎年10月に出るPythonの新版に、Djangoが足並みをそろえる形になっています。
バグ修正やセキュリティ修正の版は、これまでどおり毎月初めに出ます。深刻な脆弱性が見つかったときは、予定外の修正版が出ることもあります。
版番号は7.0ではなく2028.0に¶
もう1つの大きな変化が、版番号の付け方です。DEP 20では、年.通し番号という形のカレンダーバージョニングを採用しました。
カレンダーバージョニングは、CalVerとも呼ばれます。版番号を見ればいつ出た版なのかがすぐわかる、という考え方です。
具体例を表にまとめます。
| 版番号 | 意味 |
|---|---|
| 2028.0 | 2028年1月に出る新機能の版 |
| 2028.1 | 2028.0の後の、最初の修正版 |
| 2028.24 | 2028系の24回目の修正版 |
| 2029.0 | 2029年1月に出る次の新機能の版 |
今のように6.1.2のような3つ目の数字は使いません。修正版が出るたびに、後ろの数字が1つずつ増えていきます。
本来の7.0はどうなるのか¶
これまでの予定では、2027年12月にDjango 7.0が出るはずでした。DEP 20では、この7.0の代わりに2028.0を出すとしています。
つまり、6.x系がDjango最後の従来型の番号になります。6.xまでは、今までどおりのスケジュールで進みます。
番号が大きく飛んでも大丈夫なのか¶
6.2の次がいきなり2028.0になると、プログラムが混乱しないか心配になりますよね。DEP 20には、Pythonのパッケージ管理ツールが使う比較のルールでも、正しく順番どおりに並ぶと書かれています。
実際にPythonで確かめてみましょう。版番号をただの文字列として並べた場合と、数値として並べた場合を比べます。
from packaging.version import Version
versions = ["6.2", "2028.0", "5.2.17", "2028.1", "6.1.2", "2029.0"]
# 文字列として並べると、先頭の文字で比べてしまう
print(sorted(versions))
# 版番号として並べると、数値の大きさで比べる
print(sorted(versions, key=Version))
手元のPython 3.11で実行した結果です。packagingは、pipの内部でも使われている版番号を扱うライブラリです。
['2028.0', '2028.1', '2029.0', '5.2.17', '6.1.2', '6.2']
['5.2.17', '6.1.2', '6.2', '2028.0', '2028.1', '2029.0']
文字列のまま並べると、2028.0が5.2.17より前に来てしまいます。版番号として比べれば、6.2の次に2028.0がきちんと並びました。
私は10年ほどエンジニアとして開発に関わってきましたが、版番号を文字列のまま比べて、10.0を9.0より古いと判定してしまうバグを見たことがあります。版番号は文字列ではなく専用の道具で比べるのが鉄則です。
どの版も3年間サポートされる¶
これまでのDjangoには、長期サポート版、いわゆるLTSと、そうでない版の2種類がありました。LTS以外の版はサポート期間が短く、本番で使うならLTSを選ぶのが定番でした。
DEP 20では、この区別をなくします。すべての版が、これまでのLTSと同じ3年間のサポートを受けられるようになります。
3年間の中身は、次のように2段階に分かれています。
| 期間 | 呼び方 | 直してもらえるもの |
|---|---|---|
| 1年目 | 通常サポート | セキュリティ問題、データ消失、クラッシュ、新機能の大きな不具合、以前の版からの退行 |
| 2〜3年目 | 延長サポート | セキュリティ問題とデータ消失のみ |
厳密には、サポート期間は公開から35か月です。毎年12月に、その年の版が延長サポートへ移り、3年前の版がサポート終了を迎えます。
この仕組みだと、どの時点でもおおむね3つの版がサポートされている状態になります。どの版を選んでも、慌てて乗り換える必要がないのは嬉しいですね。
今あるLTSはどうなるのか¶
切り替えの時期に気になるのが、今使われているLTSの扱いです。DEP 20は、5.2 LTSと6.2 LTSは約束どおりのサポート期間をそのまま受けられると明記しています。
6.2 LTSは2027年4月に公開される予定の版です。2028.0以降の新しい版と並んでセキュリティ修正を受け続け、サポートは2030年4月まで続きます。
なぜ年1回にするのか¶
DEP 20は、いちばんの理由をPythonとの足並みだと説明しています。Python本体は、3.9から毎年10月に新バージョンを出す年1回のリズムになっています。
Pythonのバージョンの一生については、昨日の記事でも詳しく取り上げました。【関連記事】Python 3.15の正式版は10月9日に延期、3.10はサポート終了へ
Djangoの8か月ごとの周期は、このPythonの1年周期とうまく噛み合っていませんでした。年1回にそろえることで、どのDjangoがどのPythonに対応するのかが読みやすくなります。
DEP 20によると、各版は公開時点で3つのPythonバージョンに対応します。さらに通常サポート中の版は、その年の10月に出たPythonの新バージョンにも修正版で対応します。
もう1つの理由が、LTSとLTSの間の空白をなくすことです。すべての版を3年サポートにすれば、どの版を選んでも同じ安心感が得られます。
機能の廃止はどう進むのか¶
新しい仕組みでも、機能をいきなり消すことはありません。ある版で廃止予定になった機能は、その版と次の版で警告を出し、さらに次の版で取り除かれます。
どの版も3年サポートされるので、少なくとも2つの版の間に対応する時間があります。急に動かなくなる心配は、これまでと同じく小さく抑えられています。
9月22日に承認された運営ルールDEP 19¶
もう1つのニュースが、運営ルールを定めたDEP 19の承認です。Djangoの公式ブログによると、9月22日に運営委員会とDSFの理事会がそろって承認しました。
DSFはDjango Software Foundationの略で、Djangoを支える非営利団体です。運営委員会はSteering Councilと呼ばれ、技術的な方針について最終的な判断を下す役割を担います。
DEP 19では、運営委員会を5人で構成すると定めています。委員になれる条件も整理され、DSFの個人会員であること、所属する会社などを公開していることなどが求められます。
さらに、コミュニティをまとめる力やDjangoを教える経験といった資質の一覧から、3つ以上を満たすことが条件になりました。公式ブログでは、自分にも資格があると気づく人を増やし、立候補しやすくする狙いが説明されています。
学習者の生活がすぐに変わる話ではありません。ただ、大きなオープンソースがどう運営されているのかを知るよい題材になります。
学習者と実務の人がやっておきたいこと¶
最後に、立場ごとにやっておきたいことを整理します。年1回リリースが始まるのは2028年1月なので、今すぐ動く必要はほとんどありません。
| 立場 | やっておきたいこと |
|---|---|
| これからDjangoを学ぶ人 | 今の最新版で学んでよい。基本の考え方は版番号が変わっても同じ |
| Djangoで趣味のアプリを作っている人 | 6.x系のまま進めてよい。2028年以降に新しい番号の版へ上げる |
| 本番でLTSを使っている人 | 5.2 LTSは予定どおりのサポートが続く。6.2 LTSのサポートは2030年4月まで |
| ライブラリを作っている人 | 版番号の比較を文字列でしていないか確認する |
Djangoと同じPythonのWebフレームワークでも、FastAPIやFlaskは仕組みも運営体制も異なります。比べてみると、Djangoの今回の決定の特徴が見えてきます。
軽量なFastAPIについては、こちらで紹介しています。【関連記事】PythonのFastAPIとは?
以前、LTSではない版を本番に入れてしまい、サポート切れに追われて何度も更新を重ねたことがあります。どの版も3年サポートになるこの変更は、現場の担当者にとって本当にありがたいものです。
まとめ¶
Djangoは2028年1月から年1回のリリースになり、版番号は2028.0のように年を表す形に変わります。すべての版が3年間サポートされ、LTSとそれ以外という区別はなくなります。
9月22日には運営ルールのDEP 19も承認され、Djangoの開発体制は新しい形へ移りつつあります。学習中の方は、今の版で安心して学び続けてください。
次にDjangoの版番号を見かけたら、それが年を表しているのか、従来の番号なのかに注目してみてください。ニュースの見え方が少し変わるはずです。
ここまでお読みいただきありがとうございました。