今年も PyConJP 2016 に参加してきた。のでメモ。
1. 週末サイエンティストの勧め
発表者: Yuta Kashino
BakFoo CEO、元天体物理学者、30代後半で企業
製品:Realtime Data Platform. 日経新聞の経済指標ダッシュボードなど
最近は環境が整備されているので、週末だけを使った研究も可能。
ただし、研究の体を成すようにしよう。
環境準備
- OS: Ubuntu LTS
- Python: Anaconda (conda のパッケージが基本。たまに pip)
- 仮想環境は docker / docker compose が良いことが多い
- コード保全は git
実験環境
- 科学スタック
https://github.com/bakfoo/awesome-pysci - 具体的な方法
基本的に import したら OK
ulmo で気象データ、 obspy 地震波解析
科学リテラシー
- 論文の探索
arXiv (Twitterbot @StatMLPapers みたいなものをフォロー)
GitXiv, アクティブな研究者のフォローなどでフィルタリング - 自学自習
勉強会、教科書、チュートリアル、想起練習も効果的
書籍 PEAK (著アンダース・エリクソン): deliberate practice が大事 - Comfort Zone を超える練習(辛いところまでやる)
- 目的を明確にする
- フィードバックを受ける など
- 科学的方法論に従う
感想:
標準的な Python 研究環境の情報が非常に良かった。特に awesome-pysci が秀逸。
2. Python で作る Web Crawler 入門
発表者: Ai Makabi (DATUM STUDIO) @a_macbee
ウェブクローリングの意義:定点観測。定期的にウェブを観測することで変化を知る。
例 数十万件 / 3か月 Azure: Google Trend, Yahoo 映画情報, 視聴率
100万件 / 日 GCP 10数台で 7-8 時間
注意点
トラブルを起こさない。 robots.txt の遵守。 LibraHack 事件。
クローラフレームワーク: Scrapy
SpeakerDeck 参照 https://speakerdeck.com/amacbee/pythondezuo-ruwebkuroraru-men
ただし書き捨て向きではない
感想:
書き捨てしかなかったクローリングに、フレームワークがある情報を知れたのは嬉しい。
個人的には、スクラピーじゃなくて、スクレイピーじゃないかと思ったが。。。
3. パッケージングを支える技術
Python パッケージングライブラリをメンテしているコミュニティは
PyPA (Python Packaging Authority) http://github.com/pypa
管理しているパッケージ:
- setuptools: 基本パッケージ。
- virtualenv: 環境仮想化。python3 は pyvenv にあるがまだ不安定。特に Ubuntu
- pip: パッケージ管理ソフト
- wheel: バイナリパッケージフォーマット。 PEP で定義されている
ディレクトリ
- site-packages (root 権限)
- user-site-packages (user 権限。 pip で —user オプションを使うと入る。)
- dist-packages (Debian のみの user-site-packages 互換)
wheel の Linux 向け
Windows / Mac と異なり Linux は環境が大きく違うので、 wheel の使用は難しい。
PEP 513: Linux 向け wheel
標準的な仮想ディストリビューションを想定: manylinux1
- CentOS 5.1.1 相当 (x86, x86_64)
- ncurses, gcc, stcc++, libX11, glibc, とかのライブラリがあることを仮定
- ABI: pymalloc, ucs-3, ucs-4 がある。
manylinux1 の作り方
auditwheel: ライブラリチェックとないライブラリを同梱。
docker イメージ
quay.io/repository/pypa/manylinux1_x86_64
--> これを CI に使えば良い
その他
Twitter を見たりして気になったもの
- STNS Python lib
- Mezzaine
- http://www.slideshare.net/dondokono/pyconjp-2016
- http://errbot.io/en/latest/
- --> Chatops