1. ksato9700

    Posted

    ksato9700
Changes in title
+Pythonのリリースサイクルが早くなる!
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,75 @@
+##はじめに
+
+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/) で既に決まっていてこのようになっています。
+
+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から導入される新しいリリースサイクルに関してまとめてみました。サイクルが短くなり、新たな機能がタイムリーに使えるようになるので良かったなと思います。
+
+