Scala eXchange 2017に参加してきました

f:id:takezoe:20171218053514j:plain

ロンドンで開催されたScala eXchange 2017でGitBucketのLTをさせていただきました。スライドは以下になります(口頭で話した部分を付け足すなどちょっと修正してあります)。今回もいろいろ反省が多く、修行しなくては…という感じでした。

www.slideshare.net

参加したセッションで記憶に残っているものを挙げておきます(1日目のセッションは自分の発表の準備してたのでほとんど記憶がありません)。

Leave Jala Behind: Better Exception Handling in Just 15 Mins

初日のライトニングトークScalaでの例外の扱い方について、Javaスタイルのtry〜catchブロック、Tryを使った方法、Exceptionsを使った方法を紹介していました。

Scalaでのエラー処理の方法はどうやるべきかというのは悩ましいところがある気がしますが、エラーの表現としてTryを使うのはともかくExceptionsのシンタックスシュガーを使うならtry〜catchブロックでいいんじゃないかなーというのが個人的な感覚です。

ただ、最近はScala界隈の話題は高度化しすぎているので、こういう入門者向けの話も定期的に出てくるといいなと思います。

Is ScalaC Getting Faster, or Am I Just Imagining It?

コンパイラ高速化の技術的な話かと思っていたのですが、ちょっと思ってたのと違いましたw 以下のようなことを話されていました。

  • Scala 2.12になってからすでに20%以上コンパイラのパフォーマンスは改善されており50%の高速化も夢ではない
  • 高速化のためにはベンチマークやプロファイリングが重要だけどコンパイラベンチマークやプロファイリングは難しい
  • scalacの高速化の成果はDottyにも還元される
  • 様々な人がコンパイル速度の高速化に取り組んでいるのでもしアイデアがあれば聞かせて欲しい、取り組みに参加して欲しい

技術的な話というよりは、どちらかといえばコミュニティ寄りの話だったのですが、パッションを感じる熱いセッションだったと思います。

Compiling Collections to SQL with Slick

今回はこのために参加したと言っても過言ではないほど楽しみにしていたSlickの開発者Stefan ZeigerさんによるSlickのQuery Compilerの解説セッション。内容的にはだいぶ前のものですが以下のスライドが近く、このスライドを現状にあわせてアップデートした感じでした。

http://slick.lightbend.com/talks/2014-03-04_LAMP/Slick%20Query%20Compiler.pdf

デバッグ用のオプションや、コンパイラのフェーズ、ASTの変換の様子がまとめられており、ノードの特殊なプロパティについても説明があり、これからSlickのソースを読んでみようという人には大変参考になる内容だったのではないかと思います。是非スライドを公開して欲しいです。

How to Name Things: The Hardest Problem in Programming

Peter Hiltonさんによるネーミングについてのセッションでした。

彼は結構前から同じような話をしているようですし、Scalaとも直接関係ある話ではないのですが(fishとかspaceshipみたいなASCIIアートオペレータはやめろという話はありましたがw)、特に良い名前付けのためにはボキャブラリを増やすことが重要という点は非常に刺さるものがありました。良いコードを書くためにはプログラミングテクニックだけでなく教養も必要ということですね…。

Composing Programs

Functional Programming in ScalaRed Book)の著者Rúnar Bjarnasonさんによる関数型プログラミングの基礎的な話でした。

スライドは以下のURLで公開されています。

https://www.dropbox.com/s/0l7r5o7tczzx57m/Compositionality.pdf?dl=0

最初に紹介する係の人が「FP in Scala持ってる人!」→みんな一斉に手をあげるからの「エクササイズ全部ちゃんとやった人!」→1人以外全員手を降ろすが面白かったです。

まとめ

去年のScala界隈ではFreeモナドがブームだったようですが、今年はTagless Finalが流行りみたいです(自分は今回はその手のセッションには参加しませんでしたが…)。他のセッションではShapelessやcirceといったライブラリの名前がよく登場しており、Scala界隈における関数型プログラミングの人気の高さを再確認しました。

Scala eXchangeは(ヨーロッパ開催のScala Daysを除けば)ヨーロッパ最大のScalaカンファレンスとのことで参加者数も多く、非常に熱気のあるカンファレンスでした。