Erlang/OTP関西 勉強会 #1 開催してきました!

先週土曜日の 6/18に尼崎の小田公民館にて Erlang/OTPの勉強会を行って来ました。感想と反省など

pre days。

当初は「文法はある程度分かっている人」で集まってmochiwebのソースを読み散らかす、という会で行くつもりでした。プロジェクタを取り合ってみんなの前で説明したり質問したり、会場netでなんぞその場で実験してみたり、などなどのフットワーク系。こうすればとりあえずSSLとか「いまいちわからん」な部分もなんとかなるかなー、という甘い発想です。
会場は悩んでいたら@cuzicさんがとってくれたので(多謝です)、後は告知だけ。とりあえずATND,,,と思ったんだけど、ちょっとひねくれてこくちーずにしました。
しかし、時間かけなさ過ぎか、はたまた単に僕の集客力の低さか(笑)、直前まで全然人が集まらないというひどい状況に。。。さすがにこれはまずいということでアッサリ規制緩和。「わいわいオープンにやるので文法知らなくてもいいよー」って。
いろいろあったのですが、最終的には突然のゲリラメールでお誘いしていた(大変失礼しました m_o_m)関西学園の先生やその先生の共同研究者の方、あとモバイル系のSEの方が参加してくださることに。ちなみに、実は僕の家のすぐ近くに関西学園理工学部キャンパスが、、、、ってそう、そこの先生だったんですね。

morning。

準備とかほとんどしてなかったのですが、前日に疲れきって爆睡してしまったので朝火を吹きながら資料作りました。


なにこれ、なんなのこれ状態。いらんかなーとも思ったんですが、まああるとしまるしね*1(違
朝食を取っていると@cuzicさんからメールが。「後から行けるかも」とのこと。おおそれはありがたい。これでやっと 5人か orz(ナハハ)

just before beginning....

実は@cuzicさんの団体(ruby勉強会)名義で会場確保してもらっていたので、会場の表示名は「ruby勉強会」のまま。少し早めに行って変えてもらいました。文句は言われたものの無事変更成功!なんでも言ってみるもんですね。ということで昼食に。昼食は前から気になっていた福島上等カレーに行ってきました。美味しかった。

start。

会場を開けて、プロジェクタなどの設置をしているとみなさんがゾロゾロと集まってきました。と言っても4人ですがw 「あっとほ〜むですね〜」ってそうですね。これはこれでよかったかも。みなさん取り出すマシンが揃いもそろってMacなのは昨今の勉強会ではおなじみの風景になってきました。僕もMac、、、のハズだったのですが、直前にMacBookの電池が逝ってしまって使い物にならなくなってしまったので、先週にパソコン工房で急遽38,000yenで買ってきたCLEVOのC4101にUbuntuツッコンで参戦。
@cuzicさんは40分ほど遅れるらしいので、先にプレゼン説明だけしちまうかな。というわけでだらだらと説明。説明。

no experience。

プレゼン終わって、さて、とみなさんの状態を聞いてみると、残念ながらどなたもErlang経験はなし。更にまだ全員がerlangもgitも未インストール状態でした。会場にはネット環境はなかったのですが、とりあえず僕がauテザリングケータイを持っていたので、それで接続。しかし、屋外ではあんなにゆんゆんだったWiMaxが室内は0。なんと。3Gでの接続になってしまいました*2
みなさんmacportsでgitからいれてはる。時間かかりそう。。。homebrewオススメしようかと思ったんだけど、まあそれは大変になりそうなのでやーめた。そうこうしているうちに @cuzicさん到着。
みなさんのお仕事やなんかのご紹介などして、和んだところで、さてどうしようかと。まだインストール合戦であたふた状態な方も残っていたのですが、mochiwebの引っ張り方と、mochiwebサンプルをmake app して見せるデモを見せて、
「さて、では、これから10分ほどざっとツリーを見てみて感触を掴んでみてください」
と時間稼ぎするメソッド発令。その間に電車の中で作りかけてたwebアプリの雛形を弄ったりなど。GNU globalのHTML出力にlink埋め込んで、コメントを書き込めるようにする感じのアプリ。
はてGAEか自宅鯖か、どっちがいいもんかな? Erlangの無料ホスティングサービスとかあればそれこそ mochiで書いてみるのも勉強になるんだろうけど。
とりあえずデータストアは書くのは間に合わず、その場の動作だけのモックアップができました。

mutation。

さて10分みてもらったところ、予想通り「全く歯が立ちません」とのこと。mochiwebのmakeもうまくいっていない人が2人、うーむ。これは今日はソースコードリーディング、無理だな、と判断して、急遽「初心者向け Erlang講座」を行うことになりました。と、言ってもなんにも準備してないからドキドキしながらの体験でしたが。
内容としては

  1. erlang shellの使い方。立ち位置
  2. 基本データ型。<>が抜けてしまった><
  3. モジュール∋関数 --- process <-> message というerlangの4要素について
  4. マッチングの考え方
  5. モジュールの書き方とかarityとか。I/F関数とか。
  6. , ; . end. のキモさと、cut&pasteフレンドリーな回避策について
  7. 会場からの要望で spawnと receiveの使い方
  8. linkの概念とスーパバイザツリーについて。
  9. フォールトトレラント性と、Erlangにおける「バンバンクラッシュさせろ」というポリシーについて
  10. ちょっとだけ application という概念について
  11. 独立プロセスなのでGC有利よね、とかいう話とか

などをその場でライブプログラミングしながら、自宅マシンにログインしているウィンドウを間違えて使ったりなどたくさんのドジと、@cuzicさんとの掛け合い漫才*3みたいな会話と共に紹介していきました。自分的には思いの外うまくできた気がしました。
ただ、当然何の準備もなしの完全アドリブ講座だったので、抜けの多いこと多いこと。多分分かりにくいところ満載だっただろうなーと思いつつも、雰囲気を掴んでもらえたらまあ7割くらいは成功だったかなーと思っておきます。
あと、@hkanbara1さんが僕とほとんど同じような立ち位置のハードウェア設計経験者だったので、ついつい深い話になってしまったりとか。ディペンダブル技術の話とか、ハード屋は信頼性というとすぐに「じゃあ3つで」という発想の人ばっかりだとか、そんな話。
・・・なんか僕ばっかり楽しんできた気がしてくるな・・・w

video---。

若かりし日のJoeさんの映像をみんなで鑑賞しました。

あらためて、Erlangという言語が電信通信という分野で生まれた、フォールトトレラント性と、(今ではやや当たり前だけど)シンボリックな処理がウリの言語なんだなーということと、やっぱりハッカーにはヒゲが必要だ、ということを皆で再認識(違)。

ending。

ハード系の話で結構盛り上がったりとか、何故か検証技術の話になってしまったりとかして、気がついたら時間になっていました。
朝に思いついたアイディアである、みんなでリアルタイムにソースコードにコメントを塗りたくる SNSもどきの話をして、ついつい、「次回までになんか作ります」とか言ってしまって、いやこれは失敗だったかも。ちょっとしたデモもやってみました。で、みんなで後片付け、撤収モード。
帰りはCocoeのフードコートで軽くご飯をみんなで食べて、いろんな話をしたりしました。先生がerlangなんか研究に使えへんやろか?という話をしていたので、思いつきで「ネットワーク診断エージェント」とか言ってみたんだけど、これ面白そう。自分がやりたいw
という感じで、みんな帰路につきました。
しかし、やってみて気がついたのですがよく言われているとおり、こういうことやると、説明しながら自分自身に理解が染みこんでいく、という経験がたくさんありすぎ。こんな為になるならしょっちゅうやりたいなーと思いました。

というわけで反省など

反省だらけなのですが、一番はまず根回しの悪さですね。開催する以上はもっと積極的にあちこち足を運んで、直接宣伝してくるべきでした。子どもがまだ小さいのでついついそれを理由にそういう活動をサボってしまってました。
次に実際の会の前に、参加してくださる方々にある程度 prerequisiteをフッかけとくべきだったのかなーとか。せめて erlangとgitのインストールくらいはやっておいてネ、にしておくべきだったかもしれません。大学ってシステムはそういう意味では良く出来てますね。prerequisite の担当教官が信頼できる人であれば、そこにいる生徒さんは最低限をクリアしているはずなわけで(そううまくも無いことを先生から食事の席で伺いました)。
最後に自分の準備ですね。逃げてないでもう少しタイトにスケジュールを決めておくべきだったのかも。資料の準備ももう少し早く手を付けていたら、例のSNSも出来上がった状態で望めたかも。

うーん後悔後を絶たず。。。ですね。

*1:ちなみにこの資料書いてる時にソースコードリーディングSNSというかWaveとwikiを足して1.5で割ったみたいなの、を閃きました。ので、全くの無駄ではない・・・かな?

*2:しかも僕が大ぼけかまして最大接続数を2に固定してしまっていたので全然つながらなかったのでしたwすみません、3Gだとだめなのかなーとか嘘吐いてましたが実は簡単に変更できました

*3:毎度毎度cuzic氏の、ユーモアだけでなく、底なしに広く楽しい知識と、常にニュートラルでまっすぐ問題を見据えるあの真摯さには感動します。常に目を開けているからどこまでも伸びていくのですよね。見習わなくては