<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>D-6 [相変わらず根無し]</title>
        <link>http://mt.endeworks.jp/d-6/</link>
        <description></description>
        <language>ja</language>
        <copyright>Copyright 2012</copyright>
        <lastBuildDate>Fri, 06 Jan 2012 09:49:40 +0900</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title>読んだ本</title>
            <description><![CDATA[<div>最近すごく本を読んでいて、しかも乱読と言っていい形ですげぇ手当たり次第読んでるのだけれども、なんとなく「ああ、これは今自分がアウトプットできる時期じゃないからだな」と思い始めている。色々取り入れる時期なのかーとなんとなく思っている</div>

<div>というわけで最近読んだ本。</div>

<table>
<tbody><tr>
<td><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=d604-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4167787016&amp;IS1=1&amp;ref=qf_sp_asin_til&amp;fc1=000000&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=d604-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4122051061&amp;IS1=1&amp;ref=qf_sp_asin_til&amp;fc1=000000&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=d604-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4122051185&amp;IS1=1&amp;ref=qf_sp_asin_til&amp;fc1=000000&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=d604-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4062732068&amp;IS1=1&amp;ref=qf_sp_asin_til&amp;fc1=000000&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
</tr>
</tbody></table>

<div>以下ネタバレを含む感想。</div>
 ]]></description>
            <link>http://mt.endeworks.jp/d-6/2012/01/post-185.html</link>
            <guid>http://mt.endeworks.jp/d-6/2012/01/post-185.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">日常</category>
            
            
            <pubDate>Fri, 06 Jan 2012 09:49:40 +0900</pubDate>
        </item>
        
        <item>
            <title>2012年一発目</title>
            <description><![CDATA[あけましておめでとうございます。<div><br /></div><div>2011年はいろんな人にとってもそうであるように後から考えると人生の転機になるかもしれない年でした。2012年はまだまだ色々自分の生き方というものが変わりそうな気がします。</div><div><br /></div><div>これを書いている今は宮崎の相方の実家でくつろいでおります。ネット環境がないお宅なのでイーモバ経由でつなげていますが、正直回線スピードはイマイチ・・・。義理の姪っ子と遊んでなんかお父さんっぽい事をしてみたり、義理姉の新築の家の庭の造成をすこーーーしだけ手伝ったりしてます。</div><div><br /></div><div>多分ここ15年くらいの間で一番エンジニアっぽくない正月を送ってますわ。</div><div><br /></div><div>あー、2012年か。年明け早々色々やることがあるのでバタバタしそう。迷惑をかけることもあるかと思いますが、よろしくお願い致します。</div>]]></description>
            <link>http://mt.endeworks.jp/d-6/2012/01/2012.html</link>
            <guid>http://mt.endeworks.jp/d-6/2012/01/2012.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">日常</category>
            
            
            <pubDate>Mon, 02 Jan 2012 09:05:03 +0900</pubDate>
        </item>
        
        <item>
            <title>スープ三昧</title>
            <description><![CDATA[近所のイタリアンの店でランチを食べに行ったらスパゲッティの副菜としてサラダかスープを選べるというので迷わずスープを。野菜のポタージュスープだった。これなら多少作り置きできるなと思って家でさっそく似たようなものを作成。<div><br /></div><div>ったって、ジャガイモ、にんじん、タマネギと切り落としベーコンがすでに家にあったので、ベーコンとタマネギを炒めたところでにんじん、ジャガイモを入れて煮るだけ。コンソメ、塩、胡椒とオリーブオイルで味付け。でもせっかくなのでポタージュっぽいものを目指してジャガイモは全部つぶしてちょっととろとろな感じ。</div><div><br /></div><div>うまくできたのか、二人で三食くらいで食べちゃった。</div><div><br /></div><div>今日もスープ的なものを作成。手羽先を弱火でコトコト煮て、大分出汁が出たところでにんじん、椎茸、こんにゃく。こんにゃくは手でちぎってぽいぽい。味の調節は塩、酒、みりん、それに白出汁。白出汁楽だわー。一気においしくなっちゃった。食べる前に茹でて冷凍しておいた小松菜を入れて彩りを。あっさりな手羽先スープ。</div>]]></description>
            <link>http://mt.endeworks.jp/d-6/2011/12/post-184.html</link>
            <guid>http://mt.endeworks.jp/d-6/2011/12/post-184.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">日常</category>
            
            
            <pubDate>Sun, 18 Dec 2011 19:51:22 +0900</pubDate>
        </item>
        
        <item>
            <title>最近読んだ本</title>
            <description><![CDATA[ここ1，2ヶ月で読んだ本。アウトプットの準備的に文章を取り入れてたので結構量がある。<div><br /></div>

<table>
<tr>
<td><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=FFFFFF&IS1=1&npa=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=d604-22&o=9&p=8&l=as1&m=amazon&f=ifr&ref=qf_sp_asin_til&asins=4062749122" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=d604-22&o=9&p=8&l=as1&asins=4062748681&IS1=1&ref=qf_sp_asin_til&fc1=000000&lt1=_blank&m=amazon&lc1=0000FF&bc1=FFFFFF&bg1=FFFFFF&npa=1&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=d604-22&o=9&p=8&l=as1&asins=4062749114&IS1=1&ref=qf_sp_asin_til&fc1=000000&lt1=_blank&m=amazon&lc1=0000FF&bc1=FFFFFF&bg1=FFFFFF&npa=1&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=d604-22&o=9&p=8&l=as1&asins=4061317776&IS1=1&ref=qf_sp_asin_til&fc1=000000&lt1=_blank&m=amazon&lc1=0000FF&bc1=FFFFFF&bg1=FFFFFF&npa=1&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
</tr>
<tr>
<td>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=d604-22&o=9&p=8&l=as1&asins=4334746683&IS1=1&ref=qf_sp_asin_til&fc1=000000&lt1=_blank&m=amazon&lc1=0000FF&bc1=FFFFFF&bg1=FFFFFF&npa=1&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=d604-22&o=9&p=8&l=as1&asins=4122048729&IS1=1&ref=qf_sp_asin_til&fc1=000000&lt1=_blank&m=amazon&lc1=0000FF&bc1=FFFFFF&bg1=FFFFFF&npa=1&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=d604-22&o=9&p=8&l=as1&asins=4122050820&IS1=1&ref=qf_sp_asin_til&fc1=000000&lt1=_blank&m=amazon&lc1=0000FF&bc1=FFFFFF&bg1=FFFFFF&npa=1&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=d604-22&o=9&p=8&l=as1&asins=416711013X&IS1=1&ref=qf_sp_asin_til&fc1=000000&lt1=_blank&m=amazon&lc1=0000FF&bc1=FFFFFF&bg1=FFFFFF&npa=1&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
</tr>
</table>

<div>村上春樹の作品は安定のおもしろさだけど、最初に「羊〜」を読んだので鼠やジェイがあちこちに出てきて若干混乱。ドラマ化された謎解き系のほうはまぁまぁ。飯を食いながら読んでも話は追えた。</div><div><br /></div><div>小説は基本的に時期が来ると突然狂ったように読み出す。そしてその時興味があった作家のシリーズを読み終わるか、興味がなくなるとまたパタッと読まなくなる。そんなサイクルを繰り返してるな。</div><div><br /></div>]]></description>
            <link>http://mt.endeworks.jp/d-6/2011/12/post-183.html</link>
            <guid>http://mt.endeworks.jp/d-6/2011/12/post-183.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">日常</category>
            
            
            <pubDate>Sun, 18 Dec 2011 19:28:00 +0900</pubDate>
        </item>
        
        <item>
            <title>大根 in コンビニ</title>
            <description><![CDATA[ここ半年くらい諸事情でほぼ毎週実家に帰ってちょっと諸々用事を済ませている。<div><br /></div><div>先週は嫁と一緒に行ったのだが、ちょっとコンビニに行きたいというので近くのコンビニに寄ったところ、なんだこりゃ、コンビニのくせして葉っぱが全部ついた大根とか白菜とか「ハナマサですか？」みたいな感じのびっくりな品揃え。うちの実家の近くは意外と畑とかある地域なんでどうも近くの畑で朝取れた野菜をそこで売ってるらしい。</div><div><br /></div><div>嫁がカリカリ梅を買って外で待っていた間に白菜と葉っぱ付きの大根を購入したらてっきりジュースを買ってくると思ってた嫁にびっくりされた。</div><div><br /></div><div>大根はまだ全然使ってないんだけど、葉っぱはいつまでもつけておくと（多分）そっちに大根の養分が吸われちゃってまずいので、まずはこれを先に調理。っていうか、個人的にはこっちのほうが主目的。なぜか子供の頃から大根の葉っぱを甘辛く炒めたのが大好きで大好きで・・・</div><div><br /></div><div>まぁそんなわけで洗って5〜6ミリの長さに切った大根の葉っぱ・茎をざざざっと油で炒めて、お酒とつゆの素で基本の味付け。気持ち出汁の素を追加して、あとは砂糖と醤油で味を調える。できあがったところで火を止めてごま油。はー、うまそう。</div><div><br /></div><div>苦みと甘みと醤油とごま油が渾然一体になってこりゃたまらん。炊きたてご飯と一緒にどうぞ。</div><div><br /></div><div>もっと普段から葉っぱ付きの大根が買いたいよ！</div>]]></description>
            <link>http://mt.endeworks.jp/d-6/2011/11/daikon-in-convenience-store.html</link>
            <guid>http://mt.endeworks.jp/d-6/2011/11/daikon-in-convenience-store.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">日常</category>
            
            
            <pubDate>Sun, 27 Nov 2011 02:38:39 +0900</pubDate>
        </item>
        
        <item>
            <title>梨を煮るなど。</title>
            <description><![CDATA[この前嫁の実家のほうで不幸があって、日帰りの強行軍でちょっとだけお通夜に参加してきた。その流れで嫁の実家のほうからこの間そういう儀式で使う見栄えはするけどそんなに単体では格別うまい、ってほどじゃない果物（あるよね？）が送られてきた。<div><br /></div><div>子供の頭くらいある梨だったんだけど、2個送られてきたうちの一個のそのさらに半分をとりあえず味見したらまぁまずくはないが特にうまいというわけでもない。さて、この大量にある梨をどうやって消費してやろうかと考えてたら、酒の棚の奥の方からふるーーーーい未開封のアイスワインを発見。開けてみたら全然良い香りだったのでじゃあこいつを使っちゃおうということで梨をアイスワインと大量の砂糖で煮てコンポートっぽくしてみた。</div><div><br /></div><div>作ってる間に嫁に「これどう使いたい？」って聞いたら「ゼリーとかにいれたいなー」というのでじゃあ、と砂糖を追加。常温だと結構がつんと来る甘さまで調節して、できあがり。味はそれほどでもなかったこの梨、すごくしっかりしてたので実はこういう用途にすごく合ってた模様。全然煮崩れしなかった。</div><div><br /></div><div>なにもかもやっぱりTPOだなぁ。</div>]]></description>
            <link>http://mt.endeworks.jp/d-6/2011/11/post-182.html</link>
            <guid>http://mt.endeworks.jp/d-6/2011/11/post-182.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">日常</category>
            
            
            <pubDate>Sat, 26 Nov 2011 16:11:26 +0900</pubDate>
        </item>
        
        <item>
            <title>我が家のご飯</title>
            <description><![CDATA[<div style="text-align: left;">金曜、土曜の夜ご飯は材料があまってしまったので両日とも鍋。うちで「鍋」というと、昆布出汁にもやしとほうれん草（あればネギも）、マロニー煮つつ、しゃぶしゃぶ用の豚肉でしゃぶしゃぶしながら野菜と豚肉とをポン酢でわしゃわしゃ食べる、というもの。何回食べても飽きの来ないシンプルな鍋。</div><div style="text-align: left;"><br /></div><div style="text-align: left;">日曜日。日本人は突然パンケーキ好きになったんですかね。原宿の「Eggs N' Things」、自由が丘の「花きゃべつ」と来て今度は三軒茶屋のパンケーキ屋「パンケーキママカフェVoiVoi」に行ったらすげぇ長蛇の列で普通に諦めた。</div><div style="text-align: left;"><br /></div><div style="text-align: left;">・・ので、その目の前にあったイタリアンのお店に勢いで入ってみた：「<a href="http://r.tabelog.com/tokyo/A1317/A131706/13128533/">トラットリア・ピッツェリア ラルテ</a>」。ランチコース2000円という、まぁまぁな値段はしたものの、なかなかのおいしさ。今度夜にも来てみたい。ちなみに本当はもっと詳細レポートしようと思ってたんだけど、写真を撮る前に全部食っちゃった。</div><div style="text-align: left;"><br /></div><div style="text-align: left;">プールで小一時間泳いで、夜はひっつみ。うちのひっつみは基本的には関東風雑炊的なものを作って、そこに先に練っておいた小麦粉をちぎって入れて茹でるだけ。この小麦粉のヤツがひっつみと呼ばれるらしいですね。</div><div style="text-align: left;"><br /></div><div style="text-align: left;">ちなみにちょっと小麦粉を多く練りすぎたので、残った分は明日の朝伸ばしてチャパティにする。これまた自家製の<a href="http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A0%E3%82%B9">フムス</a>で朝ご飯にする予定。フムスはアメリカにいるときに大好きだったんだけど、今年アメリカに行ったとき嫁に食べさせたらなかなか気に入ってもらえたのでどこかで売ってないか探したけどぱっとみつからなかったので自家製に挑戦してみた。</div><div style="text-align: left;"><br /></div><div style="text-align: left;">自家製って言ったって、基本的にはレンズ豆、胡麻ペースト、オリーブオイル、生姜とニンニク少々をフードプロセッサで混ぜて、適当に味を調節するだけ。簡単ですね！</div><div style="text-align: left;"><br /></div><div style="text-align: left;">うちではここにオリーブをたっぷりめに入れた。あとマヨネーズで味を調節。ひよこ豆一缶で二人で二食分できちゃうよ。パンとかにつけて食べてくだされ。</div><div style="text-align: left;"><br /></div><div style="text-align: left;">ってことで我が家のご飯でした。</div>]]></description>
            <link>http://mt.endeworks.jp/d-6/2011/11/post-181.html</link>
            <guid>http://mt.endeworks.jp/d-6/2011/11/post-181.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">日常</category>
            
            
            <pubDate>Sun, 13 Nov 2011 19:31:15 +0900</pubDate>
        </item>
        
        <item>
            <title>週末</title>
            <description><![CDATA[<img src="http://img.pics.livedoor.com/011/8/a/8a27e89fcb1f291352b2-M.jpg" style="float: left; margin: 10px" />

<div>最近嫁がアメリカンブレックファーストが嫌いじゃない、ということがわかったので2，3週間に一回パンケーキ的なものを食べるというのが続いている。この週末は自由が丘の「<a href="http://r.tabelog.com/tokyo/A1317/A131703/13017705/">花きゃべつ</a>」で朝ご飯を食べた。表参道の<a href="http://r.tabelog.com/tokyo/A1306/A130601/13105121/">Eggs N' Things</a>よりかは完全に日本っぽい感じの味だったけど、うまかった。また行ってもいいけど、やっぱたけぇなぁ。二人で食べに行って2000円くらいが理想なんだけど。どっかにないだろうか。</div><div><br /></div><div>ちょいとぶらぶらして、それでもまた嫁がなんか遊びたいオーラを出してたので急遽映画を見に行くことに。「すてきな金縛り」を見た。うわー！すげー！っていう映画ではなかったけど、2時間以上全く飽きなかったのでいい感じ。</div><div><br /></div><div>夜は野菜が足りてなかったので大根とキュウリをスティック野菜にしたのと、デパ地下で鰤の刺身を買ってきたのでそれを食べた。</div>]]></description>
            <link>http://mt.endeworks.jp/d-6/2011/11/post-180.html</link>
            <guid>http://mt.endeworks.jp/d-6/2011/11/post-180.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">日常</category>
            
            
            <pubDate>Sun, 06 Nov 2011 22:15:26 +0900</pubDate>
        </item>
        
        <item>
            <title>西麻布「またぎ」2度目。</title>
            <description><![CDATA[<img src="http://img.pics.livedoor.com/011/3/d/3d85b6e1669fd5499f06-M.jpg" style="margin: 10px; float: left" />
<div>ずいぶん前に行ったきりだった<a href="http://r.tabelog.com/tokyo/A1307/A130701/13042734/dtlrvwlst/1443225/">またぎ</a>にようやく再訪。今回は金目鯛、鹿、雉（一羽）を焼きで。そして最後に猪熊鍋を食べた。正直言うと前回行った時より鹿と雉がすげえええええええええええうまかった。</div><div><br /></div><div>前回行った時は多分鹿は冷凍だったし、記事は一羽全部じゃなかったので内蔵とかを食べられなかった。今回の鹿はシーズン中ということもあって、刺身のようなあつさの鹿肉が・・・あああ・・・うまい・・・</div><div><br /></div><div>雉もささみを刺身状態で出してくれたのだけど、ねっとり・・・うまい・・・。そして焼いた方の脂が・・・とろけて・・・うまい・・・ああ・・うっとり。<br /><div><br /></div>

<img src="http://img.pics.livedoor.com/012/c/c/cc2f052196ab4a1dd5b0-M.jpg" style="float: right; margin: 10px" />
<div>決して安い店じゃないけど、東京でこの味を求めるならお値打ちだと思うなー・・・うまかったわ・・・また行きたい。kazuhoさん！さそって！</div></div><div><br /></div><div>思い出してたらまた行きたくなってきた。</div>]]></description>
            <link>http://mt.endeworks.jp/d-6/2011/11/gibier.html</link>
            <guid>http://mt.endeworks.jp/d-6/2011/11/gibier.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">日常</category>
            
            
            <pubDate>Fri, 04 Nov 2011 22:28:09 +0900</pubDate>
        </item>
        
        <item>
            <title>YAPC::Asia Tokyo 2011 振り返り</title>
            <description><![CDATA[<div><a href="http://yapcasia.org/2011/">YAPC::Asia Tokyo 2011</a>の運営側の話は大分参加者側とは違うとは思いますが、一応記録として書いておきますね。あと以下様々な情報は私lestrratからみた一方的な話なのでひょっとしたら間違ってるかもしれませんが、その場合は随時ご指摘をお願い致します。</div>

<div><br /></div>


<img src="http://img.pics.livedoor.com/012/2/8/28f821655f6af23349ba-L.JPG" />


<div><br /></div>



<div style="font-weight: bold; font-size:1.5em">今年のYAPCの準備</div><div><br /></div>
<div>ぶっちゃけ運営側、そして少なくとも僕の視点からは941さんとのタッグがあまりにもキレイに連携できてて、YAPCの準備は恐ろしいくらい負担の少ない感じでした。</div><div><br /></div><div>最初から去年より責任機能を大幅に委譲しようというコンセンサスも取れてたし（例：懇親会手配、Tシャツ準備、プロジェクター等の備品準備等はDeNA/mixi社からの方達と分担しました）、去年は大幅な黒字を実現させたため多少の冒険をする余裕があったので去年の反省を反映させる色んな手段も打てました。</div><div><br /></div><img src="http://img.pics.livedoor.com/011/b/a/bade2c152b87e90c98d5-M.JPG" style="float: left; margin: 10px" /><div>941さんはフォワードのほうにいて、色んなスポンサーとの話をまとめたり、企画をしてもらいました。僕はそれらを後ろで聞いてソロバンをはじき、そこからどれだけの支出が可能か、損をするならどこで、利益を得るならどこなのかを考え、企画の調整を手伝いつつ、海外ゲストとの調整、<a href="http://mt.endeworks.jp/d-6/2011/10/yapcasia-tokyo-2011-backend-apps.html">システムの開発</a>なんかをしました。まぁどちらかというとアンカー的なポジションでしょうかね。</div><div><br /></div><div>で、まぁ僕が気づかない部分を彼は察知して「これやらないといけなくね？」とか言ってくれるし、僕は逆に運用をどうしたいかを聞いてシステムを作ったりとかして彼が多分考えたくもない部分をごりごりやっておりました。僕的にはこれが非常に安心できる縦のラインとして機能してて、あとはパンフ・Tシャツ・シール等をハンドルしてくれた<a href="http://www.design24c.com/">デザイナーさん</a>や、前述の懇親会やら備品の調達やらに強いチームメイトの方々にせっせとパスを送るという形がうまく機能したなーと思っています。</div><div><br /></div>

<div style="font-weight: bold; font-size:1.5em">今年のYAPC当日</div><div><br /></div>

<img src="http://img.pics.livedoor.com/012/0/1/01ffbd880241b2612e76-M.JPG" style="float: left; margin: 10px" /><div>さて、当日。これもまた前述の941さんのうまいボランティア募集の手口で、総勢４０名オーバーのボランティアスタッフの方々が入ってくれたので正直肉体的な披露はこの６年の中で最も少ないかもしれません。</div><div><br /></div><div>チームの体制を941さんがアドリブで決め、これまたうまくパスが回るようにしてくれたおかげで僕はずーっとお金の出し入れと若干イレギュラーなイベント（技評さんのインタビューや、スイーツエリアでの発表、LTの管理等）に集中していることができました。特に搬入・撤収に関しては佐川の引き取りが延々２時間ほど来ないという点以外は記録的に早く、正確に終わりましたね。これは一部スタッフが勝手が分かっている人だったというのと、やっぱりこういうのがうまい人っているんだなぁ、と僕が心の底で感動していたmrmtさんやs_tanakaさんが色々と前もって根回ししてくれてたおかげでしょうね。あ、もちろんノベルティの整理はzigorouさんのおかげです。</div><div><br /></div>

<img src="http://img.pics.livedoor.com/011/1/7/17f8e07068a549da97c9-M.JPG" style="float: left; margin: 10px" /><div><span style="font-weight: bold">受付</span>は実はmilanoさんが王子として君臨されていたのですが、彼もまた勝手が分かっているので特に細かい指示は必要なく、安心していられました。そして前のエントリにも書きましたが、女性スタッフ！気配りが細かい！特に僕はその時コメントしませんでしたが、誰が言い出したのかノベルティの置き方や用意の仕方を先に色々と考えて相談したりして、プロセスをスムーズにできるようにしてましたね。なので僕は受け付け業務に関しては安心してその横でお金をカウントしたりできてたわけです。</div><div><br /></div>

<div><span style="text-decoration: line-through">ちんちんのついている人達</span>男性ボランティアの方達は今回華やかだった女性陣と比べると目立つ・目立たないでという点では若干割を食ってしまうのですが、裏方仕事では彼らが一番重要で、彼らのおかげで我々老人一歩手前の３０代中盤は大分楽をさせていただきました。</div><div><br /></div><div>搬入・撤収は前述の準備をしていても、実際に荷物を動かす人手がなければみんなで何往復もしなければならず、相当辛いのです。屈強な男どもがのっしのっしとプロジェクター、スクリーン、ノベルティ、机、椅子、ゴミ、その他を運んでくれました。</div><div><br /></div><div>あとは各ホールでは録画、進行などを皆さんに担当してもらいました。が、僕はもう「問題があれば報告があるだろう」くらいのつもりでいたので大分余裕こいてました。みんなありがとう！おいちゃん嬉しいよ！</div><div><br /></div><div>というわけで僕個人としては疲れたけど、やばいと思うほどは疲れなかった、という感じかな。しかし喉は痛い。とほほ。</div><div><br /></div><div><br /></div>

<div style="font-weight: bold; font-size:1.5em">来年について</div>
<div><br /></div><div>クロージングで来年の事は分からないよ、って言いました。<span style="font-weight: bold; font-style: italic">「来年はできるかどうかわからないですねぇ」って一緒に話してたはずなのに</span>、打ち上げ前に「最後に感動に水をさすような事を言うなんて！」って後から941さんに言われてハシゴをはずされた感満載の僕です。今後もにこやかに付き合うことはできますが、許さない＞941。</div><div><br /></div><div>まぁぶっちゃけやれるかやれないかだったらきっとやれるんだろうけど、僕は来年も同じ体制でやることに関しては非常に不安を抱いています。</div><div><br /></div><div>YAPCの最後に「偶然」の話をしたけど、これ「そういうこともあるよね」レベルの話じゃなくて、本当にタイミングがただただあった、っていう事だと思うんですよね。３０歳前半の僕は自分の会社をやっていたりして時間があり、なおかつ独身でした。やる気も当然あったし。</div><div><br /></div><div>でも僕は去年会社をたたんで勤め人に戻りました。結婚をしました。いつか子供も欲しいです。そんな風に人間のおかれている状況というのは変わっていきます（さらに言えば、皆さんご存じの通り自分は英語も喋れるので、日本以外の国でまた暮らす可能性だってゼロではありません）。僕自身がやりたいとかやりたくないではなく、「やれない」かもしれないのは当たり前の事ですよね。</div><div><br /></div><div>で、それは当然941さんだって条件は同じわけで。</div><div><br /></div><div>YAPC::Asia というものが万難を排してまで続けていくべきかどうかはわかりませんが、しかし今後というものは常に「今」イベントを運営している人ではなくて、次の世代の人達が考えなければこういう公的なイベントは続いていく事は難しいのではないかなぁ。</div><div><br /></div><div>僕ら現スタッフはまだ僕らがいざというときにフルパワーをコミットできる状態の時にすでに一歩後ろに下がって、次の世代に諸々をバトンタッチしていかなければ新陳代謝は図れないのではないかなと思います。そしてこれは禅譲できる類のものではなくて、次の世代が「俺がやるよ！」って言わないと多分ずるずるとこのままになっていく類のものなんではないかなぁと僕は思っています。</div><div><br /></div><div><div>僕は2008年のYAPCの後<span style="font-weight: bold; font-style: italic">「これ、（最後に帳尻が合うにせよ）個人の財布でまかなって、手弁当だけでやってるのに任せてたらいつかこのイベントつぶれちゃうよ」</span>と思いました。そしてそれを避けるため（それのためだけではないけど）に私費を投じてJPAという法人を作り、Perlに関する何かを行う時に必要な「お金の流れを作る」という目標を持ってYAPCも財政的に健全になるように考えて上記のような活動をしてきてました。</div><div><br /></div><div>YAPCのイベントとしての成功は941さんをはじめとする方々の力が大きいんだけど、お金の回り方やイベントが存続できるためのの施策としては</div><div><br /></div><div><ol><li>とにかくPerlを使っている会社を巻き込む事（だけど、新製品展示会みたいなつまらないイベントにはしない）</li><li>次のイベントの宣材のため、記録のためにプロのカメラマンを雇うこと</li><li>マーケティングのために徹底的にブログを書くことを進める事</li></ol>というような事をやってきました。まだまだ問題も山積みだけれども、一定の効果は出始めてると思います。それはYAPCが莫大ではないにしろ、次回の開催について夢を見られるくらいの利益をあげられるイベントになってきた事で実感してる。</div></div><div><br /></div><div>とりあえず開催にこぎ着けるまでの下地は大分作ったよ。<span style="font-weight:bold">「いや！YAPCはもっと進化できる！俺にやらせろ！」</span>って言いながら僕らの手からYAPCをもぎとっていってくれよ。</div><div><br /></div>

<div style="font-weight: bold; font-size:1.5em">クロージング</div><div><br /></div>

<div>今回僕の檀上での出番はこれだけ！</div>

<div style="width:425px" id="__ss_9720941"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/lestrrat/yapcasia-tokyo-2011-closing" title="YAPC::Asia Tokyo 2011 Closing" target="_blank">YAPC::Asia Tokyo 2011 Closing</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/9720941" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/lestrrat" target="_blank">lestrrat</a> </div> </div>

<div style="font-weight: bold; font-size:1.5em">まとめ</div><div><br /></div>

<a href="http://twitter.com/#!/miyagawa/status/124780807654080513"><img src="http://img.pics.livedoor.com/012/1/3/135642e062e12c246511-M.png" style="float: left; margin: 10px" border="0" /></a>
<div>まぁそんな感じで史上最大のYAPCでした。参加者672人という数はカンファレンスとしてはそれほどではないかもしれませんが、実は海外のYAPCでも多分400人以上の規模はないと思います。その中でもYAPC::Asia はさらに大きくなれました。これも一重に興味を持って頂いた皆さんのおかげです。ありがとうございました。</div><div><br /></div><div>今後どうなるにせよ、みんなの心に響くカンファレンスの場を提供できることには単純に損得では表すことのできない達成感がありますね。来週になったらフィードバックアンケートとかするかもです。</div><div><br /></div><div>来てくれた皆さん、喋ってくれたみなさん、手伝ってくれたみなさん、ありがとうございました。</div><div><br /></div><div>僕のYAPCはあと何個か請求書を処理して、941さんに寿司を食べさせたら終わります。</div><div><br /></div><div><a href="http://yapcasia.org/2012/">To be continued...?</a></div><div><br /></div><div><br /></div>

<div style="font-weight: bold; font-size:1.5em">おまけ</div><div><br /></div><div>僕の日記で「Yappoはああいうけど・・・」って書いたらポイントを稼ぐために朝から「女性限定で」って言ってお菓子のお土産をもってきた某Yapp○氏</div><div><br /></div>

<img src="http://img.pics.livedoor.com/011/b/8/b84d2f258671f8b04978-M.JPG" />
<img src="http://img.pics.livedoor.com/012/e/d/edd8657cd86703c6e1b3-M.JPG" /><div><br />

<div>誰も食べる時間がなかったので最後に野郎どもも一緒にガツガツ食べました。ごちそうさまです</div></div>]]></description>
            <link>http://mt.endeworks.jp/d-6/2011/10/yapcasia-tokyo-2011-organizers-side.html</link>
            <guid>http://mt.endeworks.jp/d-6/2011/10/yapcasia-tokyo-2011-organizers-side.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">日常</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">yapc</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">yapcasia</category>
            
            <pubDate>Sun, 16 Oct 2011 17:33:53 +0900</pubDate>
        </item>
        
        <item>
            <title>YAPC::Asia Tokyo 2011のシステム</title>
            <description><![CDATA[<div>YAPCの裏方で動いているシステム。dotCloud上で トーク用のインスタンス、チケット用のインスタンス、チェックイン用のインスタンス、そしてDBが走っております。</div><div><br /></div><div>トーク用とチケット用を分けたのは、リリースのタイミングとかが全然違うので、別々に開発したから。面倒っていえば面倒だけど、開発のタイミングという意味ではやりやすかった。</div><div><br /></div><div>チェックイン用のインスタンスはスタッフ向け。バーコードリーダーで「ぴっ」ってやられたと思うけど、バーコードリーダーはただのキーボードのような扱いになっているので、単純にフォームのテキストフィールドに所定のテキストを送って、あとはフォームで処理してるだけ。</div><div><br /></div><div>これらのdotCloudでデプロイしているアプリを http://yapcasia.org/2011/ 越しにプロキシしてる。簡単だね！ 今回はサーバーの再起動とかそういうのを全部適当にやれて非常に楽だった。dotCloud++&nbsp;</div><div><br /></div><div>逆にdotCloud--だったのは、ライブになったシステムに改修を加える際に一瞬アプリが落ちる事。404 not foundとかでちゃうのがヒヤヒヤした。まぁYAPC程度の規模のイベントなら24/7であがってる必要はないから現実問題としてはこれはこれでOK。あと、開発を始めてから途中でdotCloudのサーバーのデプロイ方式が微妙に変わったので壊れるんじゃないかとヒヤヒヤしたけど、実際は警告を無視してたら普通に動いた。まぁ、なんか知らんけど動くんじゃないかとは思ってたｗ</div><div><br /></div><div>今後もこういう必要性がでてきたらdotCloudは積極活用したい。YAPCのスポンサー（miyagawaさんの旅費を負担していただいた）だけど、スポンサーじゃなくてもマジおすすめ。</div><div><br /></div><div>YAPCのシステムについて、現在時点での反省点：</div><div><br /></div><div>1. トーク応募者のメアドをtwitter/facebook認証からぶっこぬくのを忘れた。</div><div><br /></div><div>ML等で連絡できませんでしたが、今回はtwitterで大丈夫だろう、と踏んで白を切りました</div><div><br /></div><div>2. 投票が・・・</div><div><br /></div><div>投票できるべきでないところに投票できてた。ゲストスピーカーのトークも入ってたんだけど、これは注意書きをちゃんとしておけば単純に名誉として有りだと思うので、あまり問題視してない。LTへの応募はまずかった。あれはちょっと焦った。ちなみに、なぜ気づいたかというと、本当はLT Day 1が投票数第一位だったからなんだね！select count(*)してびっくりした！</div><div><br /></div><div>3. チェックインが・・・</div><div><br /></div><div>テストDBにはあったんだけど本番DBにはまだ追加してないカラムがあることが前夜祭の時点で発覚。焦ってカラムを追加して、UPDATEを人数分かけまくった。焦った。あと、二日通し券の人だけストラップの色がでてなかったんだけど、これは人力でカバーしてもらった。</div><div><br /></div><div><br /></div><div><br /></div>という感じ・・・<div><br /></div><div>お世辞にも作り込んでいるとは言えないYAPCのシステムですが、まぁソースコードをパートタイムで書いているのが僕一人で、しかも僕はユーザーフレンドリー設計とかが苦手な人なのでちょっと多めに見てくだしあ・・・</div>]]></description>
            <link>http://mt.endeworks.jp/d-6/2011/10/yapcasia-tokyo-2011-backend-apps.html</link>
            <guid>http://mt.endeworks.jp/d-6/2011/10/yapcasia-tokyo-2011-backend-apps.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">日常</category>
            
            
            <pubDate>Sun, 16 Oct 2011 08:34:00 +0900</pubDate>
        </item>
        
        <item>
            <title>YAPC::Asia Tokyo 2011 1日目・・・</title>
            <description><![CDATA[運営者として３回目のYAPC::Asia Tokyo 2011。おっさんになってきたと感じる。<div><br /></div><div>前夜祭の時点からすでに腰痛。１日目に大岡山に向かう時大井町線のラッシュに巻き込まれ、途中でタクシーで移動しなかった自分を呪ったり。昼間忙しく仕事してたら腰痛は大分よくなったけど、毎年恒例の講堂の階段を何本もダッシュであがったりおりたりを繰り返していたら腰、ケツ、足がパンパン。</div><div><br /></div><div>家に帰ってきて嫁にグリグリとマッサージしてもらったら少し緩和された感じ・・・</div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div>なんて、おっさんは肉体のクォリティがどんどん落ちてるからこういうことを言う物の、今年のYAPCはとにかくボランティアスタッフの数が多くて多分スタッフとして参加していた2006, 2007, 2008、運営者としての2009,2010,2011の中で肉体的には実は一番楽。</div><div><br /></div><div>女性が多いのも嬉しい。華やかなのはそれもそうなんだけど、自分も含めて野郎という物は基本的にガサツなので、最初にお客さんと向かい合う受付のあたり（ノベルティの準備も含め）に女性がいると細やかな気配りを感じて、個人的にはすごく印象がよかった。Yappoはああいうけど、今年は笑顔が大変よろしい笑顔美人さんばかりでおっさんは実は多少ドキドキしながらスタッフの方達とお仕事をしております。</div><div><br /></div><div>そういえば去年も売ってたPerl Tシャツは例の商標の件とか、ああいう活動のサポートを目的としているお金なので、まぁ軽くおたすけ、という感じでお金を落としてくれると嬉しい。去年売った分で原価分がやっと確保できたので、今年の分で利益になる感じです。よろしくお願い致します。</div><div><br /></div><div>で、なぜか午前３時に起きちゃったのでこのエントリ書いてる。あともう一日！</div><div><br /></div><div>みんな、ブログも書いてねー。タグはyapcasiaで！</div>]]></description>
            <link>http://mt.endeworks.jp/d-6/2011/10/yapcasia-tokyo-2011-1.html</link>
            <guid>http://mt.endeworks.jp/d-6/2011/10/yapcasia-tokyo-2011-1.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">日常</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">yapcasia</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">yapcasia2011</category>
            
            <pubDate>Sat, 15 Oct 2011 04:05:17 +0900</pubDate>
        </item>
        
        <item>
            <title>散歩</title>
            <description><![CDATA[<div>表参道から有楽町までゆっくり散歩。久しぶりなのでひでぇ筋肉痛だ。</div><div>グーグルマップは距離が出るからいいなー。約8キロ</div><div><br /></div> <iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.jp/maps?f=d&amp;source=s_d&amp;saddr=%E6%8C%87%E5%AE%9A%E3%81%AE%E5%9C%B0%E7%82%B9&amp;daddr=35.67454,139.71126+to:35.6745,139.7125+to:35.6734071,139.7161732+to:35.6762332,139.7331088+to:35.68081,139.73567+to:35.6825284,139.7386129+to:35.6832933,139.7424191+to:35.6792721,139.7572928+to:35.677532,139.7620898+to:35.6753239,139.7614257+to:35.675069,+139.763328&amp;hl=ja&amp;geocode=FU5CIAId_b9TCA%3BFaxZIAIdHNNTCCl3Wd1mvYwYYDGektCemc1aaQ%3BFYRZIAId9NdTCClVRtDul4wYYDEm2yNEfdO3Fw%3BFT9VIAIdTeZTCCnXyoiBmYwYYDHVeovVp6JBzg%3BFUlgIAIddChUCCmf6vQVfowYYDHSnhuqPhxE1g%3BFSpyIAIddjJUCCntdFP0fIwYYDEyNeQQJs7eCA%3BFeB4IAId9D1UCClTdMQRe4wYYDEP-D8nLKCDtQ%3BFd17IAId00xUCCmvy-mAcIwYYDFjnImhKQIRHw%3BFShsIAId7IZUCCkVFTUX9IsYYDHQiKZuKYo6jw%3BFVxlIAIdqZlUCCkvFkh98IsYYDHd1x7x9UQ_Ag%3BFbtcIAIdEZdUCCkTiAcd8IsYYDEmtugll65viA%3BFb1bIAIdgJ5UCA&amp;sll=35.676446,139.762788&amp;sspn=0.004898,0.0081&amp;vpsrc=6&amp;brcurrent=3,0x60188bfa97dd42c9:0x22186c2de52961e1,0&amp;dirflg=w&amp;mra=dpe&amp;mrsp=10&amp;sz=17&amp;via=1,2,3,4,5,6,7,8,9,10&amp;ie=UTF8&amp;ll=35.676446,139.762788&amp;spn=0.004898,0.0081&amp;t=m&amp;output=embed"></iframe><br /><small><a href="http://maps.google.co.jp/maps?f=d&amp;source=embed&amp;saddr=%E6%8C%87%E5%AE%9A%E3%81%AE%E5%9C%B0%E7%82%B9&amp;daddr=35.67454,139.71126+to:35.6745,139.7125+to:35.6734071,139.7161732+to:35.6762332,139.7331088+to:35.68081,139.73567+to:35.6825284,139.7386129+to:35.6832933,139.7424191+to:35.6792721,139.7572928+to:35.677532,139.7620898+to:35.6753239,139.7614257+to:35.675069,+139.763328&amp;hl=ja&amp;geocode=FU5CIAId_b9TCA%3BFaxZIAIdHNNTCCl3Wd1mvYwYYDGektCemc1aaQ%3BFYRZIAId9NdTCClVRtDul4wYYDEm2yNEfdO3Fw%3BFT9VIAIdTeZTCCnXyoiBmYwYYDHVeovVp6JBzg%3BFUlgIAIddChUCCmf6vQVfowYYDHSnhuqPhxE1g%3BFSpyIAIddjJUCCntdFP0fIwYYDEyNeQQJs7eCA%3BFeB4IAId9D1UCClTdMQRe4wYYDEP-D8nLKCDtQ%3BFd17IAId00xUCCmvy-mAcIwYYDFjnImhKQIRHw%3BFShsIAId7IZUCCkVFTUX9IsYYDHQiKZuKYo6jw%3BFVxlIAIdqZlUCCkvFkh98IsYYDHd1x7x9UQ_Ag%3BFbtcIAIdEZdUCCkTiAcd8IsYYDEmtugll65viA%3BFb1bIAIdgJ5UCA&amp;sll=35.676446,139.762788&amp;sspn=0.004898,0.0081&amp;vpsrc=6&amp;brcurrent=3,0x60188bfa97dd42c9:0x22186c2de52961e1,0&amp;dirflg=w&amp;mra=dpe&amp;mrsp=10&amp;sz=17&amp;via=1,2,3,4,5,6,7,8,9,10&amp;ie=UTF8&amp;ll=35.676446,139.762788&amp;spn=0.004898,0.0081&amp;t=m" style="color:#0000FF;text-align:left">大きな地図で見る</a></small><div><br /></div><div>スタート地点は<a href="http://r.tabelog.com/tokyo/A1306/A130601/13105121/">Eggs N' Things</a>。この店基本的には旨いし、高めな値段設定も日本だから許せるんだけど、<b>コーヒーだけはおかわり自由にしてくれ</b>！パンケーキと一緒に飲みたいのに、真っ先に出てくるコーヒーはパンケーキが出てくる頃にはなくなってしまう。いいじゃんかおかわりしても！読んでたら改善して、お店の人！</div>]]></description>
            <link>http://mt.endeworks.jp/d-6/2011/10/post-179.html</link>
            <guid>http://mt.endeworks.jp/d-6/2011/10/post-179.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">日常</category>
            
            
            <pubDate>Mon, 03 Oct 2011 00:10:24 +0900</pubDate>
        </item>
        
        <item>
            <title>某オブジェクトストレージでデータをお引っ越し中な話</title>
            <description><![CDATA[<div>目的：オブジェクトストレージの旧ストレージサーバーから新ストレージサーバーにデータを引っ越しすること。rsyncやディスクを単純に交換するという方法も考えたが、ついでにデータのリバランスを行いたいので、ツールで移行する方法を採る。</div><div><br /></div><div>概要：オブジェクトとは、ユーザーから見る「１ファイル」で、この１オブジェクトに付き、1個かそれ以上の実体（entity）が存在する。１ストレージには任意のオブジェクトの実体が最大1個保存される。この実体が複数あることによって、ストレージがダウンしたとしてもオブジェクト自体は生き残る事ができる。複数の実体がある場合は必ず複数のストレージサーバーに実体のコピーが保存されている。これを1ストレージサーバーずつ、新ストレージサーバーのほうに移動する</div><div><br /></div><div>・・・という命題で、データの大移動を行っているのだが、ここでの顛末をつらつらと書く。</div><div><br /></div><div>まずとりあえず基本的な構成を作るために、シングルプロセスで直線的に任意のストレージに格納されている実体を転送するプログラムから手をつけ始めた：基本的にはオブジェクトID単位で実体を取得し、必要なコピーの数を把握してから、その分新ストレージに転送、DBにデータ作成、という感じ。</div>
<pre class="code_listing">use strict;
use DBI;
use Furl;

my $dbh = DBI-&gt;connect( ... );
my $sth  = $dbh-&gt;prepare( "SELECT object_id ... WHERE storage_id = ? ORDER BY object_id DESC" );


my $furl = Furl::HTTP-&gt;new;
my $object_id;
$sth-&gt;bind_columns( \($object_id) );
while ( $sth-&gt;fetchrow_arrayref ) {
     # XXX ERROR CHECKING et al IS DELIBERATELY SKIPPED IN THIS EXAMPLE
     my $url = make_url( $object_id, $storage_id );
     my @res = $furl-&gt;get( $url );

     my $count = get_needed_copy_count( $object_id );
     my @storages = get_destination_storages( $object_id );
     while ( $count &gt; 0 &amp;&amp; @storages ) {
           my $new_storage = shift @storages;
           if ( migrate_to_storage( $furl, $object_id, $res[4], $new_storage ) ) {
                $count--;
           }
     }
     if ($count &gt; 0) {
           # Failed to copy?
     }
}
</pre>

<div><br /></div><div>ちなみに各サーバーには実体が700万件から1500万件ほど格納されているので、当然これではおっつかない。もう少し頭を良くしないといけない。で、当然まずマルチプロセスにするべきだとは思ったが、多分I/O待ち時間とかも発生することを考慮してほげほげしないといけないんだろうなぁと思い、I/Oの多重化から手をつける。</div><div><br /></div><div>もちろんマルチプロセス化から先にしてもいいんだけど、経験上1プロセスがちゃんとできてからマルチプロセス化するのと、マルチプロセス化してから各プロセスをきちんと構成していくというのを比べると、先に1プロセスでちゃんと動くように書いてからのほうが実装が楽な気がしたのでまず先にこっちから。</div><div><br /></div><div>やったことは2点：まずオブジェクトID をループで回しつつ、1オブジェクトID=1 Coroで処理開始。ただ、Coroを全てのオブジェクトに対して即座に作成してしまうとパンクしてしまうので制御が必要なのでCoro::Semaphoreで一度に生成できるCoroを制限してみた：</div>

<pre class="code_listing">use strict;
use Coro;
use DBI;
use FurlX::Coro;

my $dbh = DBI-&gt;connect( ... );
my $sth  = $dbh-&gt;prepare( "SELECT object_id ... WHERE storage_id = ? ORDER BY object_id DESC" );

my $sem = Coro::Semaphore-&gt;new(10);
my $object_id;
$sth-&gt;bind_columns( \($object_id) );
while ( $sth-&gt;fetchrow_arrayref ) {
     my $guard = $sem-&gt;guard;
     async_pool {
          my $guard = shift;
          process( $object_id );
     } $guard;
}

Coro::AnyEvent::sleep 1 while $sem-&gt;count &lt; 10; # WAIT


sub process {
    my $furl = FurlX::Coro::HTTP-&gt;new( ... );

}
</pre>

<div>慣れてないと気づかないのがループが終わった後もCoroが終了したかという確認をしないといけないこと。全てのオブジェクトIDをDBから持ってくるという処理が終わってても、HTTP操作とかをしているcoro自体はまだ作業中かもしれないからだ。</div>

<div><br /></div><div>ここではCoro::AnyEventとか突然でてきて「？」状態かもしれないが、これには理由がある。最初はここで以下のようなコードを書いていた：</div>

<pre class="code_listing">while ( ... ) {
      async_pool {
          ....
      }
}

cede while $sem-&gt;count &lt; 10;
</pre>

<div>これ、要はCoro::Semaphoreが元の値(10)まで戻っていればビジーになってるcoroはいない、という状態を待ちつつ、自分以外のcoroにタイムスライスを譲ってる。・・・はずだった。</div>

<div><br /></div><div>ところがこれが終了しないのだ。色々print文を仕込んでみたところFurlX::Coro::HTTP::do_select()のselectでがっつり止まってる。なんでやねん。</div><div><br /></div><div>で、みてるとCoro::Select::selectはAnyEvent使ってて、ってことはCoro::AnyEventを使ってて・・・ってことは基本的にはまだ生きてるcoroにタイムスライスを渡してやればよくて・・・って色々試してみた。そしたらCoro::AnyEvent::poll; Coro::AnyEvent::scheduleあたりはSEGVで死んだのだけど、Coro::AnyEvent::sleep でうまくいった、というわけ。</div>

<div><br /></div><div>で、ここまでできてれば今度はプロセスを分けて処理する。オブジェクトIDは64ビットのでっかい整数なので最初はまぁこいつを均等に分割してやればいいやーという感じで以下のようなコードを書いた</div><div><br /></div>

<pre class="code_listing">use Parallel::ForkManager;

my $WORKERS = 10;
my $pfm = Parallel::ForkManager-&gt;new($WORKERS);

my $max_object_id = get_max_object_id_in_storage( $storage_id );
my $min_object_id = get_min_object_id_in_storage( $storage_id );
my $diff = $max_object_id - $min_object_id;
if ( my $remainder = $diff % $WORKERS ) {
    $diff += $remainder;
}
my $segment_size = $diff / $WORKERS;


for my $i ( 1..$WORKERS ) {
     $min_object_id = $max_object_id - $segment_size;
     if (my $pid = $pfm-&gt;start) {
          $max_object_id = $min_object_id;
          next;
     }
     process( $max_object_id, $min_object_id );
     $pfm-&gt;finish;
}

sub process {
     my $dbh =  ...;
     my $sth = $dbh-&gt;prepare("SELECT ... FROM ... WHERE object_id &lt;= ? and object_id &gt; ?" );

     my $sem = Coro::Semaphore-&gt;new(10);
     $sth-&gt;execute( $max_object_id, $min_object_id );
     my $object_id;
     $sth-&gt;bind_columns( \($object_id) );
     while ( $sth-&gt;fetchrow_arrayref ) {
          my $guard = $sem-&gt;guard;
          async_pool {
               my ($guard, $object_id) = @_;
               ....
          } $guard, $object_id;
     }
}
</pre>

<div>これで10プロセスでそれぞれ最大coro数10で処理ができるようになる感じ。</div><div><br /></div><div>・・・なんだけど、これ、オブジェクトIDの範囲が例えば1から100まであったとしても、そこに必ず50オブジェクト前後はいってる、とかじゃなくて、1から100までの間にはオブジェクトが1個、101から200までの間にはオブジェクトが99個、とかいう状態がありえるのですね。そうすると、オブジェクトIDの範囲で割っても無駄が多すぎて駄目。じゃあ今度は任意の数のオブジェクトを引っ張り出してきて、その数ごとにプロセスを立ち上げる、ってやらないといけないはずなのでそうした：</div>

<pre class="code_listing">my $sth = $dbh-&gt;prepare( &lt;&lt;EOSQL );
    SELECT object_id FROM entity WHERE
          object_id &lt;= ?
          ORDER BY object_id DESC
          LIMIT 5000,1
EOSQL

while( $loop ) {
    $sth->execute( $max_object_id );
    if ( my $pid = $pfm-&gt;start ) {
         $max_object_id = $min_object_id;
         next;
    }
    process( $max_object_id, $min_object_id );
    $pfm-&gt;finish;
}
</pre>

<div><br /></div><div>とりあえずポイントとしてはcount(*)とかしたら負けなので、キーのLIMIT付きORDER BYで遷移していって、どんどん処理していく事。countしたら負けです！</div>

<div><br /></div><div>これだけだとまだ運用上は問題があって、例えばプロセスを途中で殺すことになったらオブジェクトIDを最初からなめるのもあほらしいのでオブジェクトIDの範囲を指定したいし、同時に動くプロセス数やcoroの数も調節したいし・・・とかあるので、その辺りはMouseでオブジェクト化してdefaultやらなにやらでごにょごにょやってボチボチきれいにした感じ。5プロセス x 10 coroで古いサーバーはだいたいiowait 90%の所くらいまではいじめられるので、その辺りのパラメターは要調整。</div><div><br /></div><div>あとは細かいところでは$0 に現在の状況とかを逐次入れていって、psした時に何がおきてるのかわかるようにした。これは結構重宝してる。</div>

<div><br /></div><div>まぁ要はFurlX::Coro(というかCoro::Select）使ってる時にcedeだけに頼ってるとプロセス終了しねぇかもよ！っというのが最大の教訓かな。cedeしてるのにFurlX::Coroが返ってこない時は普通に絶望したけどなんとかなってよかった！</div><div><br /></div><div>ちなみに同じツールで今度は数億オブジェクトくらいあるシステムも引っ越しします。数億だって。笑っちゃうね！</div>]]></description>
            <link>http://mt.endeworks.jp/d-6/2011/09/post-178.html</link>
            <guid>http://mt.endeworks.jp/d-6/2011/09/post-178.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">日常</category>
            
            
            <pubDate>Fri, 30 Sep 2011 09:25:25 +0900</pubDate>
        </item>
        
        <item>
            <title>Devel::Coverとexec()</title>
            <description><![CDATA[Devel::Coverって便利な道具なんですが、なんかfork + execするとうまく動きませんでした。ずっと見て見ぬ振りしてたんだけど、そういうわけにもいかなくなったので、二日ほどずっとその挙動をprintデバッグで追いかけていったら大体把握できた。<div><br /></div><div>すごくはしょって言うと、Devel::Coverは裏のXSレベルでEND {} にあたる部分とかにコードを挿入してて、元のコードが</div><div><br /></div>
<pre class="code_listing">   #!perl
   exec "/bin/ls"
</pre>

<div>だったとしたら、Devel::Coverをuseすると概念的には</div><div><br /></div>

<pre class="code_listing">   #!perl
   END { do_interesting_stuff() }

   exec "/bin/ls"
</pre>
<div>という事をするようになる。PPの場合だとexec時にこのENDブロックはうまく無視されるんだけど、なんせDevel::Coverは無理矢理この動作を行っているので、ENDに当たる部分がexec()の直前に実行される。そしてもしここでdieとかCレベルでのエラーとかあるとしずかーに落ちてしまう。</div><div><br /></div><div>ということで、自分の環境では以下のレポジトリの変更でこれが回避できた：</div><div><br /></div><div><a href="https://github.com/lestrrat/Devel--Cover/commits/master">https://github.com/lestrrat/Devel--Cover/commits/master</a></div><div><div><br /></div><div>ちなみにこのあたりの修正ナシでTest::mysqldを使ったコードをDevel::Coverすると↑の問題にぶち当たる。本体のほうにも修正してもらうように言うつもりだけど、もし今困ってたらこれでなんとかなるはず。</div></div>]]></description>
            <link>http://mt.endeworks.jp/d-6/2011/09/develcoverexec.html</link>
            <guid>http://mt.endeworks.jp/d-6/2011/09/develcoverexec.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">日常</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">devel::cover</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
            <pubDate>Thu, 08 Sep 2011 12:08:40 +0900</pubDate>
        </item>
        
    </channel>
</rss>

