6月9日、
会場に向かう
ついにPyCon Taiwan 2012がはじまります。朝食を食べてから台北市内のホテル
会場はAcademia Sinica
![人文社会科学館の外観 人文社会科学館の外観](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_001.png)
さて入場登録をして会場に入ろうと思った時に事件が発生しました。
なんと日本からの参加者の一人、
もしも海外から参加して
![PyCon Taiwan会場の国際会議場 PyCon Taiwan会場の国際会議場](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_002.png)
PyCon Taiwanのタイムテーブルと各資料へのリンクは、
Keynote: Large-scale array-oriented computing with Python
もりもとです。最初の基調講演はTravis Oliphant氏による、
![Travis Oliphant氏 Travis Oliphant氏](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_003.png)
以下に彼の経歴や発表スライドが公開されています。
What is wrong with Python?
![Pythonの悪いところ Pythonの悪いところ](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_004.png)
この前のスライドで 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
これらの実装によるベンチーマーク結果です。
![配列指向の実装によるベンチマーク比較 配列指向の実装によるベンチマーク比較](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_005.png)
筆者は、
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さん](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_006.png)
以下に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/
いくつかのセッション発表にあったのですが、
![Pinkoi Want You! Pinkoi Want You!](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_007.png)
余談ですが、
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)
![vsguiで生成されたファイル選択ダイアログ vsguiで生成されたファイル選択ダイアログ](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_008.png)
PySX, a playstation emulator in python
- スピーカー:Tzer-Jen Wei
- スライド:Pysx presentation at Pycontw by weijr | SlideShare
PySXというPythonで動作するプレイステーションのエミュレーターの紹介です。すでにプレイステーションのエミュレーターはこの世に存在するのに、
実際にPC上でプレイステーションが起動する様子を見せてくれました。まだ、
![プレイステーションの起動画面 プレイステーションの起動画面](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_009.png)
Osube - Represent You
- スピーカー:Scott Lambert
モバイルビデオに関するスタートアップ企業Osubeの紹介です。OsubeはPyCon Taiwanのスポンサー企業でもあります。まだサービスはリリースされていませんが、
![osubeのアーキテクチャ osubeのアーキテクチャ](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_010.png)
また、
Python and Startup
- スピーカー:yychen
- スライド:Python and Startup by pycontw
DjangoとMongoDBなどを使ってサービスを立ち上げた話をしていました。House123という不動産取引のためのサービスのようです。
PyCon Taiwanの雰囲気
再び、
PyCon Taiwanでは入場時にノベルティがロゴ入りの紙袋に入って配られました。中身はプログラムガイド
![PyCon Taiwanグッズ PyCon Taiwanグッズ](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_011.png)
会期中は2日間とも午前と午後にTea Break、
![Tea Breakの様子 Tea Breakの様子](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_012.png)
また、
![お弁当も中華 お弁当も中華](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_013.png)
![ランチタイムにPyCon Taiwanスタッフと交流 ランチタイムにPyCon Taiwanスタッフと交流](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_014.png)
![日本からのおみやげに喜ぶYung-Yu Chen氏 日本からのおみやげに喜ぶYung-Yu Chen氏](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_015.png)
1日目のプログラムの終了後はBoF
BoFは中国語のみのため私達は参加しませんでしたが、
![BoFの様子 BoFの様子](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_016.png)
PyCon Taiwan1日目終了
この日はAcademia Sinicaの中にある宿泊施設を利用しました。Center of Academic Activities
ホテルの部屋は非常に広く快適で、
日本から行った他のメンバーはホテルに併設してある中華レストランで夕食を食べたそうですが、
![Academia Sinicaの宿泊施設 Academia Sinicaの宿泊施設](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_017.png)
![謎の可愛らしいディスプレイのレストラン 謎の可愛らしいディスプレイのレストラン](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_018.png)
私はホテルのレストランでは食べず、
どうやっていくのか調べるためにAndroidのGoogleマップで検索すると、
![バスの車内 バスの車内](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_019.png)
![饒河街観光夜市の入り口 饒河街観光夜市の入り口](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_020.png)
![夕食は猪脚麺線(具に豚足の入った細い麺) 夕食は猪脚麺線(具に豚足の入った細い麺)](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_021.png)
![今日も食後にかき氷 今日も食後にかき氷](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_022.png)
![ところどころおかしな日本語 ところどころおかしな日本語](/assets/images/news/report/01/pycon_tw2012/0001/thumb/TH800_023.png)
この日私が使ったお金はこんな感じです。夜市にしか出かけていないので全然減っていません。しかも夜市での買い食いよりも、
項目 | 金額 | 日本円 |
---|---|---|
前日の残金 | 2,608 | 7,110. |
ホテル代 | 事前に支払い済 | |
タクシー | 370 | 1,008. |
猪脚細麺 | 120 | 327. |
かき氷 | 50 | 136. |
西瓜汁 | 20 | 54. |
おみやげ | 509 | 1,387. |
残金 | 1,539 | 4,195. |
次回予告
さて、
[2日目のレポートに続く。]