YAPC::Asia 2014 行ってきた

YAPC::Asia 2014に行ってきました。 2日目しか参加してないです、まじすいません。

会場について

  • 個人的には日吉は家からめちゃくちゃ近いので助かるなあ。
  • コーヒースペース サイコーでした。 お菓子めっちゃ食べてすみません。
  • 飲食できるのがイベントホールのみっていうのがちょっと厳しかったかも。 でも幸い雨降らなかったので外出ればよかったんですが。

オープンソースの開発現場 -Perl 5.20のSubroutine Signatureが来るまでの奮闘の軌跡-」 by 牧さん

  • 2012年にMartiniさんという方がsubroutine signature機能導入の提案をp5pメーリングリストに投下してからPerl 5.20で採用されるまでの経緯を解説。
  • こういったパッチを投下するともう人格攻撃と言えるようなdisりや本筋と関係のない脱線を含む返信がドカンと返ってくるのが(特に海外のOSS開発MLでは)定番みたい。
    • 特にPerlは歴史が長くて老練の技術者がたくさんMLにいるし。
  • なのでそういった返信に大人の対応をしつつ、開発者が「しつけーなこいつ!」って思うほど辛抱強くパッチを修正して送り続けることが大事なんだとか。
  • Martiniさんの最初の提案はメタプログラミング用のAPIも備えるようなものだったらしい。
    • だけどそれをやると@_をいじるハックとかと相性がよくなさそう。
    • あとprototype組み込み関数を拡張することでsignature情報を取り出すとかで、このへんも互換性に関してはアブなそうに思える。
  • いろいろあって最終的には今の「@_をチェックしてmy変数にバインドするコードを動的生成」といった無難な仕様に落ち着いた。
  • ただし、この仕様の実装はMartiniさんのコードではなく、100% 他の人が書いたものだとか。
  • き、厳しい(´・ω・`)

「半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情(5.6対応)」 by うずらさん

  • ちゃっかりベストトーク賞とってました。
  • PHPはもうPEARとか使わないんですって。
    • Packagist + Composer がキテるらしい
  • PHPはもうテンプレートエンジンじゃないんですって。
    • Twigっていう「ちゃんとした」テンプレートエンジンがキテるらしい。
  • PHPはいまやsshサーバにもなったりするんですって。 えっ
  • PHPは(ry

Plack for Fun and Profit (But Mostly Profit) 」 by Saywer Xさん

  • Booking.comは超巨大Webサービス
  • 15年モノのレガシーPerlコードが山のようにある!
  • Plack/PSGIとかクールだし開発効率上がるんだけど、レガシーコードも捨てるわけにはいかないんだよ、お前ビジネス分かってんのか? っていう話。
  • 前段にリクエストをさばくルーターのようなフロントエンドをかませて、

レガシーなコードにもモダンなコードにも適宜振り分けられるようにする、というのがやっぱり基本になるみたい。

  • レガシーコードをPSGIアプリにするラッパーなんかも作ってる?

Perl for Perl Mongers」 by songmuさん

  • Perlの特徴的な点について
    • my変数宣言
    • リファレンスカウントGCとガードオブジェクト
    • ダイナミックスコープ
    • blessとオブジェクト指向
  • なんか自分がPerlについて考えていたことを全部言われたような気がした。
  • songmuさんは大学で中国語翻訳の研究をされていて、そこでPerlを使ったのだとか。
    • なんか自然言語屋さんは割とPerlを選ぶ傾向がある? と思ったけどそうでもないのかも。
    • 「blessはSVOCなんだ!」というのが印象的

「Perl5 meta programming」 by karupaneruraさん

  • string eval, typeglob, symbol tableあたりを使ったメタプログラミングテクニック
  • typeglobの扱い方とかすぐよく分からなくなるので、Package::Stashモジュールは便利そうだと思った。

「Mobile Application Development for Perl Mongers」 by ninjakunさんとgfxさん

  • このへんは自分にはよく分からんですな・・・
  • Webとモバイルネイティブアプリはリリースサイクルが全然違うので開発スタイルも違う
    • Webはさっさとリリースして、なんかヤバかったらロールバックだってできる。
    • アプリは一旦リリースしたらもう後戻りできない。 リリース頻度が高すぎるのも問題。
  • 自分からすると「いや、そりゃそうだろ・・・」とも思えるんだけど、Webオンリーでやってきた人にとっては大きなパラダイムシフトなんだろう。
  • 逆に自分はWeb系の常識が全然ないんだけど。

「そんなにビッグでもないデータ処理手法の話」 by tagomorisさん

  • 一発のクエリで扱うデータのサイズでどういう手を取るかを考えるべき。
    • GB未満くらいのサイズ -> RDBMSでおk
    • GB 〜 TBくらい -> 「そんなにビッグでもないデータ」
    • PB以上 -> 「ビッグデータHadoop一択
  • そんなにビッグでもないデータは
    • 1マシンのメモリに全部乗せるにはちょいとキツい。
    • 1マシンのディスクに乗せることはできるけどそれだとパフォーマンス的にキツい。
  • なので分散処理をやりましょうという話、かな?
    • Apache Hadoop : ジョブ間で発生するディスクI/Oがキツい
    • Apache Spark
    • Cloudera Impala
    • Apache Tez
    • Apache Drill : 低レイテンシ指向、だとか。
  • 処理内容によってボトルネックは変わってくるのでそれに合ったプロダクトを使うべき
    • 検索処理ならI/O intensive
    • 機械学習やグラフ処理はCPU + メモリ intensiveになりがち。
  • Hadoop MR代替ブツはたくさんあるけど、なんだかんだ言ってMRは安定してるし、基本。 ですよねー
  • ちなみにMRv1はもうオワコンだからMRv2使っとけだとか。 えー