ゴミ箱の中のメモ帳

まだ見ぬ息子たちへ綴る手記

Python2とPython3は、迷うこと無くPython3だろ

今までにも何度か「Python2かPython3かどちらを使うべきか」と言う記事を読んだことがある。これが5年前であればまだしも、ここ3年、ましてや去年以降もなぜそれで悩むのかが理解出来ない。そして、つい最近にも同じような記事を読んだ。

どの記事に置いても、「基本的にはPython3で、どうしても必要なモジュールがPython3に移植されていなければPython2を使う」と言うものである。

アホかと。今からPython2を始めるメリットは何もない。デメリットしか無い。迷うことなくPython3を使え、Python3でもPython3.3ではない、Python3.4だ。

Python 3 プログラミング徹底入門

Python 3 プログラミング徹底入門

  • 作者: マーク・サマーフィールド,Mark Summerfield,長尾高弘
  • 出版社/メーカー: ピアソン桐原
  • 発売日: 2009/12/01
  • メディア: 単行本
  • 購入: 1人 クリック: 61回
  • この商品を含むブログ (21件) を見る
パーフェクトPython (PERFECT SERIES 5)

パーフェクトPython (PERFECT SERIES 5)


どの記事でも「モジュールがPython3に対応していなければPython2を使う」とあるが、Python3がリリースされてから早6年。Python3.3がリリースされてからも2年半が経つ。

そんな期間が経っているのに未だにPython3に対応していないモジュールなど、今後に置いても信頼が置けるものではない。もしユーザが多く有用なものであればとっくにPython3に移植されているであろうし、移植されていなくてもForkされているはずだ。

今現在もPython3に対応しておらず、移植もForkもされていないものというのは、ユーザがいないか、そもそもPython3に代替モジュールがあるかのどちらかだろう。有用なモジュールであれば、どれだけ難解なコードであっても必要に迫られて移植がされるというものだ。

例えばPython界のファンタジスタDjangoにおいてもDjango1.5からPython3対応が導入され、Django1.6で正式に対応した。これもPython3.3のタイミングと同じくらいであろう。

Djangoと言う巨大なフレームワークでもユーザが必要としているために対応するくらいなので、それより小さなものであればもっと素早く対応されていて当然だ。小さなモジュールはその利便性が売りであるのに、その利便性を欠いていれば意味がない。

今後の対応予定があるとしても、ここまで遅れていれば、今からPython3に対応したとしても、今後のPythonの変化にも同じように遅れて追従していくだろう。そんなモジュール使いづらくて仕方がない。

ということで、モジュールが対応していなかろうが今からPython2を使うのは大きな間違いだ。もし本当に使うべきモジュールがPython3に対応していないのなら、Python3にこのタイミングで移植するべきだ。そのモジュールのために今Python2で書くと、今移植する以上の手間とコストが今後にかかってしまう。



Python2を今も使っている人は、基本的には過去からずっとPython2を使い続けてきた人で、現在使っているコードがPython2であるためにPython2を使っているという理由だけだ。今から新しく始めるプロジェクトでわざわざPython2を書く人はいない。もしいるとすれば今時にCVSを使っている人くらいだろう。確かに新しいものに抵抗を示し続けて時代遅れになっていくという人もいる。だがそんな人に望んでなる必要はない。

たしかにPython2は2020年までメンテナンスされることは発表されている。それくらい現在も使われているというのも確かだ。だがもう残り5年だ。今から寿命が設定されて、その際にバージョンの変更に大きなコストが必要になるものを使うのは大きな間違いだ。

例えばPython3にしても、6月にはPython3.5のベータがリリースされる予定であるので、Python3はどんどんと進化していく。型アノテーションには期待したいところだろう。



ということで、今さらPython2から始める必要はない。確かにPython2も知っておく必要がある。なぜならまだ世界のPythonコードにはPython2で書かれているコードがあるからだ。そして仕事としてもPython2のコードをメンテナンスすることもある。

だがそれはPython2から始める必要があるということではない。Python3からはじめ、理解し、Python2を学べる土台が出来てから変更点を理解しておくだけで良い。例えばPerlユーザが今からPerlを学ぶのに、Perl5.8からやる人間はいないだろう。PHP4から始める人間もいないだろう。

それと同じだ。確かにそれらのバージョンのコードは現世にもまだ存在するが、今からそれをあえて学ぶ必要はない。もしメンテナンスが必要になった時に、それを学べば良い程度だ。今からどの古いバージョンをメンテナンスする必要があるかなんかわからないのだから、あえて古いバージョンを網羅しておく必要はない。

時間はどんどん過ぎていき、1年後には今よりもPython2のコードは減っている。時間は進んでいるのだ。



さぁ、Python3を学ぼう。