ルーズリーフ

公私におよぶ経験値獲得履歴的ななにか。

Scalaz勉強会:参加ログ1

7/13(日)、歌舞伎座タワーのドワンゴセミナールームにて、
“scalaz”の勉強会が開催されたのでのこのこ行ってきました。
http://connpass.com/event/7261/

現時点での私のスキルは、Scalaちょっと書いた、Play!Scala使った、Haskellなめた、くらいのレベル。

主催は吉田さん@xuwei_k、フォローはしていませんがTLでよくお見かけします。
scalazコミッタ様とか、もうもうこわい印象しかないね。
発表者はがくぞさん@gakuzzzz、kxbmapさん@kxbmap、なかやんさん@pocketberserker、PABさん@pab_tech、ねこはるさん@halcat0x15aの以上6名でした。

こんな感じの錚々たる面々だったので 意気揚々と歌舞伎座タワーに乗り込みました。
(会場内60~70名ほどで、女性は私含め2名。この業界、女子トイレが混まなくていいよね♪)

発表順にスライドURLと感想文(小並感)をまとめます。

とりあえずはこの記事はオープニングの吉田さんの発表に対するログ。

「Scalazの概要と歴史と今後」@xuwei_k(*1)
http://xuwei-k.github.io/slides/scalaz-overview/#0

スライド4枚目が激オシ胸アツです。
http://xuwei-k.github.io/slides/scalaz-overview/#4
これがscalazのメソッドたち。
絵的にも可愛くて素敵です☆ シンプルでいいですよね〜大好きです。
scalazはどうやら「すからぜっど」と読む派が大多数。ふむふむ。

そして、scalazはScalaの「オブジェクト指向部分を基本的に全否定して関数型を追及」したライブラリであることを宣言。
大事なところなのでURLぺたぺた。
http://xuwei-k.github.io/slides/scalaz-overview/#12
かっこいいですね。惚れ惚れしました。

そもそもScalaオブジェクト指向と関数型どちらの形式でも書けることが売りの一つなのに、すっぱりと全否定。
確かに、どうせ関数型で書けるならオブジェクト指向的に書く必要性なんてコード長くなるし汚染とかアホくさいしどこにもないので、関数型で書けばいいと思います。

でも Better Java 的に書いてもJavaよりは簡潔に書けるからScalaとても好き。
そのおかげで私のようなひよ子プログラマでも書けるんだものー。

以降はscalazのバージョン毎の変遷だからさっと・・・とにかくこれから触るなら、7.0系以降が(出来れば7.1系)いいですよと。
ふむふむ。

ただ、Scalaのテストライブラリの1つであるSpecs2がscalaz7.0系に依存しているそうなので、
Specs2を使いたければ7.0系固定となるそうです。(*2)

さて続きまして、各モジュールについてさっくりと。
http://xuwei-k.github.io/slides/scalaz-overview/#31

coreがまぎれもなくscalazの中心で、正直これでほとんどやりたいことが出来るそうです。
あとはまぁ初心者は手出ししない方がいいっぽい。
私もまずはcoreから読みつつ使いつつしていきます。

そして次は吉田さんについてというかScalazコミッタになるためには。
http://xuwei-k.github.io/slides/scalaz-overview/#46
ここは「無職になる」が強烈すぎて、RTの嵐。

で、次は使いどころについて。割と大事かなと。
http://xuwei-k.github.io/slides/scalaz-overview/#50

内容としてはスライドにある通りで、とにかく「関数型プログラミング」をしたい場合かつメンバーがついてこられそうな時にはどうぞ、くらいなものだそうです。
正直、やっぱりScalaをまず理解していないと難しいし、scalaz自体も読むべきだし、ハードルは高い。
とはいえ、どうやらScala標準のEitherより素敵なEitherがあるそうですし、Validationも便利なものが用意されているそう。(*3)

Exceptionとかムリ、Either大好きっ子としてはとても気になります。
勉強方法としては、「コード読もう」とか「Haskell勉強しよう」とか。
案外「圏論」はあったら良いなーくらいとのことで、ちょっとほっとしました。
関数型に来るとどうしても威圧感を覚える「圏論」、まだ怖いかなー。

続きましてコミッターの皆々様のご紹介。
http://xuwei-k.github.io/slides/scalaz-overview/#55

Scalaコミッターかつscalaz作者というとんでもないお方がいたりとか、怖い方がいたりとか、へえええという感じでした。
そして(やはりどこでも名前が出てくる)@ekmettさんの同僚の方とか。うわぁああ。

あとは、関連ライブラリの紹介。
http://xuwei-k.github.io/slides/scalaz-overview/#65

私が気になったものだけピックアップすると、

https://github.com/scalaz/scalaz-stream:iterateeの代わりとなる素敵っぽいstream。
https://github.com/argonaut-io/argonautJsonライブラリだって!
https://github.com/etorreborre/specs2:私も大好き!()Specs2。
https://github.com/milessabin/shapeless:scalazよりもっとやばい関数型ライブラリ。

ざっと以上でしょうか。
時間作って眺める為にもしっかりメモメモ。

*1:どうやらアカウント名はシューウェイと読むらしい。中国の書道家が由来だとか。そもそも吉田さん、書道学科?でいいのかな?出身だそうで。おどろき。
*2:Specs2がscalazに依存しているとは知らず。Specs2を使っていれば自動的にscalazが使えるそうなので、今度使います。
*3:がくぞさんかPABさんの感想あたりで書きます。

発表中はずっとわくわくしっぱなしでしたね。
ほんとキャンセル枠申し込んでおいてよかったー