19
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonのリリースサイクルが早くなる!

Last updated at Posted at 2019-12-15

##はじめに

Pythonの生みの親であるGuido van Rossum さんが6年半務めたDropbox社を辞めるというニュースが入ってきたのがちょうど一ヶ月半くらい前。転職するわけではなくこのまま引退されるという。御年63歳。長きに渡りお疲れさまでした。既に一年以上前にPythonのBDFL(Benevolent Dictator For Life: 優しい終身の独裁者)の座を降りていて、Pythonの開発に大きな影響はないですが、ちょっと寂しですね。

彼がPythonを作り始めたのが 1989年12月で、ちょうど30年前になります。クリスマス休暇で趣味のプログラミングをしたかった彼はインタープリタ言語を作ろうと思いたち、それが今のPythonとなったわけですね。

1991年に0.9.0として出されたPythonもバージョンを重ね、2000年に2.0、2008年に3.0が出て、Python2とPython3は並行して開発が進みながら、現時点で2.7.17と3.8.0まで来ています。Python2は今年一杯でサポートが終了するので今後はPython3のみがメンテナンス・バージョンアップされていくことになります。ところが、このリリースのサイクルが変わる!という話が出てきたのでそれについてちょっと書いてみます。

元ネタはPEP 602 -- Annual Release Cycle for PythonというPEP(Python Enhancement Proposal)です。

##これまでのリリースサイクル

リリース間隔が安定してきた3.1.0以降を書き出してみるとこうなります。

Version Release Date
3.1 2009-06-27
3.2 2011-02-20
3.3 2012-09-29
3.4 2014-03-16
3.5 2015-09-13
3.6 2016-12-23
3.7 2018-06-27
3.8 2019-10-14

多少前後しているところはありますが、パッと見るとだいたい1年半くらいの周期でリリースされているように見えます。そして、あるバージョンの開発はその前のバージョンのβが出た時に始まっているので、全体として開発開始から2年近くかかっている。これはちょっと長すぎる、ということで新しいリリースサイクルの提案が出されて採用されています。

##新しいリリースサイクル

まず、今回のリリースサイクルの目玉は「毎年Pythonの新しいバージョンを出す」です。これまで1年半周期だったものを1年周期にして毎年10月に新しいバージョンを出す。そのために、こんな感じのスケジューリングになっています。

フェーズ 期間
開発 5ヶ月(前のβ・RC期間とオーバーラップ)
α版 7ヶ月
β版 3ヶ月
RC版 2ヶ月

開発は前のバージョンと重なっていて、α+β+RCの期間がちょうど12ヶ月なので毎年出せるというわけです。つまりは、前のバージョンの正式版が出たらすぐに次のバージョンのαが出る! これまでは前のリリースからαまで半年以上あったので、これ結構すごいことですね。

わかりにくいかもしれないので図にするとこうなります。
スクリーンショット 2019-12-15 9.22.37.png

そして、リリース後のサポート期間も明確に決められてこのようになります。

  • リリースから18ヶ月(1年半)はバグ修正を行い2ヶ月に一度のペースでマイナーバージョンアップを行う。Windows、Macに対するバイナリリリース有り。
  • その先、42ヶ月(3年半)は必要に応じてセキュリティフィックスを行う。ソースコードリリースのみ。
  • リリースから5年でサポート終了。

##Python3.9はこうなる

Python 3.9のスケジュールは PEP-596 で既に決まっていてこのようになっています。

3.9 開発開始: 2019-06-04 (完了)
3.9.0 alpha 1: 2019-11-19 (完了)
3.9.0 alpha 2: 2019-12-16
3.9.0 alpha 3: 2020-01-14
3.9.0 alpha 4: 2020-02-17
3.9.0 alpha 5: 2020-03-16
3.9.0 alpha 6: 2020-04-13
3.9.0 beta 1: 2020-05-18 (これ以降は新機能の追加なし)
3.9.0 beta 2: 2020-06-08
3.9.0 beta 3: 2020-06-29
3.9.0 beta 4: 2020-07-20
3.9.0 candidate 1: 2020-08-10
3.9.0 candidate 2: 2020-09-14
3.9.0 final: 2020-10-05

見ての通り、最初のα版は既にもう出ています。そして、これまでα版は4つまでしかなかったのが6つになっていて開発期間の短縮をそれで補っているようです。アルファ版としてリリースして使ってもらいながら徐々に機能追加する、いわばアジャイル的なアプローチになったのも良い変化ではないかと思います。

##まとめ

Python 3.9から導入される新しいリリースサイクルに関してまとめてみました。サイクルが短くなり、新たな機能がタイムリーに使えるようになるので良かったなと思います。

19
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?