Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What is going on with this article?
@ksato9700

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

More than 1 year has passed since last update.

はじめに

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

8
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
caddi
製造業の受発注プラットフォーム「CADDi」を提供しています。 モノづくりに携わるすべての人が、本来持っている力を最大限に発揮できる社会を実現する。産業の常識を変える「新たな仕組み」をつくります。 「CADDi」は金属加工品のCAD・設計図の解析から複雑な物流を表現するUIまで幅広い開発をしており、常に開発環境に最新の技術をとり入れて、より良いプロダクトを作るように心がけております。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
8
Help us understand the problem. What is going on with this article?