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をより意欲的に改善
・ScalaはJavaから持ち込まなかったものがある
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生成はTwitterのsnowflakeを参考にライブラリを作成
UUIDをプライマリーキーにしたため、mysqlでランダムアクセスが
頻発してサービスが落ちる
・PHPとScalaでは監視で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で改善が予定されている