Scala Days 2015 SanFrancisco 3日目

Scala Days 2015 SanFrancisco 3日目、最終日です。最後にクロージングセッションとしてScala開発チームに参加者が質問できるという時間があったので通常のセッションは6枠のみでした。全体を通しての感想については別途エントリを書こうと思いますので、このエントリでは2日目同様参加したセッションで記憶に残っている内容をまとめておきます。

f:id:takezoe:20151016115049j:plain

Scala IDE from 0 to 4.0

参加者は少なかったものの、個人的に今回のベストセッションだったかもしれないScalaIDEの話。

ScalaIDEの歴史をコミュニティ時代から振り返り、4.0の新機能や今後の展望を語るというものでした。重い重いと言われるScalaIDEですが、当初を知る人たちからすると涙ぐましいまでの改善が行われています。また、Presentation Compilerは現在ではEnsimeやPlay Templateでも使われています。

ScalaIDE 4.0の機能の中では.sbtファイル用のエディタに焦点をあてており、機能的にはScalaエディタと似ているため、4時間ほどのハックで開発することができたと言っていました。裏側の処理を説明していたのですが、Eclipseプラグインを開発していた身からすると、やっぱりそうやるよね!と共感できる内容でした。

また、4月に4.1がリリース予定であり、マクロのサポートなどが強化されるとのことです。

Akka HTTP: the Reactive Web Toolkit

Roland KuhnによるAkka StreamsとAkka HTTPのライブコーディングでした。ドキュメントにも書かれていますが、Akka Cluster内の通信はAkka Remoting、クラスタ間や外部システムとの通信にAkka HTTPを使うという位置付けのようです。

事前に個人的にAkka Streamsを少し触っていたので特に目新しいことはありませんでしたが、質問タイムで「WebSocketもすぐにサポートされるよ」とのことでした。

The road to sbt 1.0 is paved with server

JoshとYokotaさんのセッション。前半はシェルスクリプトからMake、Autoconf/Automake、Ant、Maven、さらにはRakeやGradle、BlazeやPantsまで、ビルドツールの歴史を紐解くというもので、ビルドツールがどのように進化し、その時々の課題を解決してきたのかが整理されていました。

sbt 1.0では安定性(ここでいう安定性とは互換性のことだと思います)を重視し、sbtの機能を様々なモジュールに分割するとのこと。また、現在ではIDEなど他のツールからビルド情報に触れなければならないケースも出てきているため、クライアントサーバモデルのsbt-serverに移行する予定とのことです。

Legacy modernization from monolithic PHP to reactive SOA

HootsuiteがレガシーなPHPアプリケーションをScalaに移行したという話。登壇されていたMikeさんは元々COBOLFortranからJavaに移ってきた人らしく、「Legacy to Legacy」とジョークを飛ばしていました。

特に印象に残っているのはレガシーコードを以下の点です。

  • レガシーコードにはメンテナンスやセキュリティなど様々な問題がある
  • レガシーコードを放置するとテクノロジーそのものがボトルネックになる

ScalaチームはJavaプログラマを雇ってBoldRadiusと教育して作ったとのこと。また、まず認証やユーザ管理周りを一番最初に移行したそうなのですが「他のサービスがこのサービスに依存しているから」「最も大変な場所を最初にやったほうがよい」という理由からとのことです。このあたりは個人的には以下のように逆の感覚がありますね…。

  • JavaよりもLL言語の経験者のほうがスムーズにScalaに移行できている
  • 最初はチームの成熟度が低いので難しいところからやるとカオスなものができあがる

レガシーコードをScalaに移行するというのはScalaの導入としてはありそうなパターンだと思うので、参考になる部分があるかなーと思ったのですが、ちょっとそのまま当てはめるのは難しそうだなと思いましたw

Why Scala.js

Li Haoyiさんのセッション。OpenWetherのAPIScala.jsから使ってみるというライブコーディングをしていました。思っていたよりはかなりさくさくコンパイルできていたのですが、これ実際にそれなりの規模のアプリケーションを作った場合にどのくらいのコンパイル時間になるのかは気になるところ…。

また、Scala.jsを使うべきユーザとして以下の3種類をあげていました。

  • Webアプリケーションを作っている人
  • Webアプリケーションを作っていない人
  • コンパイラ開発者

普段Webアプリケーションを作っていない人でも、自分の作ったプログラムをScala.jsでブラウザで動くようにしておけば他に人に簡単にシェアできるよ、ということです(若干無理やり感ありますがw)。

トークも軽快で、随所に盛り込まれたジョークも面白く、3日間の疲れをわすれてリラックスして聞けるセッションでした。