PyCon JP 2014 の1日目 keynote について

今年は娘ができたこともあり、 PyCon JP に発表だけじゃなく参加もしませんでした。 (娘と妻次第ですが、来年からはまた行きたいと思っています。)

さて、 Twitter を眺めていると Python 3 に対するネガティブな反応がいきなり 流れ始めました。元になったのは id:fckey さんの PyCon JP 2014 1日目参加レポート #pyconjp という Blog 記事の、1日目 keynote の感想のようです。

PyCon JP 2014 の発表は YouTube で配信されていたので、そちらで keynote を 聞いた上で補足していきます。 ただし、英語のリスニングは苦手なので、 @kennethreitz さんの代弁や翻訳ではなく、 あくまでも個人的な意見です。


CH01 Opening~Keynote: Kenneth Reitz - YouTube

先に一番重要な点を書いておくと、発表の意図は Python 3 へ進んでる人と、 Python 2 に とどまっている人の間の分断を問題視していて、 Python コミュニティを1つにもどすために、 みんな Python 3 を使って感想出してよっていう勧めです。

確かに質疑応答で、個人的には Python 2 の方が好きだという話はしたものの、それはあくまでも みんなが Python 3 を使った感想を表明した結果として、 Python コミュニティ全体の結論として Python 2 ベースで進化したら良いなという願望を語っただけです。

この発表をもとに、 Python 3 をまともに使ったことがない人に Python 3 への FUD を広めて Python 2 を使い続けさせたり、 Python 2 から Python の fork を開発することを提案するのは、 むしろ分断を推奨することになるので、発表をしてくれた @kennethreitz さんに大変失礼なことだと思います。

発表の内容について

Python 2 と Python 3 の分断を指摘した上で、 PyCon に来ている Python プログラマーに、 Python 3 を使って感想をアウトプットすることを勧める内容でした。

コアデベロッパーは Python 3 をメインにしている、ライブラリ作者は Python 2/3 両対応の コードを頑張って書いて、 Python 3 の利点を享受するどころか余計しんどい状態、なので、 問題は Python 2 を使い続けていて Python 3 を使ってない Python プログラマーであり、 解決するには Python プログラマーPython 3 を使って行くしか無いということです。

アーリーアダプターとアーリーマジョリティーの間の、キャズムの溝ですね。

1つ目の質疑応答 (53:00~)

質問は Perl 5 / 6 のように別言語にしなかったのはなぜかというものだったのですが、 回答の最初の部分は上手く聞き取れませんでした。

途中から 2 -> 3 への移行の話になったのですが、多くのライブラリ作者が 2to3 を使って Python 3 を 別ツリーとして開発するのではなく、単一のコードベースで Python 3 対応をすることを選んだために、 Python 3 のメリットを享受てきていない状況の説明がされました。

続いて

まあ端的に言うと彼はPython3が好きではなく使う気もない。

の部分 (56:15~) です。「これからどうするかを決めるためにも、みんなに Python 3 を 使ってもらって、意見を集めたい。」という話のあと、「個人的な願望を言えば、 Python 3 の 開発がストップして、 Python 2.8 に Python 3 の改善点が backport されてほしいと 思っている」と、秘密を打ち明けるような照れ笑いで語った上で、「PSF は、少なくとも今のところは、 Python 3 の開発や止めないし Python 2.8 も出さないとはっきり表明している」と補足しました。

なお、「使う気もない」の部分は聞き取れませんでした。

2つ目の質疑応答

2つ目の質問は、 「Python 2/3 両対応のライブラリをメンテしているが面倒だ。周りの人に 早く Python 3 へ移行するようにすすめているが、ためらう人もいる。あなたの個人的な意見として、 Python 3 の一番のメリットはなにか」というものです。 (57:45~)

質疑で出たPython3を使用する利点は何かという質問に対して「No Benefit (hahaha)」の答えには震えてしまった。

"Well.. From my opinion, there is... no benefit." (会場爆笑) という感じですね。

この笑いも、1つ目の質問の最後の「個人的な願望」と同じく、 Python 3 に対する嘲笑ではなく、 Python 2 の方が好きという秘密を暴露する笑いでしょう。そしてその後 asyncio (特に yield from), SNI などの security の向上を Python 3 のメリットとしてあげていました。

(なお、セキュリティに関しては例外的に Python 2.7 に backport されていて、 SNI も次の Python 2.7.9 で入るでしょう)

感想

2 / 3 の分断を解決するために、 Python 開発者がまず Python 3 を使って感想を出して欲しいという 発表の内容については完全に同意です。 インタラクティブシェルを立ち上げてみるだけ、とかじゃなくて、ちゃんとアプリケーションを作って 感想を言ってほしいと思います。

個人的には既に Python 3 をアプリケーションで使い始めていて、 Python 2 にはもうもどれないと思っています。 isinstance(x, int) というコードを見つけて、まぁ問題にならないだろうと放置したら見事にハマったり ((Python 2 では isinstance(x, (int, long)) が正解))、 ログやトレースバックで UnicodeError が起こって本当の問題を隠してしまったり、それを怖がって ASCII 文字 以外が全部エスケープされるようにしてログが読みにくくなったり、、、といった問題が全部解消されているからです。

Python 3 に不満が無いわけではないですが、基本的に Python 2 へ backport するよりも Python 3 自体を 改良するほうが早いと思っています。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。