ScalaIO 2017に参加してきました

f:id:takezoe:20171107031414j:plain

11月2日、3日にフランスのリヨンで開催されたScalaIO 2017にスピーカーとして参加してきました。このエントリでは参加したセッションの中から印象に残ったものを紹介したいと思います。

Compiling like a boss!

Scalaで分散コンパイルによるコンパイル速度の高速化を実現するHydraのセッション。事前のスケジュールではTriplequoteのお二方でのトークとなっていましたが、Iulianさんは不在でMircoさん単独でのトークでした。

ScalaDaysでのセッションとほとんど同じ内容だったと思いますが、今回のプレゼンテーションではIntelliJでのサポートが利用可能になる、Hydraのモニタリングが可能になるという2点のアップデートがありました。以下のスライドは今年のScalaDaysで使用したもののようですが、上記二点のアップデート以外は今回も同じ内容のものだったと思います。

Move fast and fix things

Scala Italyの主催者でもあるbuildoのGabriele PetronellaさんによるScalafixのセッション。

Scalafixのコンセプトや、内部でどのようなことをしているのかがわかりやすく説明されていました。ScalametaがASTだけでなくソースコードの情報も持っているので、単にプログラムをASTで操作するだけでなく、コメントを残して部分的にパッチをあてたりできるというところが面白かったです。

The Making of an IO

SlamDataのDaniel SpiewakさんによるIOモナドの話…だったのですが、Scalaz7のTaskを壮絶にディスった後cats-effectの紹介をするという流れでした。スレッドプールをどう分けるべきか、どのくらいのスレッドを割り当てるべきかの指針も示されていました。

Danielさんが異常にハイテンションかつオーバーアクションでステージを常に動き回っているのが印象的でした。早口だったので聞き取れない部分も多かったのですが、とにかく勢いがあり、時間の経過をわすれさせる熱量がありました。

The Design of the Scalaz 8 Effect System

こちらはSlamDataのCTO、John A. De Goesさんのセッション、両者ともSlamData所属、catsとScalazのIOということで完全に狙った配置だと思いますが、Danielさんによるcatsのセッションの直後に同じ会場でScalaz8 Effect Systemの話でした。

Scalaz8のEffect Systemはスレッドではなくfiberを生成するfork/joinフレームワークに基づいており、リソースのリークもなく性能も非常に優れているとのことでした。

Johnさんは11月11日〜13日にサンフランシスコで開催されるScale By the Bay 2017でも同じ話をされるようです。また、ScalaMatsuri 2018にもトークを応募されているようです。タイトルは違いますがIOの話のようなので同じ話が日本でも聞けるかもしれません。

Case classes ate my RAM

FindifyのRoman Grebennikovさんによるセッション(Findifyはスウェーデンの企業のようですが、Romanさんはロシア在住のようです)。Scalaのコレクション(に格納されるケースクラス)のメモリのフットプリントを気合いで圧縮するという話でした。

Shapelessでケースクラスをほげほげしてプロパティの値を直接メモリ(バイト列?)にマッピング/復元するという荒技を使っているようです。まだプロダクションでは使っていないとのことでしたが、圧縮・展開にかかるオーバーヘッドとメモリ削減のトレードオフなどベンチマーク結果に対する考察もあり、面白いセッションでした。

github.com

こちらも11月23日〜25日にスロベニアで開催されるBeeScala 2017で同じ話をされるようです。

Next generation Scala builds with CBT

Slickなどでお馴染みJan Christopher Vogtさんのセッションで、Scala Days New Yorkでも聞いたcbtのセッションです。

ScalaDaysで聞いたときは正直完全にネタだと思っていたのですが、かなり本気で取り組んでいるようで、ビルドツールとして必要な機能は一通り実装されたようです。cbtのコンセプトを説明した後はデモ中心で各機能の紹介をしていました。IntelliJサポートもIntelliJの次のバージョンから利用可能になるとのことです。

ちなみにこのIntelliJサポートはロシアの学生さんがGoogle Summer of Codeで開発したものだそうで、本人が壇上でデモをしていたのですが、後で話したらめっちゃ緊張してたそうです。全然そんな感じには見えなかったし、英語も苦手と言ってたのに上手ですごいなぁと思いました。

github.com

Q&Aでの突っ込みがかなり激しかったのですが、個人的にビルドツールに自分の名前を付けてしまうお茶目さに惹かれているのでワンチャン目指してこれからも頑張って欲しいです。

Open Source Spreeについて

自分はずっとトークを聞いていたので参加しなかったのですが、会場ではトークセッションの他にハンズオンやScala Center主催のOpen Source Spreeなどが開催されていました。Open Source SpreeというのはScala関連のOSSにその場でコントリビュートしてみよう(コントリビュートするとTシャツがもらえる)というもので、Scala Centerが各地のScalaカンファレンスで開催しているようです。

github.com

https://camo.githubusercontent.com/ff0133f2a3c26674002a16eb36e19d66cdd8e1d4/68747470733a2f2f7062732e7477696d672e636f6d2f6d656469612f43746e43727476574141414f306e452e6a70673a736d616c6c

今回のScalaIOではトークも採択されたScalaz、scalafix、cbt、hamstersなどのコミッターがチューターとして協力していたようです。自分もPredictionIOやGitBucket、Scalatraなどで協力できたらとは思ったものの、さすがに英語力的に厳しいと思ったので今回は手を挙げませんでしたが、将来的にはこういうこともできるといいなと思います。

全体的な感想など

ここ1〜2年ほど、Scalaのカンファレンスではどこもかしこもフリーモナドの話ばかりだったような気がするのですが、今回はFreestyleのトークが1つあったくらいでフリーモナドブーム(?)は一段落したのかなという印象でしたw ScalaDays後で大きなトピックがなかったせいか、逆にバラエティ豊かなトークが揃っていたのではないかと思います。ショートセッションやLTも多様性という意味でよく機能していたと思います。

今回初めてScalaDays以外の海外カンファレンスに参加したのですが、ScalaMatsuriなどと同じく現地コミュニティの方々の尽力で運営されている様子がよくわかりました。また、それと同時にScalaMatsuriの運営の素晴らしさも感じました。海外スピーカーの豪華さはScalaMatsuriも引けを取っていないと思うのですが、やはりスピーカーが作者だったりコミッタだったりするケースが多いのでそういう部分での質の高さや、Q&Aのやり取りなどにレベルの高さを感じました。

全体的にはScalaDaysとは一味違ったアットホームな雰囲気があり、リラックスして参加できるカンファレンスだったと思います。フランス語のセッションと英語のセッションがあり、自分は英語のセッションに参加していたのですが(フランス語はまるでわからないので…)、フランス語のセッションの中でもscala-hamstersの作者の方の話や、Alpakkaにコントリビュートしてみた話などは興味があったので可能であれば参加してみたかったです。