ScalaMaturi2014に参加してきた

感想としては、Scala楽しそうですね。

良かった点

  • お値段がカンファレンスとしては高すぎず助かった。
  • 出てきたお弁当がそれなりにいい物で美味しかった
  • 長丁場なのでお菓子とか水が飲み放題なのは助かった。
  • 空調とか音声周りの対応が早かった。
  • 講演内容が技術寄りで初心者の自分としては為になった。

困ったなあと言う点

  • とにかく長帳場でお昼もガチのLTが流れるのでもうちょっと息つく暇が欲しかった。
  • ABの2会場あったのですがどちらも聞きたい感じのセッションが多くて辛かったです。

目立った単語

話しを聞いていてよく聞こえてきた単語がこのようになります。

話の内容を大別すると

使用しているライブラリ等

  • 並列分散ライブラリ:Akka
  • WebFramework: Play
  • ORM: Slick
  • Twirl: テンプレートエンジン

Akkaはとにかく技術系の話が出るたびにほぼ毎回でてきました。並列・分散のライブラリなのでその辺の需要が高かったんですね。PlayはメジャーなWebFrameworkなのでこちらも何回か見た気がします。ORMはSlickの話しもよくでましたが他にも何件かライブラリが例として上がっていました。

Scala導入理由

Scala導入理由も話しとして多かったのですが、静的型付け、保守性と並列性この当たりに集約されていました。あとは、Scalaおじさんが社内にいたという理由もみうけられました。

開発環境

開発環境はどうもEclipseScala開発環境があまり良くないらしく、IntelliJ IDEAのScala Pluginができが良いのでつかっているという話しをよくききました。ただ、環境を強制しているという話しはあんまり聞いてない気がします。

開発運用問題

これは、コンパイルが遅いと言う話とFullGCをどうやって防ぐかと言う話になっていました。コンパイル遅いは、速いマシンを買えば解決するという提案をしてサラッと流されるケースが多かったです。逆にFullGCに関しては一部の発表で詳しく発表されていました。

各種発表のメモ

「GitBucket: Perfect Github clone by Scala


ScalaとJGitで作られたオープンソースのプロジェクトGitBucketについての紹介でした。githubで開発されていて、現在3000越えのstarをもらっている。開発者もcontributorもそれなりにいるけどまだまだ理想の開発速度を出すには足りないから開発者が欲しい。依存しているテクノロジーとしては、Scalatra, Twirl, Slick, JGit, H2, Jetty, Apache MINAと言った物をしようしています。フロントエンド側は、JQuery, Bootstrap2, jsdifflib, google-code-pretty,AceEditor,DropZone,ZeroClipboardと言った物を使っているようです。
絶えずgithubの開発ブログやデザインなどをキャッチアップしているそうです。開発ではIntelliJ IDEAで開発していて,Gitter,ZenHubを利用しているそうです。最後に質問で、数百人レベルで使用されている事例はありますかという物がありまして、その規模になると現状の実装だと辛いという話しをされていました。

Xitrum Web Framework ライブコーディング

ハイパフォーマンスなScalaのWebFrameworkだそうです。採用事例は国外の方が多くてフランス・ロシア等でよく使われているみたいです。内部アーキテクチャでAnnnotation周りの説明があって、チャットアプリの作成デモをされていました。ScalaJavaアノテーションの違いとかAkkaとか初心者の自分には割とその辺が興味を引く話題でした。

ランチLT

ランチLTと書いてあったので、ライトな発表だろうと思って油断していたら
時間が短いだけでガチなLTが多かったのでびっくりしました。
スポンサー企業が発表していきました。全部では無いのですが、
技術的な話が多かった物をメモしていたので残しておきます。

LINE

LINE社はBackendの話しで「Asynchronous Tasks Monitoring Tool」、「Distributed Tracing System」それに絡んでFinagle, Slicck Saddle, Scrooge、Zipkinといったツール群の話しが聞けました。

http://slick.typesafe.com/
https://github.com/saddle/saddle
https://github.com/twitter/scrooge
https://github.com/twitter/zipkin

サイバーエージェント

サイバーエージェント社はDynalystというサービスでScalaをつかっている会社で配信システムのところで使っているとのことでした。
週一でFunctional Programming in Scalaという本で読書会をしているそうです。技術的にはakka,spray,redshiftなどが出てきました。

http://manning.com/bjarnason/
http://akka.io/
http://spray.io/
http://aws.amazon.com/jp/redshift/

DWANGO

DWANGO社はAndroid API Server, New niconico live、その他4つぐらいのサービスでScalaを投入されているそうです。基本的なArchitechtureはScala 2.1、Play, specs, Scala Test, Squerl, ScalalikeJDBC, Twirl, Scalate+ Mustache, Akkaを採用しているようです。

https://www.playframework.com/
https://code.google.com/p/specs/
http://www.scalatest.org/
http://squeryl.org/
http://slick.typesafe.com/
http://scalikejdbc.org/
https://github.com/playframework/twirl
http://scalate.fusesource.org/
http://akka.io/

CyberZ

CyberZ社はIntelliJで以下に効率的にScalaをコーディングするかという話しをされました
登場した目新しい話しとしては、「IntelliJ Live Template」の話しが聞けました。

http://www.jetbrains.com/idea/webhelp/live-templates.html

グリー初のScalaプロダクト!チャットサービス公開までの苦労と工夫

GreeChatのバックエンドをScalaでどう構築したのかという発表でした。ユーザー数が多く、リアルタイム性を要求され、少ないサーバー台数で動作させたい、5年以上はメンテしたいという要件を満たすものを探したときにScalaが浮上してきたそうです。採用の理由としては、平行プログラミングに強い、一プロセスで複数のコネクションを張れる、静的型付けでの保守性、チームにScalaおじさんがいた等があげられていました。ただ、全体数のなかでScalaおじさんの占める割合が低かったので自主学習とチーム学習を使いこなして乗り切ったそうです。実装としてはfinagleを使用したリクエストを受け付けるのに専念するAPIServer,DB等絡む処理でakkaを使用したEventBusServer,ストリーム関連を担当するStreamServerの
紹介していました。実際に開発する際に出てきた問題は、FullCG,Sharding, UIDとInnoDBとの相性の悪さという問題とその対処が語られました。
ID生成機を作成するという話しをされていたのですが、その成果であるコーンフレークという名前だった気がするのですがググっても見つけられませんでした。あとは、ドメイン駆動設計で作成しているという話しをされていました。

https://twitter.github.io/scala_school/finagle.html
http://ja.wikipedia.org/wiki/%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E9%A7%86%E5%8B%95%E8%A8%AD%E8%A8%88

国技とScala

ドワンゴにおけるScala開発事例で、相撲協会公式アプリのバックエンド開発の話でした。Scala選択の理由として、Type-Safeであること、OOP,Immutable, map/fold,traint,monadといったSkillを強制的に学べることなどを上げられていました。ライブラリの所管としては、ScalalikeJDBC,Twirl,Scaladi,ScalaTestなどを良い面、悪い面をあげてそれぞれ紹介されていました。あとは、得られた知見として ExceptionHandlinでTryを使う、Static Code AnalysisでSCoverageがいいらしい、デプロイ面の話し、Tuningの話しなどをされていました。

http://tlync.hateblo.jp/entry/2014/09/07/185817