YAPC::Asia 2013について

せっかくなのではてなブログにエントリ書いてみる。 Markdown使えるようなので、今後もはてなブログ使っていくかもしれない。

さて、YAPCは今年もTシャツ付きの2日チケットを購入して参加した。

見た発表 & 感想

09/20

  • YAPC::Asia Tokyo 2013 オープニング (10 分) - 941
  • Postcards from the Edge: The State of Perl 5 Development (40 分) - Ricardo Signes
    • 主に5.18以降の話だった
    • Perl5の将来の展望として、互換性をなくしていくということについては合意がとれてるけど、それがいつかは合意が取れてない
      • 欲しい機能があればコード書いてパッチ送れとのこと
    • CGI.pmがそのうちコアから消える
  • 今時のカジュアルなデータベース関連開発 (40 分) - Songmu
    • GitDDL::Migrator + DBIx::Scheme::DSL 使って生SQLを使わずにDSL定義されたテーブル定義をGit上で更新していくことでScheme管理している
      • DBIx::Scheme::DSLを使っているのはGitDDL::Migratorの中?で使っているSQL::Translatorが解釈しやすいSQLを吐くため
    • ソシャゲ上ではレコードの更新が多いのでmemcachedは使っておらず、Redisがキャッシュ用途に使われている
      • Redisの使い方としては主に以下の3つ
        • SortedSetを使ったお手軽ランキング、同率順位問題があるのでそのままでは使えない場合も
        • Setでログインユーザの保持
        • Listをジョブキューに使う
    • 4byteのUnicode絵文字があるとvarchar(255)は767byteを超えて、ユニークインデックスが貼れないのでutf8mb4を使ってvarchar(191)にする
  • BrowserStack を用いたクライアントサイドのテスト (20 分) - Kosei Moriyama
    • PaaS?っていうんですかね。いろいろなブラウザ環境をリモート上に用意してくれるサービス。テストに使える。
      • 最近はPhantomJsとか機能テストをやるのに便利なものは色々あるけど
    • 実行はそんなに早くはないけどSeleniumで様々な環境の自動テストが走らせられる
    • PerlだとSelenium::Remote::Driver使う
      • この手のサイトでPerlでのサンプルコードが載ってるの珍しいw
  • Vim実践入門 Perl編 (40 分) - Kazuhiro Homma
    • Vimの基本操作から、Perlによらないおすすめ拡張の紹介
      • emacsユーザだけど割りとほとんどの話を知っていた
      • accelerated-jk(加速させられたjk)ってネーミングカッコ良かった
  • ぼくがかんがえたさいきょうのMVC (20 分) - karupanerura
    • WebアプリにかぎらずMVCって存在しているけど、人によってMVCの扱いが結構バラバラでMVCが辛くなる
    • 本来の目的でのMVCをやるためにはプロジェクトごと・アプリケーションの性質毎にMVCをするための規約を作るといい
      • Webアプリの場合、MVCのやり方をきちんと決めるとキャッシュ戦略がすごく取りやすくなるよ〜って話わかりやすかった
      • 規約を作る時は、良い例を示すとともにダメな例も示すとより効果的
  • Types and Perl Language (40 分) Masahiro Honma
    • 発表機材でトラブってデモがなかった
    • 型システム入門嫁ってことですね・・・
    • ラムダ計算の概念を何となく聞きかじって終わっただけだった
  • モダンPerlリファクタリング (20 分) - Naoya Ito
    • inao2md.plリファクタの話
    • マーチン・ファウラーのリファクタリングの文章を引用されていて、かつそれを実践していてわかりやすかった
      • CLIのコードだったのでTest::Baseでエンドツーエンドのテストを書いていた
      • テストケースをエンドツーエンドからどんどん小さくしていてモジュールの粒度も小さくしていった
    • Carton / Github / TravisCI / Guard などを駆使した
    • 20分ぴったりに話が終わって良かった
  • 大きくなったシステムを元に新たな環境を作る取り組み (20 分) - Masaru Hoshino
    • 社内の話だったので知ってることが大半だったけど改めて聞いてみると一部知らないこともあった
    • うちみたいな巨大なリポジトリでは便利だけど、他の小さいリポジトリではそんな必要ないみたいなモジュールの事例があって面白かった
    • Useless moduleが社外の人にも結構評判良かった
  • やさしいGit の内部構造 (20 分) でぃーきゅーねお
  • ライブコーディングで学ぶWebアプリケーション (40 分) - toku_bass(守護霊)
    • Plackを使って一からWebアプリを実装してみるデモ
    • Router::Simpleのデモとしては良かった
    • 一からPerlでWAF実装するならRouter::Simple便利そう
    • toku_bassさんの会社、うち会社のめっちゃ近くだった
  • Lightning Talks Day 1 (60 分) - Daisuke Maki
    • 途中で抜けちゃったのだけどルビーストがルビーの話をエルティーしてたり、ショートコントしてたり何でもありだった
    • proveは便利なのでもっと活用されたし

09/21

  • Perlで書く結合テスト (40 分) - Masaki Nakagawa
    • Testing Casual で聞いたSETとかSWETの話が半分、あとはPerlで実際にテストする時の話が半分
    • テストについてはAPIとWebアプリの2つのケースのグレーボックステスト(ホワイトボックステストブラックボックステストの中間)
      • APIの時は、IN: HTTP Request/OUT: JSONという観点でテスト
      • ただし、キャッシュやフィクスチャデータなどはテストクライアントから専用のものを準備する
      • Test::Deep + Test::Deep::Matcherなど
      • zigorou/perl-JSVというJSON-Schemaを使うためのモジュールもあるらしい(未CPAN化)
      • API結合テストを本番と同じ環境で回してる
    • WebAppの場合は、MechanizeやSeleniumやWightやBrownie使ってる
    • MechanizeはJavaScript扱えないけど、SeleniumはHTTP Headerが取っこれない
      • ユーザのセッションを保存して別らのテストブラウザでリストアする仕組みを持って対応している
  • これからのPerlプロダクトのかたち (40 分) - Masaaki Goshima
    • 昨年発表したgperlのその後の話
    • gperlから切り出したCompiler::Lexer,CodeGenerator::LLVM,Parser作ったらPerlが別プラットフォーム・別言語環境で動くようになった
    • これらのモジュールがそのうちgperlに還元されていってgperlが生まれ変わる・・・!?
    • 五嶋先生の次回作にご期待くださいエンド
    • contribute待ってる!
    • PPI置き換えたら早くなって便利になる所いっぱいあると思うので期待したい
  • YAPC::Asia Tokyo 2013 特別座談会 「Rubyの良いところ語ってください 〜そんなPerlで大丈夫か?〜」 (60 分) - Daisuke Maki
    • PerlCPAN Authorをリスペクト/Rubyはコミッターをリスペクトする傾向があるみたいな話がありなるほどなーと思った
    • あとPerlは[PBS]aaSみたいなものを使おうとした時にサンプルコードが載ってなくて悲しい
  • 本当にあったレガシーな話 (40 分) - Daisuke Maki
    • 20万行あるmod_perl依存のレガシーコードをPlack化したお話
    • mod_perlは人類を不幸にする / $rは邪悪 / $rは死ぬべき
    • warnをコメントアウトしておいてコミットするのはただのラクガキなのでやめてもらいたい
    • Log::Minimalでデバッグログを履き続けて動作を追っていく
    • デバッグログを履く時は、そのフラグをPerlの定数を使って定義すると定数の畳み込み?のおかげでif (false) { warn ... } となる部分がなかったことになる
    • mod_perlApache::Requestがとにかくつらそうだったけど当時はコレしかなかったんだろうなぁ
    • Apache Handlerを徐々にPlackアプリ化していくのは2段階ぐらいに分けて直していた
    • レガシーコードとは言っても当時としては創意工夫を凝らした最善なコードを書いていたはずで、時とともにレガシーコードとなっていくという例だった
  • スマフォアプリ開発を支える認証認可アーキテクチャ (20 分) - Rieko Suzuki
    • スマフォアプリ向けにOAuth2.0を独自にGrouped Refresh Token拡張をした話
    • SSO実装するために使いますね
  • Lightning Talks Day 2 (60 分) - Daisuke Maki
    • takesakoさん毎年外さないLTで本当に凄いなーと思った
  • Keynote (40 分) - Tomohiro Ikebe
    • マネージャーって大変なんだね()

09/21 - その後自宅にて

YAPC終わった後に、シェアハウスにはてな勢がやってきて、スピーカーのゆううきさんに改めて発表してもらったりした

  • はてなのサーバ管理ツールの話 (40 分) - Yuuki Tsubouchi
    • Mackerelに使われてるTheSchwartzとかSQL::MakerとかClass::Accessor::Lite::Lazyとか知らなかった
  • inside pixiv’s infrastructure〜application cluster side〜 http://inside.pixiv.net/blog/2013/09/17/phpcon2013/ をみんなで眺めた

YAPC楽しかったけど、やっぱり発表したほうがもっと楽しいんだろうなぁという思い。 ただサービス開発してるだけじゃダメだなぁと思ったり、普段会社で書いてるPerlと世間のPerlとの乖離を強く感じた。

会社内でいくらPerlめっちゃ書けるようになっても、世間では誰でも同じことがCPANで既に出来るようになっているじゃんみたいになっていたら怖い。

日々の業務にも創意工夫を持って取り組み、日々情報収集を怠らずしなければと改めて思った2日間だった。前情報を調べなさ過ぎてLTソンが前夜祭の中だけで、参加できなかったのがちょっと残念だった。

来年のYAPCはどうなるのかな?あるのかな?ないのかな?