BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 現場からの報告:ハードコードされたソフトウェアでPython 3

現場からの報告:ハードコードされたソフトウェアでPython 3

原文(投稿日:2011/08/09)へのリンク

Python 3の製品バージョンが出て、2年半になる。 Python 2.xシリーズとの後方互換性を破ったので、それに対してたくさんの様々な反応がある。 Python 3に対する開発者の考え方を知るために Virgil Dupras氏にインタビューすることにした。

InfoQ: あなた自身についてと仕事でPythonをどう使っているのかをちょっと話していただけませんか?

Virgil Dupras: 私はオープンソースでクロスプラットフォームのデスクトップ アプリケーションを PyObjC と PyQtで開発していて、それらを自分のwebサイト、 http://www.hardcoded.net/に公開しています。以前は Delphiを使っていましたが、2005年にPythonに乗り換え、戻ることはありませんでした。

InfoQ: 3年前に Python 3に乗り換えた主な理由は何でしたか?

Virgil Dupras: 私はPythonが好きで、いつもコントリビューションでお返しがしたい、と思ってました。私はもっとコアの開発に関わりたいと考えていましたが、それほど自分は利口でない、と思ってます。確かにパッチは作れます(そして2,3提出しました)が、実際の話、Pythonのバグに出くわすことは殆どありません。なので提出するパッチも殆ど無いわけです。

そこでよく考えて、私がPythonを助ける最善の方法は、 Python 3の早期使用者になることで、それで自分が役だっていると思います。私はPython自身のバグには遭遇しませんでしたが、ライブラリの中には多くのバグがありました。私はまた py3kのライブラリにかなりのポーティングをしました。

InfoQ: 著しい変更のお蔭で、コードを移行する際に大きな問題が起きましたか?

Virgil Dupras: Python 3への移行で遭遇する唯一の大きな問題は str/bytes絡みですね。他は心配要りません。ポートする前に全部適当な__future__ importsを加えることで、全て簡単にポートされます。大丈夫です。たぶん割り算が問題になるかもしれません。しかしですね。"from __future__ import division" をもう使ってませんかね?

しかし、 str/bytesは、実際に用心が要ります。ポートする前に、どうやって文字列を使うかを本当に考えなければいけません。一ついやらしいことが、"re"ライブラリは bytesではなく stringsとでしか動きません。なので、もし「セミバイナリ」データをパースするのに正規表現を使っていると、問題に巻き込まれます。

しかし、そのような「厄介」な状況になければ、 str/bytesを扱うのは比較的単純です。リテラルの面倒を見て、それからすべての"open()"呼び出しをレビューして、それらがバイナリかテキストモードのどちらでオープンすべきかをチェックします。

InfoQ: あなたが好きなPython 2のフィーチャでPython 3に入っていないものがありますか?

Virgil Dupras: いいえ、欠点が少なくなった同じ言語ですから。

クロスプラットフォームのUI開発についてもっと知りたければ、 Virgil氏の記事 Cross-Toolkit Softwareを見て欲しい。

この記事に星をつける

おすすめ度
スタイル

BT