[scala][勉強会] Scala会議#1に参加してきました。
Scala会議とは
恐らく日本で行われているScalaの勉強会の中でもっとも大きい規模のものと
なったのではないでしょうか。
以下のURLで録画が見れます。
http://www.ustream.tv/channel/scala-kaigi
以下、僕がメモった事や感じた事をまとめていきます。
イントロ : @j5ik2o さん
http://www.slideshare.net/j5ik2o/scala-9039767
オラクル青山センターにて行われたのですが、いきなりJavaをDisったのでビビりましたw
あとPHPはいつもの扱いな感じ。
会の方針として、「内輪で盛り上がらない」というのを全面に押し出していたのが
とても好感がもてました。
sbt徹底解説 : @xuwei_k さん
http://www.slideshare.net/KenjiYoshida/scalakaigi1sbt
sbtとは
ビルドツールの一種で、sbt自体がScalaで作られている。
sbtには以下の2系統ある。今後は0.10系統を使っていくのがいいだろう。
- 0.7系統
- 0.10系統
SBTを使う理由として、早いというのももちろんあるが、akka, scalaz, scalate, unfiltered等多くのプロジェクトがSBTを利用しているという事実がある。
jarファイル1つだけなので用意から起動が楽チン
バージョンの設定が超簡単
set scalaVersion := "2.9.0-1"
とするだけでコンパイルに使用されるScalaのバージョンが2.9.0-1になる。
sbtコンソールはコマンドの補完が聞いたり履歴を保存してくれたりするので便利。
注意点
以下をちゃんと設定しないと結構落ちるらしい。
- CSMClassUnloadingEnabled
- MaxPermSize
UnfilteredとかFinagleの話。そしてScalaの闇について : @yuroyoro さん
http://dl.dropbox.com/u/261418/20110828_scalaconf01_introducing_unfiltered_and_finagle/index.html#0
いきなりウキャス語で解読不能w
Unfiltered
https://github.com/n8han/Unfiltered
http://unfiltered.lessis.me/
非同期I/Oを対象としたツールキット。静的コンテンツは特に考えられてない。
以下のようなところで使われている。
- Remember The Milk
- Novus
- Trust Metrics
このプレゼン資料もUnfilteredのPicture-showというのを用いて作成されている。
Finagle
https://github.com/twitter/finagle
twitter検索APIのバックエンドに使用されている。
JVM / NIO / Netty という環境で動作するもの。
プロトコルには依存しないので以下ようなものが使える。
Futureをやり取りする作りになっているので、すべての処理はFutureのチェーンとして実装され、型安全に非同期処理が保証される。
※node.jsでは開発者が"気をつけ"なければならない。
Scalaz - とある型クラスのライブラリ : @kmizu さん
http://scalaz.github.com/scalaz/
Scalazでは☆とか★とか∧とか∨とかのUnicode記号が多用されている!
Scalazとは?
Scalaの標準ライブラリにないアレコレを集めた便利パッケージ(Haskellian御用達)
I/O モナドまである。
Option / Listなんかも便利に拡張されているので使うと幸せになれるかも。
サンプルいっぱい
https://github.com/scalaz/scalaz/tree/master/example/src/main/scala/scalaz/example
とりあえず以下の2行をimportしとけば使える。
import scalaz._; // 小文字のscala
import Scalaz._; // 大文字のScala
List#toNel
NotEmptyListを返す。
NonEmptyListを使えば空リストでは無いことが保証されるのでhead, tailが必ず成功する。
reduceLeft, reduceRightでも同様に確実に成功する。
Option#orZero
OptionのorZeroは型ごとのゼロ相当の値(Zero[T] traitをextendsしたもので定義した値)が返る。
いろんなZero
http://scalaz.github.com/scalaz/scalaz-2.9.0-1-6.0.1/doc/index.html#scalaz.Zero$
i.orZero は ~i とも書ける。
Option#getOrElseの短縮
opt.getOrElse(false) と書くところを opt | false と書ける。
直感的!!
Zipper
純粋関数型イテレータ。要素更新もO(1)で高速にできる。
ParatialApply
型パラメータの部分適用(カリー化)ができる。
まとめ
Scalaは仕様がしっかりしてるので公式から仕様書を読むべき。
日本語でまとまった情報が欲しい場合は以下のURLへ。
https://sites.google.com/site/scalajp/
全体のまとめ
LTまでまとめる力がなかったのでセッションだけの振り返りで。
全体を通してすごくクオリティの高い発表者の方々でとても刺激を受けました。
個人的に斬新だったのが「スイーツ募金」というもの。
このお金で買い出しに行ってセッションの間のおやつやジュースに充てるというものでした。合理的ですね。
Scala会議は今後も継続して行っていく方針なので、これからScalaを始める方は要チェックですね。
内輪ネタで盛り上がらない!宣言をしている勉強会なのでとても安心して参加できると思います。
ただこの会を通して一つ残念だったのが女性エンジニアが一人もいないこと!
そのせいで会場がややスメリーな感じでした><
次回は女性Scalalianが参加してくれるといいなー。スイーツタイムあるし。