1. ksato9700

    No comment

    ksato9700
Changes in body
Source | HTML | Preview
@@ -1,73 +1,73 @@
##はじめに
Pythonの生みの親である[Guido van Rossum](https://en.wikipedia.org/wiki/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](https://www.python.org/dev/peps/pep-0602/)という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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30342/175cdd19-0b92-1526-02c6-c5c33d92b8bb.png)
そして、リリース後のサポート期間も明確に決められてこのようになります。
* リリースから18ヶ月(1年半)はバグ修正を行い2ヶ月に一度のペースでマイナーバージョンアップを行う。Windows、Macに対するバイナリリリース有り。
* その先、42ヶ月(3年半)は必要に応じてセキュリティフィックスを行う。ソースコードリリースのみ。
* リリースから5年でサポート終了。
##Python3.9はこうなる
-Python 3.9のスケジュールは [PEP-569](https://www.python.org/dev/peps/pep-0596/) で既に決まっていてこのようになっています。
+Python 3.9のスケジュールは [PEP-596](https://www.python.org/dev/peps/pep-0596/) で既に決まっていてこのようになっています。
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から導入される新しいリリースサイクルに関してまとめてみました。サイクルが短くなり、新たな機能がタイムリーに使えるようになるので良かったなと思います。