2016年9月22日木曜日

PyConJP 2016

今年も PyConJP 2016 に参加してきた。のでメモ。

1. 週末サイエンティストの勧め

発表者: Yuta Kashino
     BakFoo CEO、元天体物理学者、30代後半で企業
     製品:Realtime Data Platform. 日経新聞の経済指標ダッシュボードなど

最近は環境が整備されているので、週末だけを使った研究も可能。
ただし、研究の体を成すようにしよう。 

環境準備

  1. OS:  Ubuntu LTS
  2. Python: Anaconda (conda のパッケージが基本。たまに pip)
  3. 仮想環境は docker / docker compose が良いことが多い
  4. コード保全は git

実験環境

  1. 科学スタック
    https://github.com/bakfoo/awesome-pysci
  2. 具体的な方法
    基本的に import したら OK
    ulmo で気象データ、 obspy 地震波解析

科学リテラシー

  1. 論文の探索
    arXiv (Twitterbot @StatMLPapers みたいなものをフォロー)
    GitXiv, アクティブな研究者のフォローなどでフィルタリング
  2. 自学自習
    勉強会、教科書、チュートリアル、想起練習も効果的
    書籍 PEAK (著アンダース・エリクソン): deliberate practice が大事
    1. Comfort Zone を超える練習(辛いところまでやる)
    2. 目的を明確にする
    3. フィードバックを受ける    など
  3. 科学的方法論に従う

感想:

  標準的な 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