前夜祭
前夜祭では昨年のLTソンと同じくらいの熱気が会場を沸かせ、ときにはApache::LogFormat::CompileとかNorikuraとか真面目なプロダクトの紹介もありつつ、Acme系のはなしなどいろいろあっておもしろかったです。
ぼくも熱気に当てられて飛び込みLTとかやりました。ネタのつもりだったけど滑って残念な感じですみませんでした。
なお、スライドでも触れてる通り、ポチポチゲーの印象がつよいソシャゲですが、
最近はパズドラなどゲームゲームしているものも多く、遊ぶのも開発するのも面白いものが多いですので、
この機会に遊んでみては如何でしょうか。
中で触れてる奴についてはごにょごにょしてる最中ですの気になる方はで続報をお待ち頂ければと思います。
1日目
自分の発表まで資料の見直しと圧縮やらを繰り返しつつトークを聴いていました。
@rjbs さんのトークはPerl5.18あたりで入った新機能や廃止されるかもしれない機能、Perl開発の実態についての紹介でした。ガンガンいい感じの機能いれてこうぜって感じのアツいトークだった気がします。英語勉強しようと思いました。
黙ってコード書けよハゲじゃないけど、欲しい機能があるならコードを書く。助けを求めても良い。どうしても難しそうならp5pに相談。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
id:songmu さんのDBまわりのはなしは、(たぶん)同業種かつ同職種である故か、知ってるところはうんうんうんとすごい勢いで同意したり、しらなかったところは id:kfly8 と「これやろうぜ!!」って盛り上がったりしました。
DBIx::Schema::DSL、どういうとこがうれしいんだろって思ってたけど、default値をperl経由で渡せるの、だいぶアツい。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
schemaは生SQL派だったけど、DBIx::Schema::DSL使ってみようかな。時刻ベースのpartitioningとか実行した時刻から動的にpartition切れるのかな。出来たらかなりアツいな。GitDDLもアツい。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
例外処理の階層化はだいじですね #yapcasia #yapcasia_eventhool
— かるぱねるら (@karupanerura) 2013, 9月 20
DBIx::TransactionManager::EndHook 便利。 sho335++ #yapcasia #yapcasia_eventhool
— かるぱねるら (@karupanerura) 2013, 9月 20
redisはsetとかだいぶ便利だけど、expire設定をちゃんとやらないとつらい。冗長化つらい。すごく同意。 #yapcasia #yapcasia_eventhool
— かるぱねるら (@karupanerura) 2013, 9月 20
id requiredで極力正規化。不要なindexは貼らない。外部キーはレコードロックが発生しがちなのでやらない。 #yapcasia #yapcasia_eventhool
— かるぱねるら (@karupanerura) 2013, 9月 20
mysql_enable_utf8しつつutf8mb4使いたいときはSET NAMES utf8mb4するとよいのかー。知らなかった。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
SET SESSION sql_mode='TRADITIONAL'; についてはあとで調べよう #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
DBIx::QueryLogのexplainオプション便利そう #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
トークが終わった頃には次に聞こうと思っていた id:myfinder さんのRiakのはなしは既に始まっていて、
会場に着いたころには結構話がすすんでしまっていたきがします。
ぼくはRiakについて殆ど知らなかったので、あとで調べて発表のYoutube聴き直しながら勉強しようとおもいました。
riakの知識がなさすぎて話がよくわからなくてつらい
— かるぱねるら (@karupanerura) 2013, 9月 20
お昼は @python_spameggs さんと麺場ハマトラに行きました。熱々濃厚で美味しかったです。
午後は id:yappo さんのメンテナンスしやすいコードを保つためのtool chainの工夫みたいなところで、
現状のsetupスクリプトの課題と、その解決策としてKsgkを作ったという感じの話でした。
だいぶテンションあがりました。
コピペ駆動開発は悪いコトばっかり。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
雛形には本当に必要なものだけを厳選して入れる。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
雛形から作ったプロジェクトはすぐにでもdeploy可能にしておく。開発/本運用どちらも出来るようにしておく。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
危険な操作が出来ないようにグレーなラインは安全側に倒す。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
git submodule & symlink はちょっとやってますがいいですね。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
#yapcasia / “yappo/p5-Ksgk · GitHub” http://t.co/fVMt2EKgla #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
Ksgkアツい!!1111 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
必要最低限の雛形を提示できるっていうのはだいぶ良い感じする #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
このあとぼくの発表でした。
緊張しててカバン背負ったまま壇上に立ち、それに気付いて頭が真っ白になって、アレな感じでした。
詳細は http://karupanerura.hateblo.jp/entry/2013/09/21/164133 をどうぞ。
Youtube見なおしたらやっぱりだいぶ酷くで申し訳なさでいっぱいであります。。。
次こそはと思っているので、来年の運営には少しでも力になれればと思っております。
そのあとは気ままにトーク聴いたりBOF行ったりぶらぶらしてました。
id:ry_mizuki がSpicaという素晴らしいモジュール書いてたのでLTでいいから発表しようぜとpushしたら発表してくれました!
Spicaきた! #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
https://t.co/s6UQuqUGzp #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
Clientライブラリが無い、BtoB向けのAPIやマイナーなサービスのAPIを叩くときとかに重宝すると思います。
万能ではないけどだいたいのケースに対応出来るのでいいかんじです。
CPANにあがるのを
懇親会は去年以上にいろいろな人とおはなし出来て楽しかったし、料理も酒も美味しくて素晴らしかったです!
懇親会スポンサーの:DeNAさんありがとうございました!
懇親会のあとはHubに行ってなんか呑みながらくっちゃべってたきがしますが気が抜けすぎて酔っ払ってあんまり覚えていません。
hubきたけど、奥の部屋いってみたけどガラガラでソファーもあるので休憩みたいなかんじで呑みつつ休む感じになってる #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 20
あと家帰っていろいろ考えて反省とかしてたきがする。
MVCは抽象的、って表現はいま思えば適当ではなかったな。「MVCは必ずしもあなたの書こうとしているアプリケーションの構成要素に対して具体的な紐付けが確定されているものではない」って表現のがたぶん僕の言いたい事に近い。
— かるぱねるら (@karupanerura) 2013, 9月 20
なので具体的な構成要素との紐付けは自分で考えなければいけないけど、チーム内で解釈にブレが出るとカオスになるし、ちょっとイレギュラーな事をやってるとどこに紐付ければ良いか分からなくなるので、具体的に目的のアプリケーションのどの部分とMVCそれぞれが紐づくのか具体化しましょうという。
— かるぱねるら (@karupanerura) 2013, 9月 20
緊張してたので噛まないよう気を付けてゆっくり喋る努力してたけど話す事飛んでしまったりしたし、「えーっと」とか言ってる場面すらあって、しかもスライド圧縮したのにちょっと時間はみ出たり、いろいろ酷かったのでプレゼンは本当に反省。
— かるぱねるら (@karupanerura) 2013, 9月 20
あとMOVEとかMVACとかについても触れようと思ってたけどそれも飛んでしまって悔しかった。完全に練習不足だし、来年は絶対に練習する時間取れるようにもっと早くスライド準備しよう。2週間前から書き始めたけど仕事もプライベートも予定盛りだくさんで捗らなかったし、予測があまかったなー。
— かるぱねるら (@karupanerura) 2013, 9月 20
反省多いけどあとは楽しむだけだ!!!
— かるぱねるら (@karupanerura) 2013, 9月 20
2日目
昨日と開始時刻違うのだった。うっかり。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
はてなさんのはなしきいてる #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
タスク管理に http://t.co/W5Jyz4MECW 、レビューツールとしてGHEつかっている #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
ブログチームはGHEだけでタスク管理をしてるそうで、Github Issueベースでもかなり良さそうな感じする。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
同系統の仕事を同じエンジニアにアサインすると属人化するので意識して担当を変える。効率は一時的に落ちるけど長期的にはメリット大きい。大事だ。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
アサインおみくじだいぶいい感じだ #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
#yapcasia / “shimobayashi/pull-req-label · GitHub” http://t.co/aF6EPzf767 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
カバレッジ専用で1日1回走らせるのだいぶよさそう #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
日本語含まれていないか。なるほど。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
だいぶためになるはなしでした #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
git fluxのはなしききにきた #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
baseブランチ、共通する変更をcommitするのにつかう。よさそう #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
baseブランチを用意するアイディア、だいぶアツい #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
merge revertは挙動が怪しいのではないかということでより確実にするためにreleaseブランチを作りなおしている。なるほど。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
HTTP1.1による擬似ストリーミングかー。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
ランチ交流会、お弁当貰えたのは有難かったけど、食べれるところがイベントホールくらいしかなくて、3人で座れるところがなかったのでバラバラになってしまって結局ぼっちめしになってしまってかなしかった。
— かるぱねるら (@karupanerura) 2013, 9月 21
@mizuki_r 外かーー!!!
— かるぱねるら (@karupanerura) 2013, 9月 21
その発想はなかった!
— かるぱねるら (@karupanerura) 2013, 9月 21
ORMつくるときはモジュール名はAnikiかDBIx::Sushiにすると決めている
— かるぱねるら (@karupanerura) 2013, 9月 21
後輩氏がgithubのはなし聴いてくれるぽいのでemacs来た
— かるぱねるら (@karupanerura) 2013, 9月 21
この時間帯全部聴きたかったけどいい感じに弊社の人分散したのでよかった!
— かるぱねるら (@karupanerura) 2013, 9月 21
C-aとかC-eとかzshとかでもつかえてだいぶ便利ですね #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
M-x help-with-tutorial #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
Emacs Lispのヘルプ、M-x infoに無いと思ったけどやっぱりあったのか!!!11 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
Distributed Setupべんりそう #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
helmだいぶおてがるっぽい #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
perl-completion全然使いこなせてなかった事が発覚。超便利だった! #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
emacs --daemon + emacsclient ちょうべんりです #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
ユーザーの価値観に近づくヒントとして情報通信が発達していなかったときのノウハウが役立つ #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
Cosine距離 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
PDLべんりそう #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
^o^; #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
誰が聞いても気になる理由をユーザーに表示する。だいぶ良さそう。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
環境変数とかを constant.pm で定数畳み込みできるようにして使うと捗りますね。よくやります。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
Sledge経由でApache::Request使った事あるけどかなりカオスな感じでドキュメントの場所もよくわからなくて辛い思いした記憶ある。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
mod_perl disが激しいので質疑応答タイムで @xtetsuji さんとガチバトルが始まるのを密かに期待している #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
だいぶ業が深い感じする #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
Geest便利そう。ISUCONでもだいぶ役立ちそうな気がする。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
Class::Trigger::Lite的なの欲しくなってきますね #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
かわいいFAILきた #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
Server::Starter超つかいたい #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
local %ENV = (%ENV, %$env); みたいなテキトーな感じでも意外とうごいた記憶 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
local $0 だいぶ良い感じな気がする。#yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
lestrratさんのトークだいぶためになった #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
認証認可系女子のひと #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
テスト実行順のシャッフルかー。たしかに手軽に出来そう。 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
弾これ吹いた #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
「猫と和解せよ」 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
mysql-build --plugins すごい #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
テンション維持だいじだ #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
6000行…… #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
あの会社も社名を言ったらマズそうな感じしてくるLT
— かるぱねるら (@karupanerura) 2013, 9月 21
— かるぱねるら (@karupanerura) 2013, 9月 21
http://t.co/7NcqQTnIBX いつのまにかなくなってた #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
「色がみんな違うのが大事」 #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
大変良いはなしだ #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
TMTOWTDI すばらしい文化だとおもいます #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
1131人!! すごいなー #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
おめでとうございます!! #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
おつされさまでした!! #yapcasia
— かるぱねるら (@karupanerura) 2013, 9月 21
silver_sモテそうって話した。
— かるぱねるら (@karupanerura) 2013, 9月 21
グリフォンでビール充しながら話してたけどおもしろかった
— かるぱねるら (@karupanerura) 2013, 9月 21
こんなかんじでした
Hackathon
#yapcasia hackathon 諸事情で参加出来ないので明日ひとりhackathonしようを
— かるぱねるら (@karupanerura) 2013, 9月 22
日曜日は用事があり公式のHackathonには行けなかったので月曜日にひとりHackathonをやりました。
最近、仕事でJavaを書く機会があり、Javaはカジュアルに並列処理を書けるので、
Perlでもカジュアルに並列処理できたらおもしろそうだなと思ってつくりました。
こんなかんじで並列処理が書けます。waitとか考えてなさそうなかんじ、カジュアルです。
use Parallel::Async; my $task1 = async { my $res = ...; return $res; }; my $task2 = async { my $res = ...; return $res; }; my $task3 = async { my $res = ...; return $res; }; my ($res1, $res2, $res3) = $task1->join($task2)->join($task3)->recv();
単純にforkすることやdaemonizeする事もメソッド1つ呼び出せば出来るようなかんじになっております。
isucon予選では即興でのworker代わりに使おうとしましたが時間がありませんでした。*1
けっこういい感じだと思いますので良かったらお使いください。
最後に
素晴らしいイベントをいままで育て、主導して運営してきた id:lestrrat さん、 id:941 さん、スタッフのみなさん、ありがとうございました。
本文中にもちらっと書いておりますが、来年の開催、運営を微力でもお手伝いできればと考えております。
コード書く事くらいしか取り柄がありませんがお力添えできれば幸いです。
*1:本当はResqueとかq4mとか使ったほうがよいはず。去年は時間切れで活きませんでしたがCluntchを使いました。