Blog
Scala Days 2015 in San Francisco【2日目】
あっという間にSan Franciscoに来て3日が経ちました。
時差ぼけで変な感覚ですが、朝の9時からKeynoteです。
後ろに小さく写っているのは有名なゴールデンゲートブリッジです。
キーノートはこんな感じで行われます。
スケジュールタイムライン
http://event.scaladays.org/scaladays-sanfran-2015#schedule
Keynoteが終わってからは4つのルームに分かれて各セッションです。
丁度4人で来ているのでできるだけ分散してセッションを聞いてきましたので、その中で幾つかピックアップして紹介します。
データ可視化ライブラリSparkleの話でBig Dataを使ってパフォーマンスを上げるためにどいった工夫をしたのかの話でした。
Random Accessを減らしGCを効率よくさせるためによいしたDataArrayとLambda Architectureを使って高速なStreaming処理を遅いバッチ処理をうまく回すためのLive Layerの話がとても面白かったです。
そこから自然とReactive Streamの話に発展したのも印象にのこりました。
2. Scala Collections Performance
Goldman Sachs が公開しているGS Collectionsについてのお話。ライブラリ自体はJavaで作られている。
QCon 2014の発表資料とほぼ同じ内容でした。
通常のCollectionと比べ、Parallel実行の速度、asLazyによる遅延コレクションへの変換、メモリ消費量などアドバンテージがあるようでした。
パフォーマンス/メモリセンシティブなプロジェクトでは試してみてもよいかもしれません。
3. Essential Scala: six core concepts for learning scala
underscore の Noel Welsh 氏の講演で、Scalaを学ぶ・教える際に重要なコンセプトは以下の6つという内容でした。
1. expressions, values, and types;
2. objects and methods;
3. algebraic data types;
4. structural recursion;
5. functors and monads; and
6. type classes.
Algebraic Data Type のコンセプトに乗っ取ると、コードが直ちにデータ構造を表現しだすという言葉が印象的でした。
FPに馴染みのない初学者には fold, map, flatMap の図を使った説明はわかりやすいと思います。後日スライドも公開されると思いますので、ぜひご確認ください。
4. Quantifind’s story: Building custom interactive data analytics infrastructure (slide)
Quantifindという会社の、SNSのコメントからカスタマーのKPIに関係する内容を見つけるというサービスで、どのようなTechnical Challengeをしているかというお話。
既存の Spark + Postgres + Elastic Search で作られたシステムを、Akka ClusterをベースとしたRTC(Real Time Cluster)に置き換え、またGCポーズ回避のためOff-heap Memory(sun.misc.Unsafe)によるチューニングを行っているとのことでした。
広告配信システムにも通じるところがあるので、参考にしていきたいですね。
最近話題のmeta programmingの話でした。内容は昨日keynoteで発表されたTASTY (新しい中間ファイル) をbackendとする話しの他は簡単なチュートリアル的な内容だったのでscala.metaをすでに知ってる人にとってはいまさらな内容だったので少し物足りない内容かもしれません
個人的な感想としてはmacroほど通常のアプリケーションで使用するという感じではなくtool (ideのtype checkerとか)みたいなものを作るときに使えるのかなと思いましたがまだ全然キャッチアップできていないのでもっと良い使い方などありそうなので今後更に注目していきたいです
あとscala.metaはscala version 2.12でbetaがpublishされる予定なので気になったかたは触ってみるといいと思います!
6. Type-level Programming in Scala 101 (slide)
独特なスライドと小気味良いトークで超満員の会場が常に湧いていました。
Super Mario Bros. 2 を例に Normal Value Programming と Type Programming を行単位で比較しながら両者の違いを話していました。
Type Programmingの利点のイメージがなかったのですが、型によってオブジェクトの性質を決めるだけではなく、コンパイル時に計算をさせることができることが主な利点ということでした。
Scalaによる遅延評価の解説でした。
Haskellでは遅延評価がデフォルトですが、Scalaで遅延評価するためには lazy を指定する必要があります。
デモでは、List#viewによる遅延リストへの変換、Streamで無限リストを扱う様子などが紹介されました。
また、関数再帰呼び出しでStackOverFlowが発生するケースで末尾再帰を使った回避方法やTailCallsを使ったデモも行われました。
19時までセッションを受け続け、Community Partyがあったので行ってみました。
明日も朝早いので今日は早めに寝ようと思います!
それではまた明日!
Author