northeast scala symposium 2013 の video を見た感想

まだ全部公開されてませんし、公開されたものの中でも全部見れてませんが、とりあえず見たやつだけ書きます。

以下にprecogっていっぱいでてきますが、知らない人はこち
PrecogIOって会社に、Scalaのスゴイ人がいっぱいでヤバイ
とか読むといいかも

Cake Pattern: The Bakery from the Black Lagoon

precogの人その1。
Cake Pattern(とabstract type memberや、その他細かいことなど)の話。個人的にcake patternいまだにそこまで好きじゃないというより、そもそもそれほど使いこなせてないですが、djspiewakの話わかりやすいですね。




Life After Monoids

precogの人その2。後述するspireの開発にも結構関わってる人。
発表内容も、spireの話とか、それを使ってmonoid(やそのほかgroupとか)の概念や、具体的なコード例、デモなど。




Building a Data Science Platform in Scala

precogの人その3、ていうかCTO。
個人的には、(まだ全部見てないですが)nescalaのvideo見た中では一番おもしろかったです。これが面白かったので、わざわざblog書こうかとおもったくらい。

具体的には

  • precog社内で使ってるライブラリの一覧

  • precog社内のコード量


が公開されていたりしたところが*1
おそらく、Scalazをかなりコアに使ってる世界でも有数の企業だからこそ、それに対する批判や実用的な視点など。具体的には
「Scalazは抽象化は提供するけど、パフォーマンスに関しては(ry」
という流れで、Monad Transformerのパフォーマンスに言及したり、それらを補うScalaz以外のライブラリや、JVM自体の話などなど。

precog社内で使ってるライブラリに関して見たり、今一度その他のprecogの以下のようなネット上の記事みて、やっと頭のなかで結びつきましたが
Info Q : Precog: ビッグデータ分析サービス

ということなんですかね?Info Qの記事内で

多くの点で、QuirrelはRプログラミング言語に似ています。Rと同様、Quirrelは高度な分析・統計ができるよう設計されています。Rと違って、Quirrelはチューリング完全言語ではなく、純粋に宣言的な言語です。これにより効率よくQuirrelクエリを大量のマシンクラスタに分散できます

と言ってますが、それを最初から狙って言語自体を新しく作るということが、そうそうできることじゃないし、あらためてprecogすごいな・・・とおもったという話でした。




Advanced Stream Processing in Scala


scalazのコミッターの人。Functional Programming in Scala
http://www.manning.com/bjarnason/
の著者の一人。

内容は、その"Functional Programming in Scala"の最後の方の章にでてくる、
「iterateeでも、conduitでも、pipeでもなく、新しいstream processingのライブラリの話」
Scala-Machinesというライブラリもちょっと前からあって
https://github.com/runarorama/scala-machines
それと結構似ているのですが、ねこはる先生によると、それとは微妙に別らしいです

いま、scalaz-streamという名前で、scalazのorganizationで開発されてます。
https://github.com/scalaz/scalaz-stream
ScalazのMLでの議論によると、scalazにある既存のIterateeなどは将来的に廃止して、こっちで置き換える予定らしいです。




Scalaz 7 with Lars Hupel

Scalazのコミッターの人。そこまで古くからのコミッターじゃないけど、最近一番色々細かいこと含め精力的にやってくれてる。
話の内容は、Scalaz6とScalaz7の違いとか、Unapply
https://github.com/scalaz/scalaz/blob/v7.0.0-M8/core/src/main/scala/scalaz/Unapply.scala
の存在理由や仕組みとか。Unapplyの話はとてもわかりやすいかったです。scalaz.Unapplyの日本語の解説記事みないので、気が向いたらそのうち解説書きたいですね・・・。




Akka Typed Channels: Implementing Type Calculations as Macros-

Typesafeの人で、Akkaのコミッターの人。
Akkaに最近になって実験的に実装された、 「Typed Channels」という機能の話。
一言で言うと、
Actorのメッセージにはコンパイル時に型がつかない(どの型のメッセージがくるか、コンパイル時にはわからない)わけですが、それに型をつけてコンパイル時にチェックできるようにしよう!
という機能の話。


面白いんですが、本人もSlide中の18、19ページ目で
http://www.slideshare.net/rolandkuhn/akka-typedchannels/18
The Gory Details
といっているように、ちょっと「後付で機能を入れた影響?」なのかなんなのかわかりませんが、結構無理やりというか、自然じゃないというか、良くも悪くもスゴイです。実装にはマクロ使ってます。
長くなるので、「Typed Channels」(の実装)については、気が向いたら別に書くかも・・・

あと、スライドの9枚目
"Actors Do Compose"
といっていますが、このせいで(?) twitter 上で、何日か前にちょっと炎上まではいかないけれど、議論になっていました。*3
まぁ、 Compose という言葉の意味の捉え方が違うんですかね・・・


そのあたりに興味ある人は、以下のblogとかオススメです

Actors are not a good concurrency model
Follow up to 'Actors are not a good concurrency model'




Premature Optimization in Scala

precogの人その4。
個人的には何度かtweetしてますが

ほかにも

このspireというライブラリ
https://github.com/non/spire
作ってる人の話。
spireというライブラリも勿論関係してくるんですが、単にライブラリの話ではなく、JVMのある程度低レベルなメモリ関係やパフォーマンスの話や、Scalaのspecializedの話など。

*1: 現時点ではスライドが公開されていないようなので、videoからのキャプチャです

*2:はっきりvideoの中でそう言ってたかどうかは微妙なので、想像です

*3: http://togetter.com/li/466841 この他、tony morrisさんと、この発表をしたrolandkuhnさんが直接話をしたりしてた