Koji Kitano

記者紹介

Koji Kitano

京都大学にてプロセスデータ解析の研究を行っている修士学生.現在は官民協働留学支援制度「トビタテ!留学JAPAN日本代表プログラム」第4期生としてカナダ・ブリティッシュコロンビア大学に留学中.データサイエンスや人工知能が変える未来のものづくりに興味を持つ.好きなものは鳥類とラーメンとPython.

「新しくPythonを始めたいけど,“2.7.x”と“3.x”の2つの最新バージョンががあって,どちらをインストールすればいいか分からない」というお悩みはありませんか?

また,Pythonを用いた機械学習プログラミングの勉強をしているときに,「参考にした書籍やWeb記事のPythonコードをそのまま実行してみたけどエラーが出て実行できない」といった経験はありませんか?

実は現在,機械学習を始めとする様々な分野で幅広く使われているプログラミング言語・Pythonには「2系」と「3系」の2つの現行バージョンが存在します.

初めてPythonプログラミングを学習する人は,このことを知らずにツボにハマってしまうことがあるかもしれません.そこで,本記事ではPythonの「2系」と「3系」について説明したいと思います.

Pythonには2系と3系の3つの現行バージョンが存在する
Pythonには2系と3系の3つの現行バージョンが存在する

なお,機械学習を学ぶ方がPythonを利用するメリットについては,当サイトに分かりやすい解説記事があるのでぜひご一読ください!

Python2系と3系の歴史


Pythonは20年以上の歴史をもち,熱心な開発者たちによって,様々な機能追加が行われてきました.

特に2000年に公開されたPython2系は,現代的な機能を備えたプログラミング言語として一躍メジャーとなり,様々な分野で幅広く利用されてきました.

しかし度重なるバージョンアップのうちに,Python2系の文法や機能の中にも,プログラミング言語として古い部分や,合理的でない部分が積み重なってきました.

そういった部分を再び整理し,プログラミング言語としてより洗練された形にしたものが,最新のPython3系です.

Python2系と3系の後方互換性の問題


Python3系での最も大きな変更として,過去のバージョンであるPython2系との「後方互換性」が廃止されました.「後方互換性」とは簡単に言えば「古いバージョンで作成したコードが,新しいバージョンでも正しく実行される」ことを意味します.

Python2系と3系の「後方互換性」が廃止されたということは,つまり「Python2系で書いたコードやライブラリは,Python3系では正しく動作しない可能性がある」ということです.

現在までに開発されている多くのPythonライブラリは2系での利用を前提としたものが多く,3系に対応していないライブラリがまだまだ多いのが現状です.そのため,未だに2系を利用し続けている方も数多くいらっしゃいます.

実務でPythonを利用する人にとっては,利用するライブラリが2系・3系のどちらに対応しているかをちゃんと見極めた上でバージョンの選択をする必要があります.

どちらを使えばいいのか?


では,これからPythonを用いた機械学習プログラミングをはじめる皆さんは,2系と3系のどっちを使えばいいのでしょうか?

結論から申し上げますと,いまからPythonを用いた機械学習プログラミングを学ぶ方は,迷いなく3系を使うことを強くおすすめします.その理由は以下の通りです.

  • 2系のサポートは2020年に終了するので,今後かならず3系への乗り換えが必要になる
  • NumPyやScikit-learn含む多くの主要な機械学習ライブラリでは3系への移行が進んでいる
  • 新たに3系で追加された仕様や機能によって,初学者でもより簡単に機械学習プログラミングができる

まとめ


この記事では,「Pythonには2系と3系の2種類の現行バージョンが存在し,後方互換性の問題が存在する」ということと,「いまから機械学習プログラミングをはじめる方は3系を選んだほうがよい」ということをお伝えしました.

次回の記事では,その理由として3つ目にあげた「3系で追加された仕様や機能によって,初学者でもより簡単に機械学習プログラミングができる」ということについて,実際に2系と3系でコードを書きながらもう少し詳しく説明したいと思います.