kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

ろーざんぬ!

4月13〜23日にかけて、Scala Daysというワークショップに参加するために、スイスのローザンヌという所まで行ってきました。帰って来てからもう数日経つので今更なのですが、k.inabaさんもローザンヌでの事を書かれたようだし、自分も一応書いておかなければなあということで書きます。

Scala Daysというのは名前の通りプログラミング言語Scalaに関するイベントで、基本的にScalaに関することならおおむねなんでもありという感じのイベントでした。今回、私は自作のPEGベースパターンマッチングライブラリPEGEXについて発表したのですが、初めてのまともな英語発表ということもあってなかなか苦戦しましたが、聴衆にはそこそこ好評だったようです(発表資料:pegex.ppt,
pegex.pdf)。ちなみに、発表者特典でScalaのマグカップをいただいたりもしました。

他の発表では、Leaky Monads, Automatic refactorings for Scala programs, Named and Default Arguments in Scala, Processing with Spde: Scala at the Intersection of Art and Technology, Sneaking Scala Into Your Organizationが特に興味深かったです。

Leaky MonadsはScalaにおける自動リソース管理(Automatic Resource Management, ARM)を行うためのライブラリをモナドっぽいものを使ってうまく書けますという感じの内容で、最初のスライドがいきなりA Monad in 5 secondsで、

trait M[X] {
  def flatMap(f: X => M[Y]): M[Y]
}

というコードが出てきたのは噴きました。実は、どの辺が"Leaky" Monadsなのかはよく理解できなかったのですが、Scalaでリソース管理を行うためのライブラリの1実装手法として見るだけでもなかなか興味深かったです。

Automatic refactoring for Scala programsは、IntelliJ IDEAのScalaプラグインで実装されている(実装中のも?)リファクタリング機能についての紹介で、importの編成、変数のインライン化、変数の導入、メソッドの抽出などの基本的なリファクタリングについて、Scalaでそれらを実装するに当たってどのような点が課題となるのか、そしてどのように解決するか、を一つ一つ丁寧に説明していく発表でした特に、returnを含む式をメソッド抽出するときにどのようにするかなどの辺りはなるほどなーと感心させられました。

Named and Default Arguments in Scalaは、Scala 2.8で実装される名前付き引数とデフォルト引数の仕様についてのやや突っ込んだお話で、

def id[T](x: T = "scala") = x 

がコンパイルを通る(呼び出し側のコードで型制約に対する違反を検出する)理由とか、名前付き引数を持つメソッドをオーバーライドするときに、引数の名前を交換するとどうなるか、など際どい例が満載で、パズルチックな楽しさがありました。

Spde: Scala at the Intersection of Art and Technologyは、Processing(Proce55ing)環境のScalaポーティングであるSpdeについての紹介とデモで、やはりグラフィカルにぐいぐいやるとかっこいいなー等と思っていました。あと、何に使っていたのかよくわからなかったのですが、何故か限定継続を使ったコードのデモがあったのが面白かったです。

Sneaking Scala Into Your Organizationは、会社や組織において、どのようにすればScalaを広めることができるか、という作戦に関する話で、Scalaの学習コストや採用する上でのリスクをどのように制御するのか、が主題でした。特に、Scalaを採用する上で、ビジネスロジックでの採用、モデル層での採用、などと分類した上で、それぞれの層でScalaを採用するメリットとリスクを論じているのはわかりやすかったです。また、いきなり全部をScalaに置き換えようとしない、リスクの少ないところから使っていくようにする、などのアドバイスはかなり参考になります。

ちなみに、1日目の懇親会で、Scala Daysのスタッフの人に、Odersky先生のサインが欲しいんだけどProgramming in Scalaを持ってくるの忘れちゃったよーとか言ったら、翌日、Programming in Scalaをくれた上に、Odersky先生にサインもらえるように話を通してくれました。大変ありがたかったです。

今回のスイスの旅では、アイスランド火山噴火の影響で帰国が約5日も遅れるというトラブルに見舞われましたが、それでも、Scala Daysに参加して良かったなと思います。ちなみに、以下はScalaのロゴの元になった建物の写真です。ロゴとは巻き方向が逆ですが、よく似ているのがわかると思います。