sgykfjsm.github.com

Scala勉強会第99回 in 本郷に参加した。

久しぶり(1年ぶりぐらい?)に参加した。 partake

  • 次週に行われる第100回のネタ出し
  • 質問時間
    • sbtでv2.9とv2.10を混ぜたい(黒魔術的なことをしたいらしい。構文木をなんとかかんとか?
    • 無理でしょうでFA

Scala web framework比較

会場提供者でもある竹下さんの発表。Web業界の末席を汚す自分にはありがたいお話。

  • Play
    • full stack?
    • WebSocket
    • StateLess
    • 習得しやすさ○
    • 開発しやすさ○
    • デザイナ連携☓
    • 長所→逐次コンパイル(1系
    • テンプレートもコンパイル時にチェックOK
    • 短所→安定しない、開発はあまり活発じゃない、フルスタック(笑)というかAnorm(笑)
    • 長所→WebSocketが楽、開発活発、CoffeeScriptとの連携が良い感じ
    • 短所→変更が多い、やはりフルスタック(笑)→Slickへの対応が進めばあるいは?
    • 使いドコロ:大規模、WebSocket、プロト開発(逐次コンパイル
  • Lift
    • full stack
    • Servlet
    • 開発しやすさ☓
    • デザイナ連携○
    • 長所→テンプレートが非プログラマと分業しやすい
    • 長所→周辺ライブラリが優秀(lift-json, lift-mapper)
    • 短所→非常にStatefull(スケールしない)、Routting周りが難解、View-firstも難解、Wikiがクソ
    • 使いドコロ:デザイン重視のWebアプリ
  • Scalatra
    • Servlet
    • StateLess
    • 習得しやすさ◎
    • 開発しやすさ☓
    • デザイナ連携☓
    • 長所→非常にわかりやすい(フレームワークというかDSL
    • 長所→Swaggerが良い感じ
    • 短所→ページ数が増えると一覧性に乏しい
    • 使いドコロ:プロト開発、小規模API
  • Unfileterd
    • Scala, Scala過ぎて…
  • Circumflex
    • 最近のものらしい
    • ロシア製
  • パフォーマンスはPlay, Scalatra > lift(CPU使うらしい
    • Web frameworkがボトルネックになることは稀
    • むしろ実装による

所感

ScalaのWeb frameworkのうち、使ったことがあるのはPlayとScalatraのみだけど、個人的にはどちらも使いやすい。
基本はPlayだけど、ちょっとしたものを作るのにPlayは大げさなので、軽い奴はScalatraで作るといったような使い分けをできるようになっておけば良いと思う。どちらもまだ使いこなせていないけど。
余談だが、Scalatra in Actionはまだv1だけど、読みやすくて面白かった。

Scala2.10 bytecode problem

麻植さんの発表。麻植さんはScala Conference2013のコアメンバーの1人。

  • 2.9と2.10でバイトコードが異なる
  • 2.9では継承先のメソッドを呼び出していたが、2.10からは継承元のメソッドを呼び出すバイトコードを呼び出すようになった。
  • Android開発で問題となる
  • Android4.1のライブラリ+scala2.10+ Android4.0以下の端末でNoSuchMethodErrorが発生する。
  • Android4.1以上をtarget SDK versionにしtら、scala2.10.xにしないか、miniSDKversionを4.1以上にする
  • 開発環境と本番環境でクラスファイルのバージョンが違ったりする場合は注意したほうが良い。
  • どうしてこうなった?っていう経緯
  • Android以外じゃ起きないのでは?Webアプリはありえない。

所感

Android開発はまだ経験していないが、問題の重大性はなんとなく理解できた。これは麻植さんの発表が素晴らしかったからだけど。おそらく自分がこの問題にぶち当たることは無いだろうけど、究明のためにbytecodeにもあたるという姿勢は見習いたい。すぐにググっちゃあだめだよ。

ScalaのTraitの実装について

リリロジさんの発表。ScalaのTraitがどのように実装されているかについてアドリブ(?)で発表。
Scala Conferenceでの発表にも少し触れていた。
話している内容が難しくて、精進せねばという気持ちにさせてもらった。
Scala Conferenceの発表スライドを参考までに貼っておく。

  • traitの実装知ってる人→いない
  • traitの実現方法について
  • スライド34/40 Scalaの abstract overrideでは実装にないやつも呼べる→気になるでしょ
  • ブログの記事を元に解説
  • comfrk v3 Open Recursion -> TaPLぼんに詳しく書かれている->便利なのでOCamlでも使いたい -> 詳細はPDF
  • オブジェクト指向 組み合わせ爆発の問題があるよね だからtraitが発明されたんだよ
  • traitの起源(こんな記事があったので
  • こっちについても触れていた
  • scalacでちゃんとclassファイルも確認しようね

所感

ScalaのTraitについてはちゃんと考えたことがなかった。なんか便利な奴、ぐらいの認識…。改めなければ。発表の内容もすごかったけど、アドリブであんなに色々説明できるってすごいなぁ。
話の半分も理解できていないので、もっと精進しよう。