6月9日、
会場に向かう
ついにPyCon Taiwan 2012がはじまります。朝食を食べてから台北市内のホテル
会場はAcademia Sinica

さて入場登録をして会場に入ろうと思った時に事件が発生しました。
なんと日本からの参加者の一人、
もしも海外から参加して

PyCon Taiwanのタイムテーブルと各資料へのリンクは、
Keynote: Large-scale array-oriented computing with Python
もりもとです。最初の基調講演はTravis Oliphant氏による、

以下に彼の経歴や発表スライドが公開されています。
What is wrong with Python?

この前のスライドで Python の良いところを説明していました。Pythonの良いところは、調べればたくさん見つけられるので、ここでは悪いところのみを紹介します。 自分が取り組んでいるプロジェクトやソフトウェアの良いところ、 悪いところを認識しておくのは、適材適所を選択したり、活用する上で重要なことだと思います。
スライドから引用しながら補足します。いくつか納得する項目もあるものの、いま正に改善しようと取り組んでいる項目もあります。
- パッケージングがまだ万全というわけではない
(distribute, pip, distutils2が期待通りではない) - Python 3.
3から packaging (distutils2)ライブラリが導入予定でしたが、現時点の開発状況を鑑みて3. 4に延期しようという話題が開発者メーリングリストで行われています。まだもう少し時間がかかりそうです。 - 匿名ブロック
(Anonymous Block) がない - “Anonymous Block”
で調べるとPEP 343 The “with” Statementが出てくるのですが、 ここで言う匿名ブロックとは、PythonコードやASTに対するlambdaブロックのようなものを意図しています。 - CPythonランタイムは、古くなってしまったので改良が必要
(GIL, グローバル変数、動的コンパイル対応) - 軽量DSLを作るために必要な言語拡張の仕組みが
“import hooks” しかない - Python 3.
1から追加されたimportlibで解決しようとしています。importlibはPythonのimport文の実装を提供し、Pythonのランタイムによらず、様々なAPIとフックを提供することで拡張を簡単にします。 - 複数のランタイムの煩わしさ
- PyPyの人気が出てきて、Cross-Pythonというキーワードもちらほら聞くようになりました。 従来からのJython, IronPythonに加え、Python 3への移行も着実に進む中、いまが過渡期なので仕方ないですね。
- 配列指向
(array-oriented) とNumPyを完全に理解しているPython開発者が少ない
Array-Oriented Computing
配列指向
def fib1(N):
"""
>>> fib1(10)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
"""
result = [0, 1]
for k in range(2, N):
result.append(result[k - 1] + result[k - 2])
return result
from numpy import roots, arange
r1, r2 = roots([1, -1, -1])
C = 1.0 / (r1 - r2)
def fib2a(N):
"""
>>> fib2a(10)
array([ 0., 1., 1., 2., 3., 5., 8., 13., 21., 34.])
"""
n = arange(N, dtype=float)
return C * (r1 ** n - r2 ** n)
from scipy import array
from scipy.signal import lfilter
from numpy import zeros
b = array([1.0 ])
a = array([1., -1, -1])
zi = array([0, 1.0 ])
def fib3a(N):
"""
>>> fib3a(10)
array([ 0., 1., 1., 2., 3., 5., 8., 13., 21., 34.])
"""
y, zf = lfilter(b, a, zeros(N, dtype=float), zi=zi)
return y
これらの実装によるベンチーマーク結果です。

筆者は、
In [11]: timeit -n 3 iterative_fib .fib1(1000) 3 loops, best of 3: 752 us per loop In [12]: timeit -n 3 using_formula .fib2a(1000) 3 loops, best of 3: 348 us per loop In [13]: timeit -n 3 using_lfilter .fib3a(1000) 3 loops, best of 3: 54.6 us per loop
関連プロジェクト
その他にもNumPyの良いところ、
- Blazeプロジェクト
- 次世代NumPyとPyTablesによるout-of-coreな仕組みや分散テーブルを提供する。
- Numbaプロジェクト
- LLVMでPythonのバイトコードをコンパイルしてNumPyのランタイムを最適化する。
- pandas
- 高速、
且つ汎用的なデータ生成/ 解析のためのライブラリやそのツール。
筆者は、
Clime: Simply CLI-ize Your Program!
鈴木たかのりです。Keynoteのあとはティータイムをはさんで1枠30分の通常のセッションが始まります。ここでは一つ目の発表MoskyさんによるClimeのセッションを紹介します。

以下にMoskyさんの発表スライドが公開されています。
Moskyさんは現在Pinkoiという企業でインターンとして働いている、
彼女は他にもUbuntu-twのメンバーだったり、
本題のClime説明ですが、
ある日Moskyさんはinitdb.
実際にClimeを使ってPythonコードをコマンドラインインタフェースに対応させてみましょう。ClimeはPyPI
# filename: repeat.py
import clime.now
def repeat(string, time=2):
'''repeat string n times
options:
-n N, --time N repeat N times.
'''
print string * time
これだけで、
$ python repeat.py twice
twicetwice
$ python repeat.py -n3 thrice
thricethricethrice
$ python repeat.py --help
usage: [--time N | -n N] STRING
or: repeat [--time N | -n N] STRING
$ python repeat.py repeat --help
usage: [--time N | -n N] STRING
or: repeat [--time N | -n N] STRING
repeat string n times
options:
-n N, --time N repeat N times.
これだけです。シンプルですが、
コードはGithubのmoskied/
いくつかのセッション発表にあったのですが、

余談ですが、
Lightning Talks
西本です。一日目の最後に行われた閃電秀
LTに限らず、
All-In-One Scientific Research With SageTeX
- スピーカー:Hsin-Yu Ko
- スライド:Main by kosinyj
数式処理システムSage
fabric ― deployment tool
- スピーカー:jslee
SSHで複数のマシンにデプロイを行うソフトウェアfabricの紹介です。Yahoo! Taiwanではかつてyinstというperlベースの独自ツールが使われていましたが、
Simple Way Adding GUI to Python Scripts
- スピーカー: hychen
- スライド:讓 Python Script 擁有圖形化介面的簡單方法
- ビデオ:PyConTW 2012 LT: VSGUI(very simple GUI)-Hychen
PyCon JP 2011でも発表してくれたhychen氏による発表です。シェルスクリプトを介してコマンドラインからGTK+ダイアログボックスを表示するツールZenityを、
次の簡単なコードで、
from vsgui.api import *
ret = ask_filepath(directory='/tmp')
info(ret)

PySX, a playstation emulator in python
- スピーカー:Tzer-Jen Wei
- スライド:Pysx presentation at Pycontw by weijr | SlideShare
PySXというPythonで動作するプレイステーションのエミュレーターの紹介です。すでにプレイステーションのエミュレーターはこの世に存在するのに、
実際にPC上でプレイステーションが起動する様子を見せてくれました。まだ、

Osube - Represent You
- スピーカー:Scott Lambert
モバイルビデオに関するスタートアップ企業Osubeの紹介です。OsubeはPyCon Taiwanのスポンサー企業でもあります。まだサービスはリリースされていませんが、

また、
Python and Startup
- スピーカー:yychen
- スライド:Python and Startup by pycontw
DjangoとMongoDBなどを使ってサービスを立ち上げた話をしていました。House123という不動産取引のためのサービスのようです。
PyCon Taiwanの雰囲気
再び、
PyCon Taiwanでは入場時にノベルティがロゴ入りの紙袋に入って配られました。中身はプログラムガイド

会期中は2日間とも午前と午後にTea Break、

また、



1日目のプログラムの終了後はBoF
BoFは中国語のみのため私達は参加しませんでしたが、

PyCon Taiwan1日目終了
この日はAcademia Sinicaの中にある宿泊施設を利用しました。Center of Academic Activities
ホテルの部屋は非常に広く快適で、
日本から行った他のメンバーはホテルに併設してある中華レストランで夕食を食べたそうですが、


私はホテルのレストランでは食べず、
どうやっていくのか調べるためにAndroidのGoogleマップで検索すると、





この日私が使ったお金はこんな感じです。夜市にしか出かけていないので全然減っていません。しかも夜市での買い食いよりも、
項目 | 金額 | 日本円 |
---|---|---|
前日の残金 | 2,608 | 7,110. |
ホテル代 | 事前に支払い済 | |
タクシー | 370 | 1,008. |
猪脚細麺 | 120 | 327. |
かき氷 | 50 | 136. |
西瓜汁 | 20 | 54. |
おみやげ | 509 | 1,387. |
残金 | 1,539 | 4,195. |
次回予告
さて、
[2日目のレポートに続く。]