Scala Days 2015 SanFrancisco 2日目、疲労MAXでやばい状態のうえ、キーノートを含めると朝一から夕方まで7枠もセッションがあるというハードスケジュールでしたが、参加したセッションで記憶に残っている内容を簡単にまとめておきます。
Essential Scala: Six Core Principles for Learning Scala
Scalaを学ぶ際に押さえるべき点を紹介するというセッションです。代数的なデータ構造の作り方や、その構造に対する処理方法が整理されており、自分がScalaビギナーにレクチャーする際に参考になる内容でした。
Scalaは様々な記述が可能なので複雑だと言われることも多いですが、実際はパターンにあてはめてシステマチックにプログラミング行うことができ、少しの定型的なパターンで多くのケースをカバーすることができる、むしろシンプルな言語であるとまとめていました。
Leveraging Scala Macros for Better Validation
データのバリデーションを行うライブラリをマクロを使って書いてみようというセッション。今回のScala DaysではセッションがBeginner、Intermediate、Advancedの三種類に分類されており、このセッションはAdvancedって書いてあったのですが、def macroについてASTの説明から準クォートまで割と初歩的な内容でした。
細かい突っ込みがいろいろと入っていましたが、どの質問にも最終的には「これは簡単に説明するためのサンプルだからw」と回答していました。Beginner向けのセッションだったら良かったのではと思いました。
Reactive Reference Architecture
アプリケーション全体のアーキテクチャの話かと思っていたのですが、ほぼAkkaの話でした。
- Akka Distributed Pub/Sub(DistributedPubSubExtension)でLocation透過性を実現
- 一部のノードに偏ってしまう → Akka Cluster Shardingでシャーディングする
- クラスタが落ちるとメッセージが消えてしまう → Akka Persistenceで永続化する
- キャッシュのレプリケーションどうする → CRDTがどうのこうの(記憶が…)
すでにAkkaクラスタを運用されている方からすると当たり前かもしれませんが、これからAkkaを本格的に導入しようと考えている人にとっては参考になる内容だったのではないでしょうか。
S3 at Scale: Async Scala Client with Play Iteratees and Composable Operations
Play2のIterateeは難しいので、CollectionでStreamを作るライブラリを作ってオープンソースで公開したとのことです。
普通に便利そうなのですが、S3部分の機能のために漏れなくAWS-SDKが付いてくるのがちょっと微妙かもしれません。というわけで早速フィードバックしてみました。
A Skeptic's Look at scalaz' "Gateway Drugs"
Scalazなので怖い感じかと思っていたのですが、disjunctionやValidationをステップバイステップで紹介するという入門的なセッションでした。内容についてはこのへんとかこのへんを見ればだいたいカバーできると思うので省略します。
このあたりがScalaz入門者にとって理解しやすくメリットが伝わりやすいところなのだと思いますし、実際便利なので無闇に怖がらず部分的にでも使えるところから使っていくのはありなのではないでしょうか。
Scala Records: Extensible records and type-indexed maps
Scala Records改めCompossibleのセッション。
拡張可能なレコードで、匿名のケースクラスと同じようなもので以下のようにして生成できる。
val r = Record(mail = "aaa", sent = "bbb")
- copyだけじゃなくて++のような演算ができる
- 既存のケースクラスやStrutured Subtypeとのinteropも可能
- 存在しないプロパティを使おうとするとwarnになる
このあとTMapの説明もしていたような気がするんですが、疲労からかこのあたりから記憶が…。