peketaminの日記

その辺のプログラマーのチラ裏です。

PyConJP2014 で直接見れなかったセッションをオンラインで見ていた

ここ → PyCon JP 2014 発表資料 | PyCon JP 2014 in TOKYO を見て拾っていった。

Youtubeの動画ペイン右下歯車アイコンで調整出来る倍速再生機能が便利だった。

ちなみに当日直接見ていたセッションは「なるべく自分に関係無さそうなセッション」を選んで、機械学習、データ分析系ばかりだった。なので、下記はそれ以外の、よりPythonにまつわるツールなどの話が多い。自分に関係なさそうなセッションばかり見ていたのは、自分の知らないモノほどそれを知っている人たちがいる場に直接いかないとピンと来なそうだ、と思ったから。(まぁ、それで良かったような気もする)

リファクタリングツールあれこれ (May the force be with you) by tell k

内容は、

  1. コーディングスタイルを知る
  2. 自動整形に任せる
  3. 自動補完で楽する
  4. リファクタリングツールを使う
  5. コードメトリクスを見る 3 .デッドコードを探す
  6. まとめ

発表時間が足りず終盤が省略されてしまったけど、 Vim でのリファクタリングツール連携や、コードメトリクスによる ダメっぽい複雑度 的なコードの検出・統計は興味深かった。

Djangoアプリケーション、パフォーマンスチューニング by Hiroki KIYOHARA

他のWebアプリケーションフレームワークでも通用する話だった。何度か見直したい。

  • SQLを吐きまくるコードは誰だ
  • インデックス
  • キャッシュキャッシュキャッシュ
  • アプリケーション外

というメニューで、

  • ORMが吐くSQLデバッグツールバーで見ろ → テンプレートの中でMany-to-OneやMany-to-ManyのDBアイテムをループ表示しているところなんかでは、SELECT文をループの数だけ発行していたりするぞ、と。
    • select_related(), prefetch_related() を使いましょう、など。
  • DBログをロギングの設定をして見ましょう。
  • count() の数が問題ではなく、テーブルが空でないことだけを確かめたいなら exists() を使って limit 1 のSQLを発行させるだけにしよう
  • JetProfiler などの検証ツール良いよ
  • 全域に適用出来るわけではないキャッシュ、どこに使いドコロがあるか
  • Funkloadというシナリオを書くテストツール
  • 耐えるべき負荷の見積もり方
  • newrelic は知見がない, Funkloadは並列実行できるの?→分からない

2013年にDjangoのORMに対して抱いた疑問がようやく解決した。以前、BP Study懇親会で「SELECTの発行回数をみんな気にしているのか気になる」という質問を場に投げたら@さんはRailsでもORMにクエリの仕方に口出しをするプラグインを使っている、というお話をしてれた。Djangoにもそういうのがあったよ、という話。ちなみに@さんは「フロントよりバッチでそれを気にしたほうが良い」というアドバイスを下さった。

Improving code quality through static analysis for Python by Daniel Izquierdo

上記「リファクタリングツールあれこれ」のセッションと似た話をもうちょっと pep8 コマンドの実行例などを交えて詳細に。 pylintとpep8を選定したのは、情報が多いから (って言ってたのかな)。

XML-RPC : Pythonが「電池付属」と呼ばれる理由 by Ransui Iso

SunがNFSを実装するために定義したというRPC、サーバーとクライアントでXMLを通じてやり取り出来るライブラリがPythonには標準で入っていますよ、という話。

15:30ぐらいから実際の使い方の例が見れる。

発表者は2013年には ターミナルの復権:隠れた名ライブラリ curses を使いこなす でホイッホイッっていってた某社のあの方。


"Continuous Publication" with Python: Another Approach by Daisuke Miyakawa

Re:VIEWを書籍のビルドシステムを作ってみたという話。 20人以上の著者がいるような書籍ではビルドの失敗を都度検知したいので、 Celery(セロリー)との組み合わせてビルドシステムを構築。 レビューコメントもユーザーごとに部分ごとに付けられるというフロントエンドの機能も付けたとのこと。

ロギングで苦労した話は↑のQiitaのリンクに。

見どころは 20:40 ぐらいからの、「片手間プロジェクトの進め方で困ったこと・どうしたか」という苦労話だった。

あと、ソースコードのコメントには、「 理由」「意図」「疑問」を書かないと、 片手間プロジェクトでは間があくことが多いので、コメント自体が無駄になることに注意してる、 という話。

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

見た後で思ったんだけど、最初に正規表現リテラルを取り入れたのはPerl?まぁいいか。

  • 21世紀の言語ならraw文字列はあった方がいいだろ
  • 正規表現リテラルがなくてもそこまでディスアドバンテージではないだろう
  • if文のネストが深くなりそうなときなどのpythonでの正規表現処理のコツなど

終盤の質疑応答の空気がちょっと怖かった。(文句をいうヒマでコミットしろ的なアレが)

Gunicorn, the thundering herd and other concurrency programming challenges by Benoit Chesneau

(時間の都合で見るのを諦めた)

Python を支える技術: ディスクリプタ編 by Nozomu Kaneko

Python自体のハックな感じの話。

一度見ただけだとなんとなくしか頭に入らなかった。また見たい。


ここで学んだ英語

  • for the sake of: ~のために、~の利益のために、~の目的で (言ってないかも)
  • in despite of: ~にもかかわらず
  • deviation: 逸脱、偏差値