連載目次

Pythonは現在、下記の2系統が、公式サポートする最新版としてリリースされている（参考：「Pythonの各バージョンの状況」。※執筆時点＝2019年6月27日）。

Python 3 （執筆時点の最新バージョンは「Python 3.7」）

（執筆時点の最新バージョンは「Python 3.7」） Python 2（執筆時点の最新バージョンは「Python 2.7」）

当然ながら、本「Deep Insider」ではより新しいPython 3を推奨しており、記事内容もPython 3が前提条件となっている。しかしながら、Python 2は広く使われていて、その人気はまだ根強い（過去にあった、ブラウザにおけるIE6問題に近いかもしれない）。例えば最近、筆者は2019年7月発売の、とある製品を予約注文しようとして、仕様を確認すると、サポートするPythonのバージョンが2.7となっており、がくぜんとしてしまった。……あと半年で終わるのに……と（詳細後述）。

Python 2系統のサポート状況

Python 2系統の最新バージョンであると同時に最終バージョンである「2.7」は、下記のように10年間も使い続けられてきた。

2010年7月、正式リリース

2014年4月、サポート期間を5年延長（サポート期間終了はもともと2015年だった）

2020年1月1日、サポート終了（つまり、約半年後にPython 2系統の終焉）

2014年にサポート期間が延長された理由は、主に下記の理由からだ。

Python 2系統と3系統には、互換性が低いという問題がある（一部の文法を廃止するなど、大胆に仕様を変更した）

Pythonの各種ライブラリは2系統で作成されているものが多く、そういったライブラリを使うためには2系統を使い続ける必要があった

他には、Pythonの入門書が2系統を基準に書かれているケースが多かったというのも遠因だろう

「いや、サポートが切れるだけでしょ。そんなにあおらなくても、これまでどおり2系統を使い続ければ問題ないじゃん」と考える人もいるだろう。しかし、そうは問屋が卸さない。というのも各種ライブラリも、「Python 2系統のサポート終了」を宣誓することが1つのムーブメントとなっているからだ。

各種ライブラリの「Python 2系統のサポート終了」宣誓

2015年以降、多くのライブラリは2系統と3系統の両方をサポートしてきた。しかし、互換性の問題もあり、両方をサポートし続けることは効率性の面でコストがかかっている。それだけでなく、結果的にはPython言語の発展も阻害していると一部エンジニアから懸念されていた。

その問題を解消するために、Python 3プロジェクトを持つもの同士が集まり、

2020年1月1日までに、Python 2.7のサポートを打ち切る

という共同宣誓を、「Sunsetting Python 2 support」（python3statement.org）というサイト上で公に発表している（図1）。

図1 python3statement.orgでの共同宣誓



この中には、Pythonでデータを扱うために必須のNumPyやpandas、Matplotlib、Jupyter Notebookから、BokehやPillowなどまである。さらには、ディープラーニング／機械学習のライブラリであるTensorFlow、scikit-learnなどなど、そうそうたる有名ライブラリまでも名を連ねているのだ。図2のようにその数も多い。

図2 「Python 2系統のサポート終了」宣言の参加ライブラリ



AI・機械学習を学んでいるDeep Insiderの読者にとっては、「もはやPython 3を使うしかない状況となっている」ことを、図2を見るとご理解いただけるだろう。

各種ライブラリのタイムライン

python3statement.orgの［Projects Timeline］セクションでは（図3）、一部Pythonライブラリの各バージョンが持つタイムライン（＝リリースから、サポート終了まで）がグラフ表示されており分かりやすい。気になる人はぜひサイトを訪れて参照してみてほしい。

図3 python3statement.orgの［Projects Timeline］セクション（AI・機械学習に関連する一部を抜粋）



これを見ると、pandas、scikit-learnに至っては、既にPython 2系統のサポートは終了している状況である。

［Projects Timeline］セクションには載っていないが、TensorFlowの場合は、2020年1月1日をもってPython 3のみをサポートし、Python 2はサポートしなくなる。2020年以降に、どうしてもPython 2を使う必要があれば、古いバージョンのTensorFlowを使わざるを得なくなる状況だ。

以上の通り、Python 2の寿命はあと半年である。これからは意識して2系統ではなく「Python 3」を使っていくべきだろう。また、最新のライブラリを使う必要がある既存のPythonプロジェクトについても、Python 3への移行をそろそろ計画して始めなければならない時期である。本稿がそのきっかけとなればうれしい。

「気になるニュース＆ネット記事」