2014年9月17日水曜日

PyCon JP 2014の2日目に参加してきた

遅くなってしまいましたが2日目です。1日目のレポートの続き。タイムテーブルはこちら

Poster Session

今年からJob Fairというのが始まったようで、午前中Speakerセッションがなかったので、Poster Sessionを聞きに行きました。

Sphinxの中の方々がいらっしゃって、少しお話できました。Sphinxには仕事でお世話になっているので、近いうち自分からも事例報告のようなことができたらな、と思っています。

それから昨日一番早い時間の発表でDeep Learningのお話をしていたTanakaさんがプロジェクト・マーという別のプロジェクトをやってらっしゃるそうで、少しお邪魔しました。月面などの写真から、人面の部分を機械学習を使って発見するそうです。研究室時代に人工衛星で地上を撮影した狭い範囲の写真から、Google Mapで緯度経度を見つけてくる泥臭い作業をやっていたのを思い出してしまいました。Deep Learningなんかで人の顔写真を学習データとしてマッチングを行うと精度がよすぎるので、むしろある程度ノイズを載せてあげたほうが、宇宙人みたいな顔が見つけられて面白いらしいです。わかります、ロマンは人を動かす。

Oktavia - Search Engine 

Oktaviaというサーチエンジンを開発されている方のお話。Sphinxのドキュメントサーチを置き換えるのがプロジェクトの目標だそう。基本的に現存するサーチエンジンの多くは転置インデックス方式なんですが、FMインデックスという手法を使うことで検索の高速化をはかっています。以前情報検索アルゴリズムを勉強し際にちょっと触れたことがあるんですが、すっかり忘れてしまっていたので再勉強が必要そうです。発表でも共有されていた、高速文字列解析の世界(PFIの岡野原さんの著書です)、こちらも良さげですね。




パッケージングの今

毎年似たような内容で発表されているそう。pythonにはsetuptoolsを入れると使えるeasy_installとpipがありますが、そのあたりのお話。

これまで、pipを入れるためには先にez_setup.pyからsetuptoolsのインストールが必要でしたが、いまはget-pip.pyというので直接pipがインストールできるそうです。また、python3.4だと標準でpipがインストールされるんだとか。setuptoolsはいらない子やったんや!\(^o^)/

あとは自分で作ったライブラリなどのパッケージングのやり方も紹介してくださいました。ちょうど今作っているプロダクトの一部を切り離してライブラリにしようと考えていたのでとてもありがたいお話でした。



正規表現リテラルは本当に必要なのか?

pythonにもsedで書かれるようなs/original/replace/gのような正規表現リテラルを導入したほうが良いのか?という問題提起のお話で、とても身近な話なので大変聴きやすく、面白かったです。perlやjavascriptなんかでは文字列リテラルが使えるわけですが、pythonにも必要なのでしょうか?誰しもこれがあればもっと楽に書けるのに、といった経験はあるのではないでしょうか。スピーカーの方がおっしゃってたように、言語仕様が複雑になってしまうという大きなデメリットがあるし、自分のユースケースの場合現状の文字列関数でさほど苦労していなかったり、Pythonで文字列処理をする場合はほかのコマンドで処理したものを入力したりするためにあまり困ることがないので、個人的には必要ないと思っています。

それから、reモジュールを使う際、何度も使う正規表現はre.compileによって先にpatternをコンパイルしておく、という使い方をしますが、これはre.searchで毎回正規表現を指定すると何度もコンパイルが走って無駄だからと思っておりました。しかし内部の実装を見ると、re.searchやre.matchで_compileというメソッドを呼び出しており、これは
def _compile(*key):
    cachekey = (type(key[0]),) + key
    p = _cache.get(cachekey)
    // 以下略

となっています。すなわち、基本的にキャッシュが効くので内部で明示的にre.compileと同じように処理されるわけです。これは目から鱗でした。ただ、当然キャッシュが増えすぎるとパージが発生してしまい、compileの処理だけでなくキャッシュに対するIOのオーバーヘッドが大きくなるので気をつける必要があります。


ということで総括すると、今年は去年以上に持ち帰るものが多かったPyConでした。

最後のLTから写真撮影、抽選会(なんとPepperくんが当選番号を選んでくれる!!)まで終始アットホームな雰囲気でした。2年連続して参加してみると主催側の人の顔ぶれもわかってきたりしてより身近に感じられます。来年も、必ずいきます!

2014年9月13日土曜日

PyCon JP 2014の1日目に参加してきた

PyConは去年に引き続き2年目の参加。聴講したセッションの中で気になったものをあげてみます。ちなみにカンファレンスのタイムテーブルはこちら

(2014/09/15 発表資料など公開されたものを追加)

KeyNote


herokuのKenneth Reitzさん。自己紹介の途中で入ってきたのでわからなかったんですが、あとから見てみると、今やこれなしではやっていけないPythonのデファクトHTTPライブラリであるrequestsの開発者さんらしいです。お世話になっています。

スライドがオシャレなんですよね。デザインからフォントから。聞き入ってしまいました。Simple is better than complex. Complex is better than complicated.うんうん、同感。

何の話が肝なのかな、と聞いてたら、Python2とPython3の話題に。会場の人でそれぞれ使っている人、挙手してくださいっていうのがあったんですが、ざっと見2:1ぐらいに見えました。でも、ライブラリのダウンロード数の統計では、数10:1とかの割合だそうです。圧倒的Python2の強さ。

プレゼンのまとめとしては、みんなのPython2/Python3に対する意見をどんどんシェアしてくれってことでした。自分はPython3を入れたら使えないライブラリがあったりして、即アンインストールしてしまったクチです。すみません。。今はvirtualenvなんかが充実してるので、これを期にもう一度インストールしてみます。

そんなスピーカーさん曰く、Python3のBenefitは?と聞かれたら、No Benefit.と即答(苦笑)

ちなみに去年はdropboxの中の人が基調講演されてたんですが、そちらも面白かった。基調講演だけでも十分満足できる、それがPyConなんです。

ご本人がほかのカンファレンスで発表された同じ資料が上がってました。

Deep Learning for Image Recognition in Python 

これが今日の発表の中で一番面白かった発表。DeepLearningの技術的な話というより使ってみた、という話なんですが、OpenCVで顔認識してそれを分類してみる、という、まさに自分が研究室時代に同期と作っていたWebアプリに近しいものがあって、すごく楽しく聞かせてもらいました。

今を輝く某アイドルグループ48が出てきてその部分映像化禁止になったり、総合プロデューサーを今回のPyConのプラチナスポンサーでもあるソフトバンクのPepperくんにやらせようっていうやりたい放題なキャッチーな話題選びがナイス。Pepperくんに喋らせる言葉もセンスがあって、終始笑いの絶えない講演でした。

でも何より、Kaggleっていうデータマイニングのコンペサイトがあることが知れたのが自分としては一番の収穫。最近だとCodeIQでもデータ分析のカテゴリがあったりTopCoderでもそんな話題があったりしますが、こんな手軽に参加できるコンペサイトがあるんですね。これで悶々とデータ分析したいけど、ネタが見つからない日々とはおさらばできそう。


The esperanto generator

なんと現役中学1年生のスピーカーさん。若いエキスを吸って嫉妬するために聞いてみました。タイトルではEsperantoって銘打ってたけどオレオレ言語をつくろうっていう話でした。まさかのPythonコードを1行も書いてないっていう衝撃発表もあったけど、その本人の熱い思いみたいなところは会場の大人たちに伝わっていたんじゃないかなと思います。自分も中1のころはちょうどインターネットやプログラミングに対する興味・ワクワクが半端無くみなぎってた頃。それを思い出したんですが、それと同時に大人たちに紛れてその成果を発表しちゃおう、っていう姿勢に嫉妬です。今後の活動に期待してます。

PyCharm活用術

ずっとお会いしたかったSphinxの中の人、Shimizukawaさんの発表。お仕事ではSphinx、大変お世話になっております。SphinxのProposalもいっぱい出したけど何故かPyCharmの話が通ったとのことで、PyCharmの魅力を余すことなく教えていただきました。

自分もプライベートProjectでPyCharm使っているけど、無料版なのでリモートデバッグできなかったり、JSなどほかの言語とあんまり連携できてなかったりするんで、やっぱり有料版の購入検討したほうがいいかなぁ。そうなると全部入りのIntelliJを買うか・・。いつの時代も開発環境に関する悩みは尽きないです。


という感じでざっくりでしたが初日のレポートでした。