PyConJP2014に行って来ました
2014/9/13-14と東京までPyConJP2014に参加しに行って来ました。
参加経緯
これまでこういうプログラミング言語系のカンファレンスには地方Ruby会議ぐらいしか行ったことがなかったので、 常々東京でやっている本家のイベントに行きたいと思っていました。 関西でPython関連の読書会を始めたこともあってぼんやりPyConにも参加したいと思っていたのですが、そんなところにPRML読書会に来てくださっている@nekoallergieさんが割と速攻でEarlyBirdに申し込んでいたので、これは行くしか無いと思ったのがきっかけです。
1日目
それなりに早い時間に大阪を出発したものの若干ギリギリの到着になってしまいましたが、なんとかKeynoteに間に合いました。
Keynote: Kenneth Reiz
- Requestsの作者のKenneth氏によるKeynote
- python2と3について後者はまだまだ使われていない
- 使った体験を貴方が他の人にシェアするんだ
- 質疑応答「Python3を使う利点は?」「No benefit.」
Deep Learning for Image Recognition in Python
- 資料
- PyConは合コンではない
- kaggleの犬猫画像識別
- DeepLearningのFramework
- Theano/Pylearn2, cuda-convnet, OverFeat, Caffe, DeCAF
- Pythonがコア言語なのはPylearn2とDeCAF
- ライブラリによってPre-trained Networksという予め作成されたネットワークが利用できるかどうか違う
- Pepper君に何をして欲しいかを一つ考えよう
Gunicorn, the thundering herd and other concurrency programming challenges
- 資料
- gunicornはgreen unicornの略でUNIX向けのWSGI HTTPサーバ
- thundering herd problemをいかにして克服したか
- thundering herd problemとはイベントを待っている多くのプロセスがイベント発生時に全て動作しようとするが、同時に一つのプロセスしか処理ができない時に起こる問題のこと
- 全プロセスが一旦起きるが一つしか動作できないので他は再び寝てしまい、これを繰り返すことでシステムに負荷が掛かる
- thundering herd problemとはイベントを待っている多くのプロセスがイベント発生時に全て動作しようとするが、同時に一つのプロセスしか処理ができない時に起こる問題のこと
- チケット#792でhundering herdを解決
- arbiterとworkerの間でパイプを通じてシグナルをやりとり
- arbiterはsocketがreadできるかどうかをチェックし、workerはarbiterに仕事を要求するか生きていることをnotify
- arbiterとworkerの間でパイプを通じてシグナルをやりとり
- バージョン20.0では完全にgunicornコマンドのみになり、他のコマンド(gunicorn_djangoなど)については削除される予定
- ユーザエクスペリエンスの向上を現在進行形で取り組んでいるとのこと
- 前提知識が足りない、英語、途中から入った、という三重苦であまり理解できなかった
Lunch
弁当がでました(写真は撮り忘れた)
Data collection, analysis and optimization with python
- 過去の番組表からタレントの出現頻度を分析
- データ収集
- requests, bs4(BeautifulSoup4), (Selenium)を用いる
- データ分析
- pandas, scikit-learn
- 可視化
- 当初何故かrequestsが入っていなくてデモができなかったが、最後でpip installして成功して会場から拍手
- statsmodelがチラっと出て来たけど触ったことないので軽く触りたい
Effective numerical computation in Numpy adn Scipy
- 資料
- 効率的にスパース行列を計算するにはどうすれば良いのか、が主題
- MedKitが参考になるとのこと Numpy MedKit
- lil_matrixでスパース行列を構成し、csr_matrix, csc_matrix(row, colアクセスが速い)に変換すると良いとのこと
- 自分で実際に触ってみた上で参考にしないと分からないなーという印象
Introduction to scientific programming in python
break
近くのコンビニのATMに金下ろしに行ってました。会場に戻ったら珈琲が出てたので適当に飲んでた。
リファクタリングツールあれこれ
- 資料
- 色々なリファクタリングのためのツールの紹介(vim寄り)
- 感想
- pep257知らなかった
- vimのSyntasticを使うと勝手にpep8でチェックしてくれるのだが、調べたところflake8も使えるっぽいので後日vimrc弄りたい
- 勝手に整形してくれるautopep8やautoflake知らなかったので後日試す
- Ropeも便利そう、是非試してみたい
Mining sentiments in tweets using Python
Lightning Talk
- Gunosyの広告配信サーバ
- pydun
- 非エンジニアがPyConJPスタッフをしてみた
- 緊張していたと言っていたが人事らしいしっかりした話し方
- デプロイできる人事の存在に驚き
- Djangoの話
- 普段Djangoを書かないがためか何故かほぼ記憶にない
Party
- @mzmttksさんがリプライをくれたこともあって、そのまま色々輪が広がっていって色々な人と話せたのですごい良かった、世の中は狭い
2日目
Keynote: Hirokazu Nishio
- 若干遅刻したが大体聞けた
Job Fair
Poster Session
- 確率プログラミング
- PyMC3よりPyMC2の方がまだマシ、STANはオススメとのこと
Lunch
- 2日目はサンドイッチだった、レタスが豊富に含まれておりでかかった
OpenCVのpythonインターフェース入門
- 資料
- マイナビで連載をしているとのこと
- OpenCV
- import cv2
- 基本モジュールとしてcore, imageproc, highv?(マウス操作など)
- video(動画処理)、 calib3d(AR), ... 物体検出など
- mlもあるがサポートベクターマシン、ランダムフォレスト、GMMもあるがscikit-learnなどの方が良い
- OpenCV配列がnumpyとして保持される
- imread()
- 線形代数関連がそのまま使えるのがメリット
- 画像の可視化
- cv2.imshow()で実行可能
- matplotlibも使える
- 可視化するときだけBGRから変換が必要、内部的に扱うときはそのままでも良い
- ガウシアンブラー
- 自分で窓を定義しても良いが、OpenCVにも用意されている
- エッジ検出
- 動画の背景差分
- background.subtrackterなんちゃらですぐできる
- 人検出
- QA
Pythonとscikit-learnではじめる機械学習
- スパムフィルタの実装
- ナイーブベイズを使って分類
- scikit-learnのnaive_bayesのMultinomialで学習
- クロスバリデーションで評価
- 予測の説明は時間不足で端折られる
- 全体的にscikit-learnを用いるとコードが驚く程短くなる
- scikit-learnは異なる手法でもできるだけ同じインタフェースで学習やら予測ができるので学生時代に使いたかった
数理最適化によるパズルの解放
- ipython notebookでプレゼン
- 最適化問題を解くためのpulpというライブラリを使ってパズルを解く話
- pulpはモデラーであり、実際に問題を解くのは別に存在するソルバ
- LpProblem, LpVariable, LpAffineExpression, LpConstraintを使って問題を定義
- あとはvalue, lpSum, lpDotさえ使えれば大丈夫とのこと(ただし中身を理解できていないので何が大丈夫かは分からない)
- 数独やののぐらむ(ピクロス)などを制約を数式で定義して解く
- 人が解いたら楽しいがコンピュータに解かせても何も楽しくないとのこと
break
- 立話の中でmatplotlibはSliderなどのGUIっぽいものが使えるということを聞く
- @nekoallergieさんにiPadでiPython notebook(numpyなども含む)が使えるアプリCoumputableを教えてもらった
- 後日インストールしたところ新規ノートを作るのに1000円払って機能解放しないといけなかったので辛い
データ分析の世界へようこそ!〜マーケティングに活かせるPythonライブラリ
- 資料
- Python2とPython3のユーザ数の違いに触れてPS3とPS4のユーザ数の違いに言及
- Play PS4!
- レコメンデーションにおいてはLiftという概念が重要
- Xを買った人がYを同時に買う確率が、全体に対しYだけを買う確率に対して何倍であるかという指標
- scipyのspatial.distanceに距離計算モジュールが存在している
正規表現リテラルは本当に必要なのか?
- 正規表現文字列はダブルクオーテーションを使うとエスケープ文字をエスケープする必要が出て来るが、シングルクォーテーションであればエスケープしなくても良い
- raw文字列が使える言語であれば同様に解決するが、Javaにはないのでバックスラッシュに拘らず他の文字を使って解決
Lightning Talks
- 続・野球プログラミング
- Pythonではじめる競技プログラミング
- Pythonアイドルが競技プログラミングをやって青春
- バイラルメディア
- 炎上記事は見つけられず
- PyConJP NOC
- 参加者としてはありがたい限りです
- SphixCon JP 2014
- これまでもPyConとかOSCと共同で開催、今年もやるとのこと
Closing
- 抽選は最後から2番目に当たった、PyConKrのTシャツを頂いた
雑感
- 普段自分が使っているmatlabライクにオーディオファイルが扱えるscikit.audiolabは3系に対応していない上にほぼメンテナンスされていない状態
- これが原因で3系に移れなかった
- 初日のKeynoteを聞いて他人がなんとかしてくれることを期待してはいけない、自分でどうにかせねばと強く思った
- 科学寄りの人が多いし英語の発表が多く軽い学会気分
- 科学寄りの人達は皆iPython notebookを使っていた。あとJuliaに興味がある人も多かった
- anacondaを使わないとダルいという話が随所であった気がするが皆同じこと思ってるものだと感じた
- MBAの電池が志半ばな時間帯に2日とも尽きるし2日目に至ってはiPadの電池すら尽きる
- 日本国内で自分の英語力を鍛える環境をどうにかして整えねばならない
- どこかの発表でPyTablesが出て来たので後日調べる