Erlang 分散勉強会 - Erlang で分散倉庫番ソルバー

6/17 に行われた Erlang 分散勉強会にのこのこ行ってきました。関係者の皆々様ありがとうございました。
LT で以前 Erlang で作った倉庫番ソルバーの話を臆面もなくしゃべってみた。以下資料とソース。

Erlang 分散勉強会 LT 資料 「Erlang で分散倉庫番ソルバー」 (右キーで次ページ)
http://giovedi.net/erlang/erlang080617.html
倉庫番ソルバー ソース(第2.5世代)
http://giovedi.net/erlang/solver5.erl


他の方は新しい技術へのチャレンジを語っていたのに、一人だけ趣味話で内心噴飯していた人もいたかもしれないが、まあ心配していたよりウケたし楽しかったので、よしとしよう。なかには倉庫番の話を目当てに来てくれた人もいたようで有り難い限りである(真に受ける奴があるか)。


それはともかく。
なにぶん5分という短い時間に切りつめてしゃべったので、蛇足かもしれないが少し補足しておこう。


プレゼンの中で「第〜世代」という言い方をしていたが、そのうち第2世代までは1年ほど前にこしらえたものだ。

Erlangで分散してみたくて倉庫番 solver [第1世代]
http://labs.cybozu.co.jp/blog/nakatani/2007/05/erlang_solver_1.html
倉庫番solverをちょっと Erlang っぽく [第2世代]
http://labs.cybozu.co.jp/blog/nakatani/2007/05/solver_erlang.html


その後、第2.5世代のアイデア(最小完全ハッシュとその逆関数)を思いついてはいたものの、他にやりたいことがたんまりあったのでずっと塩漬け。
今回の Erlang 勉強会の話を聞いて、よし作りたかったところまで仕上げるチャンス! と思い立ったわけだ。
ただし、最小完全ハッシュの逆関数については「どう書くorg」の出題ネタとして活用済み。もちろん、Erlang 版の回答は自分でやっちゃっている(苦笑)。


それから、倉庫番ソルバーについてマジレスしておくと、今回お見せしたものなんかより遙かに性能の良いソルバーを作っている人もいらっしゃる。また、実のところ、大昔に X68000 (CPU 10MHz, メモリ 1MB)用に自分で作った倉庫番ソルバーのほうが性能が上だったりする。
まあ今回のネタは、あくまで分散を試してみる題材として「どうせなら C10K とかより、他の人がやらなさそうなことがいいなあ」という間違った(ある意味正しい?)観点からのチャレンジだと思っていただければ。
ちなみに、NP にしても PSPACE にしても、基本的な足回り(深さ優先とか局面一致チェックとか)を実装してしまえば、あとはヒューリスティックな工夫の積み重ねが待っているのみ。3日かかっても解けなかった問題がわずかな工夫で10秒で解けるようになるというしびれるような体験をしつつ、でもどれだけ性能が上がっても解けない問題が無限にある世界なので、ハマったら抜け出せないこと請け合いである。おすすめ。


勉強会の他の方はちゃんとまじめな話をされていておもしろかった。
以前、Distributed Systems を読んだときに、Amazon Dynamo で使われているという Vector Clock や Quorum-Based Protocol も実はちゃんと出てきていたのだが、「ここらへんってどうやって使うんかいなー」とか首をひねるばかりで使い途が思いつかなかった。
Dynamo/Kai のお話を聞いて、なるほど信頼性より可用性に重点を置いて使うというユースケースがあるのだなあと教えられた。なるほどなあ。あの本やっぱ読み返すしか。
あと自分は mochiweb のソースを読んだ方が良さそうだ。OTP なにそれおいしいの状態なので……(冗談抜きで)。
懇親会では yohei さんのところに押しかけて REST の話ばかりしてた。まあ、いいか。ありがとうございました。


余談その1。
プレゼンのあと、確か siena さんだったと思うが「Erlang で同時 2000万プロセスくらいまでいけるって聞いたことありますよー」と教えてもらった。
「えーそれはすごい。相当小さいプロセスでないと厳しいと思うんですけど」
「そうでしょうね。まあメモリ 2T もあればいけるって言ってましたよ」
そんなに積んでませんから!!!
うちが大規模分散を主業務にしてたならともかく……「クアッド×16、2TB で倉庫番」とかいうのも酔狂で楽しそうですけど。


余談その2。
勉強会のあと、「あの倉庫番って仕事なんですか? サイボウズ・ラボってそういう会社?」と4人くらいに聞かれた。
いやいやさすがにあれは趣味です、まあ Erlang の調査報告という形で仕事に還元という形式を踏んどいて、仕事中に一部作ったりはしてますが的な回答をしつつ、なんでそんなに聞かれるんだろう、文芸部メソッドの時すら「あれは仕事?」なんて聞かれなかったのに……
はっ。もももしかして、プレゼンが「1年前に Erlang はやりましたよね」で始まってるからって、まさかまる1年間倉庫番しかしてないとか思われてる!?
いくらなんでもそんなわけないやんー!(悲鳴