Skip to content

Instantly share code, notes, and snippets.

@keokent
Last active December 23, 2015 14:49
Show Gist options
  • Save keokent/6651099 to your computer and use it in GitHub Desktop.
Save keokent/6651099 to your computer and use it in GitHub Desktop.
YAPC::Asia Tokyo 2013 9-21

YAPC::Asia Tokyo 2013 9-21

特別座談会 「Rubyの良いところ語ってください 〜そんなPerlで大丈夫か?〜」

言語比較

  • そもそもなぜRuby Perl
  • RubyとPerlは似ているところのほうが多い * ここが好き、嫌い
  • Perlは覚えることが多い
  • 自分がやりたいことをコードに落としやすかった
  • 言語を変えて生産性は変わるのか
  • 適材適所
  • RubyはWEB周りのコミュニティが発展している

フレームワークやライブラリ

  • こういうのが Ruby Perl にはある すごい
  • Rubyにはスレッドがあったから
  • Rails

エコシステム

  • CPAN vs rubygems
  • RubyはGitHub上にコミュニティがある
  • PerlはCPAN上にコミュニティがある
  • DevOpsとの関わり
  • DevOps系のツールといえばRubyという印象

コミュニティ

  • どうコミュニティに関わっているか 関わってみてどう思うか 2つのコミュニティの違い
  • Rubyは割りと簡単にコミットできる
  • ときどきみんなで集まる
  • 海外のRUby開発者は日本人にやさしい
  • 日本人にPerlのコミッターは少ない
  • CPANモジュール開発者を大事にする傾向がある

Perlリスク論

  • Perl、Rubyに固執するのではなく、ユーザに価値を届けることのほうが大事
  • リスクはPerlにあるのではなく、Perlに固執することである

スマフォアプリ開発を支える認証認可アーキテクチャ(mixi)

mixy製のアプリ同士で認可の共有

  • ID Passwordの共有案
  • 情報漏えいのリスクが高すぎる
  • 影響範囲がでかい
  • Grouping Refresh Tokenの共有
  • 同じ署名のアプリ同士で認可の共有
  • 不正アクセスできるデータの範囲はユーザが認めたところまで
  • ID Password共有よりもセキュア

PhantomJSによる多岐にわたる広告枠の確実な表示テスト

昔のネット広告をテストするためにはテスト

  • ページをgetしてくる

最近のネット広告

  • 非同期で取得する
  • DOMをあとから挿入するため、いままので方法ではだめ

原始的な方法

  • 目視で確認

PhantomJS

  • Webkitを搭載したGUIなしのブラウザ
  • Javascriptによって挿入されるコンテンツをテストするのに有用

PhantomJSをPerlで利用するためのCPANモジュール

  • Selenium::Remote::Driver

  • Jenckinsによる継続的なテスト実行

  • 関連 CasperJS

  • PhantomJS + Selenium::Remote::Driver + Test:TCP + Test::Moreによって自動化

フルテストも50msで終わらせたい 〜 FreakOutの取り組み 〜

Perlアプリケーションのテストと基礎

  • Test::Moreなど

FreakOutのテスト環境とCI

  • RTB&APIまわり
  • CLI(バッチ処理)
  • 単独のモジュールとして実装
  • ログ処理
  • ダミー用ログを置いてそれを参照

テストの高速化

  • 多くなったテスト
  • 時間がかかりすぎる
  • 手元で修正した分だけテストだけリリースなどの事故リスクが高くなる
  • 実装方針
  • 分散実行させる
  • サーバの追加/メンテが用意
  • 実装
  • クラスタノードへの実行命令/結果受取
  • フルテストを分散で実行して高速化
  • 結果
  • 2000sec が 180secに
  • 手元でやるより push したほうがはやい
  • 「pushしたほうがはやい」により、メンバーの開発状況が把握しやすくなった
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment