Scala Matsuri 2014 まとめ

去年はScala Conferenceにいけなかったので、
雪辱を晴らしに今年はScala Matsuriに行きました。
満喫満喫、講演者の皆様、運営の皆様に謝謝!!

それでは、以下自分用のまとめ
_______________________________________________
タイトル:Scala Matsuri 2014
会場:株式会社サイバーエージェント
日程:2014年9月5日

【参加セッション一覧】
◆ 基調講演 - Scala 進化論
◆ sbt、傾向と対策
◆ Node.js vs Play Framework
Apache Spark を用いた Big Data パイプラインの統一
◆グリー初のScalaプロダクト!チャットサービス公開までの苦労と工夫
Scala 上で実現された制約プログラミングシステム Scarab について
Scalaのマクロに実用例から触れてみよう!
_______________________________________________
【内容】
◆基調講演 - Scala 進化論
(EPFL Martin Odersky)
Scala開発の動機
‐ Funnelをよりよくすることと
‐実践的なOOPとFPの融合
‐コアcalculasと言語との依存をゆるめる

Webサービスではイミュータブルなデータが多いためFPとの相性がいい

・PizzaとScala
PizzaはJVMで動くJavaに関数言語の要素を加えた言語
‐Pizza:代数的データ記型、パターンマッチング
Scala:OOPとFPをより意欲的に改善

ScalaJavaから持ち込まなかったものがある
publicやstatic、プリミティブ型やbreakなど

Scala.JS(Scala for Javascript)を進めており、
クライアントとサーバで同じ言語で開発ができるようになる

◆ GitBucket: Perfect Github clone by Scala
(株式会社ビズリーチ 竹添 直樹)
・Gitbucketとは
GitBucketはオープンソースgithubのクローン
Githubからデザインも、ぱく..追従している

・Gitbuckeの開発
バックエンドでscalaのライブラリやJettyなど、
フロントエンドはbootstrap2など

型安全なので少ない人的リソースだけれども、
アグレッシブな開発ができている

既存のJavaの資産が使えるので便利

web framworkはscalatraを利用している

・今後の予定
Gitbucketにscalaプラグインを追加できるようにする
パフォーマンス改善など

◆Fifty Rapture One-Liners in Forty Minutes(Jon Pretty)
Raptureとは
URLやファイルURLのアクセスを簡潔にするscalaライブラリ

raptureが読み込めるものは何でもパースすることができる(jsonなど)

jsonのデータのパースやアクセッサといった利用ができる
文字列をJsonにすることもでき、四則演算子Jsonデータに
追加することができる
ex. json_data+(_.year,2019) =>[“name”:”Mark”,”year”:”20192]

文字列補完子を使ったよりディープなパターンマッチ

Jonsのパーサは自前で書いたものではないが、
逆にimport先を変えることでパーサを選べる仕様にしている(Jacksonなど)
どのパーサを使ってもシンタックスは変わらないようにしている
暗号化やxmlのパースもできる

・発表スライド http://rapture.io/matsuri/

◆(LT) LINE
バックエンドで一部scala導入、ほとんどJava
サービス指向でシステムを構築している。
ユーザのリクエストは複数のサーバ、サービスにまたがるため
Zipkinというトレーサーで可視化している。

◆ Node.js vs Play Framework
(LinkedIn Yevgeniy Brikman)
http://www.slideshare.net/brikis98/nodejs-vs-play-framework

◆グリー初のScalaプロダクト!チャットサービス公開までの苦労と工夫
(グリー株式会社 長谷川 貴之&尾崎 俊)
グリーの主力はPHPだったが、
コネクションのたびにプロセスが立ち上がるのでつらい
動的型で保守がつらい

Scalaにした理由
ー 並行処理が強い
ーシングルプロセス、マルチコネクション
ー 静的型づけ

・勉強のプロセス
ーコップ本で自学自習、scala逆引きを手元に置く
Twitterが公開しているドキュメント
ーEffective Scala(Web)
OSSのコードを読む

ペアプロの実施
ーコードレビューの徹底

・内部機構
ー 並行処理はAkkaを使用(書きやすく、耐障害サポート)
ー ID生成はTwittersnowflakeを参考にライブラリを作成
 UUIDをプライマリーキーにしたため、mysqlでランダムアクセスが
 頻発してサービスが落ちる

PHPScalaでは監視でJVMの監視をするようになった

Scala 上で実現された制約プログラミングシステム Scarab について
(神戸大学情報基盤センター 宋 剛秀 )

Scarab = SATソルバ(Sat4J) + 符号化(Sugarを参考)
Sugarを参考にしたのでSATを早く解ける
Scalaのおかげで速いというわけではない
(NP完全問題なのでアルゴリズムの影響が大きい)

スライド(日本語版)
http://kix.istc.kobe-u.ac.jp/~soh/scarab/talk-jp.pdf

Scalaのマクロに実用例から触れてみよう!
(株式会社ビズリーチ 島本 多可子)

2.10+から追加された機能
いままでのマクロはsbtやコンパイラオプションを利用していた

マクロはexperimentalの位置づけなので
importかコンパイラオプションが必要
(今後、マクロ機能がなくなるとう噂も、、、)

・マクロのルール
ーカリー化
ー第一引数がContext

scala.metaで改善が予定されている