Testing Casual Talks #1 を開催して発表してきました #testingcasual

7/24 (水) に Testing Casual Talks #1 を開催しました。

名前からわかるかもしれませんが、個人的には MySQL Casual Talks を大いに参考にさせてもらったのですが、ああいうノリで気軽にイベントやったっていいじゃない、という感じです。

現在テストエンジニアとして仕事しているわけですが、そうなると例えば他社さんではどんなことをされているのか、あるいは他の方がどんなアプローチをとっているのか、など気になってくるわけです。そこで交流できるイベントができればなーと考えていて、この度開催に至ったというところです。

というわけで、自分は "Software Engineer in Test at DeNA" というタイトルで発表しました。スライドは以下です。

@naoya_ito さんのブログで書かれていますが、僕の話は How Google Tests Software
と共通点も多いと思います。なぜならこの話題を Google Testing Blog で見て感銘を受けたことが、僕がSWETを始める原点だったので、自然とそうなりますよね。

これだ!と思って実践し続けてはや1年半、こうして発表できるところまでやっとこれたかなーと。なんとも感慨深い感があります。

あ、もちろん Testing Casual Talks は #2 も開催するつもりですー。2,3ヶ月後くらいにできればいいかな?何か話したいという方がいらっしゃいましたら、ご連絡いただければと思います!

Perl徹底攻略にCartonとcpanmによるモジュール管理の記事を寄稿していました

Perl徹底攻略 (WEB+DB PRESS plus)
大沢 和宏 cho45(さとう) 小林 篤 和田 裕介 嶋田 裕二(xaicron) 牧 大輔(lestrrat) 奥 一穂 広木 大地 伊藤 直也 長野 雅広 藤原 俊一郎 伊藤 智章 まかまか般若波羅蜜 小飼 弾 近藤 嘉雪 中川 勝樹 宮川 達彦 tokuhirom 藤 吾郎(gfx) 村瀬 大輔
技術評論社
売り上げランキング: 1,225

内容は WEB+DB PRESS Vol.75 の Carton & cpanm の記事そのままだったりしますが。。。
あと著者のところに @ikasam_a とかこのブログのURLとか、一切載せ忘れた(レビューでも記事本文しか気にしてなかった)のが悔やまれます。

書籍自体は著者陣がまぁとても豪華の一言に尽きて、内容も基本から応用までしっかり網羅されており、これ一冊読んでおけば間違いないというボリュームです。
今後、自分のチームに新しく来た人には、必須で読んでもらおうかと思っています。

6月22日発売のWEB+DB PRESS Vol.75に寄稿しました

WEB+DB PRESS Vol.75
WEB+DB PRESS Vol.75
posted with amazlet at 13.06.19

技術評論社
売り上げランキング: 789

6/22 発売の WEB+DB PRESS Vol.75 の Perl Hackers Hub で、Carton と cpanm についての記事を書きました。内容はざっくりこんな感じです。

  • Perl のモジュール管理の現状について
  • CPAN と周辺事情
  • cpanm の紹介と使い方
  • Carton の紹介と使い方

cpanm や Carton については、現在の安定版をベースに、セットアップから基本的な使い方までひと通り抑えたつもりです。

ところで Carton って実はバージョンがまだ 0.9.x で、ちょうど今 1.0 リリースに向けて宮川さんが鋭意開発中なので、大きな変更あったらどうしようとか結構ドキドキしながら書いてました。今後の展開次第では、記事の内容と使い方が変わる可能性もあることをご了承下さい。

Carton や cpanm に興味のある方もない方も、是非ご一読下さい!

Furl can handle previous request info

https://metacpan.org/release/TOKUHIROM/Furl-2.08

Furl-2.08 で Furl::Request が取り込まれて、keep_request フラグで HTTP::Response->request 的なことができるようになりました。

my $f = Furl->new(keep_request => 1);

my $res = $f->request(...);

print "[request]\n";
print $res->request->as_http_request->as_string; # ok convert Furl::Request to HTTP::Request
print "[response]\n";
print $res->as_http_response->as_string;

他にも、Furl->request に Furl::Request が直接渡せたりします。

my $req = Furl::Request->new(GET => 'http://example.com/');
my $res = Furl->new->request($req);

request dump したい用途があって今まで LWP 使ってたんだけど、これで乗り換えられる。

require "rspec/autorun" すると ruby で spec が実行できる

これまた知らんかった。へー。

で exe/rspec 見るとこう。

#!/usr/bin/env ruby

begin
  require 'rspec/autorun'
rescue LoadError
  $stderr.puts <<-EOS
#{'*'*50}
  Could not find 'rspec/autorun'

  This may happen if you're using rubygems as your package manager, but it is not
  being required through some mechanism before executing the rspec command.

  You may need to do one of the following in your shell:

    # for bash/zsh
    export RUBYOPT=rubygems

    # for csh, etc.
    set RUBYOPT=rubygems

  For background, please see http://gist.github.com/54177.
#{'*'*50}
  EOS
  exit(1)
end

require "rspec/autorun" してるだけだったという。。。

RSpec の config.include で特定パスだけに適用する

:example_group オプション使ってできるの恥ずかしながら知りませんでした。

RSpec.configure do |c|
  c.include FooBarHelper, :example_group => { :file_path => %r<spec/requests/foobar> }
end

これ便利やな。

CartonConference で話した

CartonConference で話しました。
実は最初 Catron Hackathon と勘違いしてて、軽いノリで「いいよ」って言ったら、気がついたら基調講演になってた。

昨日 cpanm-1.6000 & carton-v0.9.10 がリリースされたので、自分的まとめも兼ねて、現状での Bundler との比較をしてみました。細かいところまだある感じなんでまた実装していきたいなー、とか思った。