mike-neckのブログ

Java or Groovy or Swift or Golang

『実戦でのScala』に行ってきた #jissenscala

こんにちわ、みけです。

表記のとおり、『実戦でのScala 〜 6つの事例から知る Scala の勘所〜』に行ってきました。

ちなみにツイートのまとめはこちら。

実戦でのScala #jissenscala まとめ #scala - Togetterまとめ

まあ、内容についてはトゥゲッター読めばわかるし、誰かが詳細なレポートを書いてくれるでしょう。

とりあえず、僕が思ったところを雑に書いておきます。

ビズリーチの新サービスをScalaで作ってみた ~マイクロサービスの裏側

gitbucketの開発で有名な竹添さんの発表。

Scalaでマイクロサービスアーキテクチャーという旬な組み合わせの事例です。

  • ScalaFuture便利
  • 最初はモノリシックなアプリケーションとして作り、大きくなってからマイクロサービスアーキテクチャーを取り入れる
  • サービスを維持しつつマイクロサービスアーキテクチャーに移行するのは、なかなかコストかかるので経営判断が求められる
  • ビズリーチではScalaエンジニアを募集しているのだけれど、集まらないし、いない
  • ビズリーチでは毎日30分のScala勉強会をやっている

といったところで、Scalaエンジニアの確保・教育がかなり大変だそうです。

Scala が支える医療系ウェブサービス

ScalikeJDBCなどのOSS開発で有名な瀬良さんの発表。

こちらもマイクロサービスアーキテクチャーなアプリケーションです。

  • 個々のアプリケーションはScalaJava(Spring)、RoRで作られている
  • Scalaに取り組み始めてから、大抵の人がScalaできるようになりつつある
  • Octopartsによる死活監視(内部的にhystrixを使っている)/APIの並行呼び出し/Kibanaでパフォーマンスメトリクスのレポート
  • SkinnyはJavaをやってた人がScalaやるときに使うとやりやすい
  • Scalaを使うからといってガチガチなScalaコードを書くのではなく、better Javaとして書くと導入しやすい
  • m3では一緒に働いてくれるエンジニア募集

ツイッターでの反応も見る限り、Octopartsが良さそうな感じです。

Java ラブなヌーラボにおける Scala + Playframework 体験記

nulabのウッシー(吉澤)さんの発表。

Playフレームワークのよい点、ちょっとアレな点をうまくまとめてくれました。

  • フレームワークの選択
    • RoRは型がないのがつらい
    • Springは機能的には十分だけど、面白そうではない
    • Playは試行錯誤できて刺激になりそう←決定
  • Hot Reloadingが使いやすい
  • twirlで型安全なviewが作れる
    • 普通のデザイナーにはつらいけど、nulabのデザイナーさんはIntelliJなどで頑張ってくれる
  • データベースマイグレーションがアップグレード・ダウングレード両対応かつ自動でやってくれるので、ブランチの切り替えも楽にできる
  • 後方互換性がないのでとにかく最新バージョンに追随していく必要がある
  • sbtのフロントエンドまわりがつらいので、フロントエンドはgulpに移行した

その他、Scalaの良い点、アレな点などもまとめてあり、Scala超絶初心者の僕にもイメージのつきやすいよい内容でした。

あと、うっしーさんには僕の体調のことも気にかけていただきました。男前です!

2社でのScala開発経験にもとづいてそれぞれの事例を比較してみる

トイレで閉じ込められたことで有名なだいくしーさんの発表。

前職と現職でのScala体験に基づいて、Scalaの現場ってどうなのよっていう話をまとめてくれました。

  • 前職
    • 元々Javaプログラマーが多かった
    • better JavaとしてScalaを採用した
    • match caseを多用してたり、開発時期によってコードスタイルが変わっていったりしている
  • 現職(はてな)
  • 結論
    • どこいっても大して変わらないという印象
    • GitHubでプルリクエスト型の開発/JenkinsでCIはどこでも共通
  • 結論その2
    • Scalaやってるなら弊社にお越しください

結論が唐突でしたが、最近の開発スタイルはだいたいどこも一緒ということなんですね(まともに最近開発をしていないのでよくわかってない)

とあるScala伝道師の過去と現在

糖質制限ダイエットで有名なかとーさんの発表

ScalaでのDDDについてまとめてくれていました。僕の勝手な印象ですが、僕が好きなGroovyでもDDDっぽくするのにはちょっとしたコツが必要だったりしますが、Scalaは意外と簡単に実装できたりします、コップ本を読む限りではあるが。

で、実は恥ずかしながら僕の集中力の限界で内容をあまり覚えていないです…(´・ω・`)

  • フロントとかAPIなどは形はすぐ変わるけど、ドメインの部分は変わらないので、そこを成長させていくことが重要
  • ChatWorksでは社員を募集中
  • Scalaの勉強会では課題を出して、皆で解いて、その解に対する説明をするトレーニングをしている
  • ハイボール飲んでも型の説明をちゃんとできるようになるのが今後の課題
  • ChatWorksでは社員を募(ry

どこの会社でもScalaエンジニアが足りていないようです。

Scala@SmartNews - 高パフォーマンス広告配信システムを3ヶ月で作った話

会場を提供してくれたSmartNewsさんの発表です。

  • FinangleのFutureも便利
  • Scala標準のFutureに比べて挙動が違うのが難点
  • Scalaにおける最適化のプラクティスは必読
  • フロントエンドの話は、僕の集中力の限界でほとんど覚えてません(´・ω・`)
  • 結論
    • Scalaコンパイルが遅いので良いマシンを使え
    • Scalaコンパイル速度をよくするために、小さいアプリケーションを作るようにする
    • SmartNewsを一緒に盛り上げてくれる社員募集中

途中で「この発表を聞いて、AdServiceを書けるようになることが、目標です」と言ってたので、最後に「社員募集中」とくるかなと思ってたら、案の定社員募集中でした。

Future Chainのコードを読んでいたらflatMapmapflatMapmapと続いていたので、読みづらかったのがアレだなぁと思ってたら、

そういえば、flatMapmapforeachで書けるものはfor式に書き換えられる的なことがコップ本に書いてありましたね(うろぼえ)。


Scalaは最近になって本格的に人気が出てきていますが、まだまだScalaができる(一流の)エンジニアが足りないんだなという印象です。それを埋めるために今一流の方々がScalaエンジニアの教育に力を入れているという現状があるようで、普及期から層を厚くする段階の痛みがよくわかる勉強会でした。

え、僕?まだまだ身体がアレなので1日5時間で週3日でよければ…