2019年6月30日

ScalaMatsuri 2019に行ってきた


前回の投稿が「ScalaMatsuri 2018に行ってきた」で、その間何も投稿していなかったのかと軽くショックなのですが、今年は初日が平日開催だったのでお休みを頂いてお邪魔してきました。

1日目

Scalaライブラリを作る前に知っておきたいメンテナンスのこと
ライブラリを提供するにあたって、どうやったら使ってもらいやすいか(特にJavaとの相互運用性)や、リリースバージョン間の互換性や依存関係など、普段のサービス開発とは異なった視点が必要なところは面白そうに感じました。

Scalaにおける型クラス入門
”型クラス≒型システムにより支援されたストラテジパターン”という切り口が個人的にしっくりきたのと、Scala2のimplicitとScala3からのdelegate-forに書き方が変わるという情報が収穫でした。

コードで理解するPlayFrameworkの脆弱性
PlayFrameworkで過去に報告された脆弱性を例に、何が原因でどう対策したのかの解説が行われたのですが、どれも何気に普段の開発でも踏みやすいような内容だったので、後からじわじわと空恐ろしくなりました。。

ScalaプロジェクトでEffを使用する利点
Futureとfor式を使ってScalaっぽく書きたい(けど挫折した)身としては、より便利とおすすめされるEffはとても気になりました。

こんなに違うScalaとKotlin
ScalaとKotlinの構文的やリストの挙動の違いを見て、Scalaと構文が似てる気持ちでKotlinに入門すると痛い目を見そうな感じがしました。

DOT計算をやさしく説明する
不勉強でうまく感想を書くことができませんが(汗)、プログラミング言語が満たす性質を証明する何か(チューリング完全?)のような印象を受けました。

ハイパフォーマンスScala
ExecutionContextやリストの特性、Boxing/Unboxingの挙動に気を使うことでより高いパフォーマンスを出すコードを書くためのコツを知ることができました。計測大事。

Scala💛Graal
個人的に最近気になっているGraalについてTwitter社での取り組みについての発表でしたが、GraalVMとGraalは異なるもの(後者はJavaでのJIT実装)で、JVM標準のJITよりモダンなコードで書かれたGraalをチューニングすることでパフォーマンス改善を行うための試行錯誤の過程が面白かったです。

継続とDI
オブジェクト指向言語でよく行われている委譲とDIに対し、関数型言語では”継続”というアプローチを取ることでアドホックに合成がしやすいなど、両言語の特性を使えるScalaならではの使いどころなどが説明されました。

2日目

仕事でScalaを使おう - Arm Tresure DataでのAirframe活用事例
Scalaのロギングライブラリを探していた際、たまたま見つけたのがairframe-logで、そこからちょっと気になっていたので今回いい機会となりました。

いかにして我々は10年もののPerlプロダクトをScalaでリプレースしたか
”レガシーシステムをScalaでリプレースする”は鬼門のように感じていた時期があったのですが、こうやって着々と完走した事例が紹介されるのを見ると、必要なのはやりきる力なんだと改めて思いました。

over40の転職成功事例(オフレコ枠?)
今いらっしゃる職場に至るまでの経緯(しくじり)とその対処法、組織での振る舞いや心構えなどの発表と議論が行われました。

ScalaでWeb開発するときのデファクトな構成が知りたい
Webフレームワーク、DBライブラリ、JSONライブラリのそれぞれで、参加者の方が業務でよく使われているプロダクトの多数決とそのいいところの共有が行われました。

gRPC gateway with Scala
セッション後の質疑応答の中で、実務としてのマイクロサービスでの開発や運用が普通に語られているのが印象的でした。

From Go To Scala Easy vs Simple
Go言語とScala(とKotlin)の"Simple"と"Easy"の感じ方の違いや、C++やSwiftも参戦しての熱い議論(プロレス)が行われました。みんなちがってみんないい。

Finagle(thrift) admin-page probrem
Finagleでやり取りされるthriftのraw dataが格納されたMySQL(KVSとして有名!)の管理ツール画面フォームを、thriftのコンパイラが生成するASTより生成する発表が行われました。

おわりに

Scalaを触る時間が少しずつ増えてきたせいか、アカデミックな内容からより実務的な内容を選択したような気がしました。implicitは怖さが少し軽減されてきたので、次は既存の課題をScalaらしい関心の分離が行えるような取り組みを行っていきたいと思います。