連載
» 2019年06月27日 05時00分 公開

気になるニュース&ネット記事:Python 2系終了のタイムリミット迫る。早く「3系」に切り替えよう

2019年も折り返しであと半年。Python 2系統のサポートが終了し、各種ライブラリもPython 2系向けが提供されなくなっていく。そろそろ「Python 3系統」に切り替えよう。

[一色政彦,デジタルアドバンテージ]
「気になるニュース&ネット記事」のインデックス

連載目次

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

  • Python 3(執筆時点の最新バージョンは「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での共同宣誓 図1 python3statement.orgでの共同宣誓

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

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

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

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

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

図3 python3statement.orgの[Projects Timeline]セクション(AI・機械学習に関連する一部を抜粋) 図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への移行をそろそろ計画して始めなければならない時期である。本稿がそのきっかけとなればうれしい。

「気になるニュース&ネット記事」のインデックス

気になるニュース&ネット記事

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。