第四回 Erlang 分散処理勉強会 まとめ

第四回 Erlang 分散処理勉強会は、皆様のご協力のもと、無事に終了する事ができました。
発表者の皆様、運営にご協力頂いた皆様、会場をご提供頂いたオラクルの皆様、本当にありがとうございました。

運営について

会場

今回、日本オラクル様に会場をご提供頂きました。
座席数70、ディスプレイ(後部座席用含む)、マイク、無線 LAN、電源、飲料などが調っており、最高の環境を準備して頂き、感謝の言葉もありません。

入場時間の制限

雨や JR の事故が重なり、遅れる方が多数いらっしゃいました。
時間厳守で遅れた方には入場をお断りする旨、事前にオラクル様側と約束しておりましたが、オラクル社員様のご好意に甘えさせて頂き、オラクル社員様に会場(13F)と施錠された入り口(2F)を何度か往復して頂きました。
ラクル社員様も勉強会の参加者として会場で聴講していらっしゃいましたので、大変に申し訳ない事をお願い差し上げてしまったと、深く反省しております。
今後は、どんな事情があれ、時間厳守は社会人として当然であると考えておりますので、入場に関しては、時間厳守を徹底した運営を行なって行きます。

質疑応答

今回は、二時間という枠に LT 含め七名のスピーカ枠を設けました。そのため、かなり発表が駆け足となり、質疑応答も懇談会でという状態となりました。
第一回から第三回までは、質疑応答で盛り上がっておりましたし、懇談会に参加されない方々もいらっしゃるので、やはり質疑応答は必要だと考えております。
ただ、発表者を二〜三名に限定しようと考えているわけではなく、その都度、発表する方々や会場ご提供者様と相談させて頂ければと考えております。

参加枠

当日、キャンセル処理をされずにご欠席される方々が一定数いらっしゃるのは、仕方が無い事だと考えております。
また、参加登録が必要な勉強会は、当日に参加したくなっても参加し難いという欠点があります。
そこで、座席数の半数程度を絶対に参加できる方用の枠として確保しておき、残りを当日参加枠にしようかと考えております。当然、人数が溢れた場合には、お引き取り頂くわけですが・・・。
更に、宿泊施設の確保が難しい遠方からいらっしゃる方々の事を考慮し、専用の参加枠を、絶対参加枠の一〜二割ほど設けようと考えております。
仕組みを複雑にしすぎると、参加し難く、かつ、運営し難くなるので、悩みどころです。

懇談会の募集方法

アンケートで懇談会参加者の様子見を行なったのですが、説明が足りず「アンケートに解答した = 懇談会に参加登録」と誤解されてしまい、懇談会の参加登録が集まりませんでした。今回は、一部の勉強会に参加される方々にお力添え頂き、Twitter 経由で懇談会の情報を流してもらいましたが、今後は、勉強会と懇談会の参加登録フォームのアナウンスを同時に行ないます。

発表毎の個人的な感想

分散ストレージに使えるかもしれないアルゴリズム(@takemaru_jp)

http://teahut.sakura.ne.jp/b/2010-02-26-1.html
Erlang 分散処理勉強会の第一〜三回の主催者である、@takemaru_jp さんの発表。
事前に「深く狭く」か「浅く広く」か選んで下さいとの事でしたので、発表時間を考慮して「浅く広く」でお願い差し上げたところ、Chord, EpiChord, Bloom Filter, ZDD, Vector Clocks, Sinfonia と、本当に幅広い内容で発表して頂きました。
個人的に Chord や Vector Clocks は、Kai でもおなじみ(?)ですし、EpiChord は概要を知っていたのですが、他は知らない内容でしたので、後で関連資料を読んでみようと思います。

SkipGraph の実装(@higepon)

http://d.hatena.ne.jp/higepon/20100227/1267244659
Mona OS や Mosh で有名な @higepon さんの発表。
駅に例えた Skip Graphs の解りやすい説明や、mio の動作デモなどを行なって頂きました。
デモ中にチラ見できた掲示板アプリは、Mosh 製でしょうか?
しばらくは、mio のコードを解析し続けようと思います。

RabbitMQ(@cooldaemon)

http://www.slideshare.net/cooldaemon/rabbitmq-3275296
私の発表。
利用方法の話題は避けて、RabbitMQ の内部構造の突っ込んだ話を、もっとするんだったと後悔中。

Socket 数の上限回避は、仮想的な接続ではなく、OS 側の設定で回避するのが正しいのでは?という質問ですが、接続コストが気にならない設計や規模であるならば、その回避方法で問題ありません。
ただ、TCP/IP コネクションを接続毎に張るコストが気になる場合や、ストリーミングやファイル転送などと異なり、サイズの小さいメッセージを細かくやりとりする場合、一つのファイルディスクリプタを握りっぱなしにするのは、勿体ないと思いますが如何でしょうか。

ちなみに、Socket 数の上限値の設定については、以前、私が執筆させて頂いた下記の記事にも、少し載せてますのでご参考にどうぞ。
http://gihyo.jp/dev/feature/01/kai/0004

EUnit & Cover(@voluntas)

http://www.slideshare.net/voluntas/eunit-cover-omake
http://www.ustream.tv/recorded/5018612
仕事で Erlang を使用している @voluntas さんの発表。
Eunit + Cover + OMake 環境についての説明を行なって頂きました。スライドの URL が不明でしたので、情報を頂けると助かります。
私は、Common Test + オレオレ test/0 + Vim の :make にイロイロ仕込む派であるため、興味深く聴講させて頂きました。
ちなみに、@voluntas さん主催で、下記の通り OMake の勉強会を行なうようですので、ご興味がある方はどうぞ。
OMake の情報交換会やります - Twisted Mind

個人的には、id:Voluntas さんに Vimshell + erl のデモをお見せして、Vimshell を布教する事を忘れたのが痛手。

Erlang SSH モジュール(@kenji_rikitake)

http://github.com/jj1bdx/sshrpc/raw/master/related-docs/tew4-sshrpc-20100226.pdf
http://www.ustream.tv/recorded/5018662
Erlang SSH RPC モジュール開発者の @kenji_rikitake さんの発表。
多分、日本で一番、ここのコードを理解されている方だと思います。
Erlang Factory で発表を行なわれるとの事で、今回は、その前哨戦となるそうです。

PCIDSS に「ローカルネットワーク内であろうとも、通信は全て暗号化しろ」というような要求があり、クレジットカード絡みのシステムでは Erlang の得意領域を活かし難いという現状があります。
これを打破するために、何とか理解せねばと思っていたのですが、基礎知識がない私には、内容が難解すぎました orz
とりあえず、sshrpc や ssh_channel を利用する所から始めようと思います。

懇談会で、erl の初回起動時に、erl と epmd が使うポートを指定できるので、SSH ポートフォワーディングで誤摩化そうと思っている旨をお伝えしたところ、それは、手間暇も含め VPN と変わらないのでは?折角、SSH モジュールがあるので利用すると良いと思います。との事でした。確かに、その通りだと思います。
将来的には、他ノード上の Erlang プロセスに ! で送信したメッセージが、暗号化されていると嬉しいのですが・・・。

Erlang で密結合(@kuenishi)

http://d.hatena.ne.jp/kuenishi/20100227/1267243542
http://www.ustream.tv/recorded/5018814
Yatce 開発者の @kuenishi さんの発表。
C Node, Port Driver, Linkedin Driver, NIF について発表して頂きました。

C Node と Port Driver の利用経験はあるので、Linkedin Driver と NIF に期待していました。
NIF は、Erlang のスケジューラが割り込んでくれないので、IO は諦めるか、TC みたいにガリガリにチューニングするなどの工夫が必要そう。

個人的には、他言語から Erlang を使うなら C Node、Erlang から C を使うなら Linkedin Driver か NIF という所でしょうか。
Port Driver は、お手軽だけど要らない子かな。NIF の仕様が確定するならば、正規表現ライブラリや XML を Parse するようなライブラリを使う予定。

帰りの電車の中で、gen_paxos について質問させて頂いた折、gen_leader もご確認をとの事でしたので、こちらも後でコードを読む予定。

ゆとりがErlangを始めるようです(@sleepy_yoshi)

http://d.hatena.ne.jp/sleepy_yoshi/20100227/p1
今回初参加の @sleepy_yoshi さんの発表。
事前に、ネタプレゼンである事を伺っておりましたが、破壊力抜群で、はてブ数も今回のプレゼン資料の中では一番です。
初心者に Erlang を教える際の心構えや、ご自身の体験から、具体的に何から教えるべきかという内容を発表して頂きました。
発表内容に従い、第二回 Erlang 基礎勉強会のお題は、プロセス間通信に的を絞ろうと思います。