2013/09/25

YAPC::Asia Tokyo 2013 に行ってきたので、Log::Minimal::Indent というモジュールを公開したという話


2年ぶりに YAPC::Asia Tokyo に参加してきました!

一時は参加も危ぶまれましたが、皆さまのお力添えもあって、無事に参加することができました。ありがとうございましたm(_ _)m

また、YAPCに関わっていたすべての皆様、お疲れ様でした><!

……というのが既に先週末で、時すでに水曜日というこの体たらくなわけですが、

というわけで、ブログ書きますよ><!


今年は、回を重ねるごとにアツくなるAcme大全をゲットしたり、ついでに会場でエロ本と話題だった薄い本を買ったりと、まずは物質的な面で大充実のYAPCでした。
噂の薄い本、こと『雅なPerl入門』。これはエロい!
と見せかけておいて、
実はガチなポストモダンPerl入門書だったりする。
Acme大全は、果たして読み終わることができるのか、よくわかりません。

それから、たまたま最近、仕事の開発の上で GitHub をどう使うべきかねぇ…というのが職場で話題になっていたので、その手のセッションを狙って聞きにいってました。

わかってはいたことですが、この界隈の GitHub 採用率は高いですね。
まさに開発プラットフォームのデファクト・スタンダード。

ちなみに自分の職場でも GitHub を採用しているのですが、人数10人にも満たない子会社ということもあり、GitHub Enterprise ではなく GitHub Business を使っています。
なるべくサーバのお守りはアウトソースしたいですし、たまに GitHub が停まっててもクリティカルになるようなプログラムは運用はしていないし、ぶっちゃけ Enterprise を導入するほどの予算もない!

Enterpriseでなくても、今のところまったく困ってはいません。
むしろ、自前で SVNサーバを立てていたころと比べると、管理・運用の手間がものすっごく楽になりました。

YAPCで聞いた話は色々勉強になりましたが、@yasuhiro_onishiさんのセッションを聞いて、やはり GitHub Issue をそのまま Scrum のバックログのように運用するのは無理だな、とか思いました。

結局、職場で問題になっていたのは、GitHub Issue を完全に順序付けされたリストとして使うことができないこと + 簡単に並び替えできないことなんですよね。

Onishiさんのセッションでは、結局はマネージャーが別に線表を管理しているという話だったので、結局はツールの二重化が必要ということでしょうかね。
よくある、マネージャーがチケットとは別にストーリーリストをExcelで管理しているのと同じですね。
まぁ、マネージャー1人が頑張ればすむ話で、開発者に負担がかかるわけではないですか、それはそれで良いのかも。

といいつつ、弊社の場合は自分がマネージャーに相当するので、なんとか多重管理をさけたい><!というのが本音なのですけど。
ここら当たり、自分の仕事を便利かするツールを作りたいな〜、と久々にふつふつとプログラミング欲が湧いてまいりました。

が、そんなこととは関係なく(ぇ、@lestrrat さんのセッションで「ログ出力するのマジ大事、あとログ出力を階層化するの大事」という話を聞いて、激しく同意したので、Log::Minimal でインデントを補助するためのモジュールを書いてみました。

さっさと書き終えるつもりだったのに、月曜日から台湾出張でバタバタしていたので、時間がかかってしまいました……というわけで、まさかの台北市からのコミットです。

まだちゃんとテストを書いていないので、CPAN には上げずに、とりあえず GitHub に公開してあります

まぁ、Synopsis を見ての通りなのでが、こんなかんじでインデントができますよ:
use Log::Minimal::Indent;

infof("Level zero");
{
    indent_log_scope("foo");  # Indent forward one level in this block.
    warnf "Something to warn";
    {
        indent_log_scope("bar", "MUTE");  # You can mute enter/exit message.
        critf "Something critical happens!";
    }
    infof "Indent back here";
}
infof("Level zero again");
こんなかんじの出力になります↓
2013-09-23T11:39:19 [INFO] Level zero
2013-09-23T11:39:19 [INFO] 
2013-09-23T11:39:19   [WARN] Something to warn
2013-09-23T11:39:19     [CRITICAL] Something critical happens!
2013-09-23T11:39:19   [INFO] Indent back here
2013-09-23T11:39:19 [INFO] 
2013-09-23T11:39:19 [INFO] Level zero again
あと、今回はじめて Minilla を使ってモジュール書き始めたので、何か間違っているかも……

それはともかく…


俺、前回のブログ記事ポストしてから、結婚したり名古屋に転勤になったり、色々ありすぎだろう……そういうことこそブログに書いとけよ…とか思いました。

とりあえず、YAPCの熱が冷めやらず、Nagoya.pm に参加したいとか思っている今日このごろです。

個人スポンサーとして提灯に名入れしてくれました
提灯はあとでスタッフがおいしく…もとい、ありがたく持って帰ってきました