scalamatsuri2024.jpg

週末は5年ぶりにオフラインでの開催となった「ScalaMatsuri 2024」に行ってきました。

1日目

com.lihaoyiエコシステムの12年

12年前から取り組まれているツール開発のお話の後、後半の未来の話(提言)が目の覚める内容でした。

Scala to WebAssembly: 動機と方法

ScalaのWasmサポートは2019年からあったが、それがどうやって提供されているのか、また課題について最近進展があった事の説明が行われました。
WasmのGC周りはgolangも似たような課題があってRustよりサイズが大きくなってしまう、というのを聞いたことがあるので、そちらも動きがあるのか気になりました。

Project Loomの概要とScalaでの有用性

JDK21で入った軽量スレッド(Virtual Thread)や構造化並行処理(Structured Concurrency)の説明とScalaでの利用方法、既存ライブラリーでのサポート状況などが俯瞰できました。

Scala3とscala-cliでデータプロジェクトの生産性を向上させる方法

データ分析などの検証でScalaを使う際、scala-cliを使えば小さく始められるというのを実際の使い方を交えながら見る事ができ、普段の業務でScalaを使い始めるきっかけによさそうと思いました。

Scala 3のための拡張可能なレコード、そして構造的型によるドメインモデリング

Scala3で導入された構造的型(Structual Types)をより安全に利用するためのライブラリーであるrecord4sの特徴とそれを実装するための工夫が紹介されました。
なんとなくTypeScriptの型エイリアスを想像していました。

日本語埋め込みモデルをScalaから使うには何が必要か

Pythonで行われていた自然言語の埋め込み表現(Embedding)をScalaで行った際の試行錯誤と進め方の知見が発表されました。

Ironライブラリで守られた型安全性

組み合わせ可能な型制約ライブラリーのIronを使うとどのように課題が解決できるのかの例(特に表)が分かりやすかったです。
これもなんとなくTypeScriptのzodを想像してました。

数値ライブラリで始める安全なプログラミング

講演の後にdecimal型(十進小数)に夢を見ている輩が多すぎるという記事を見かけたのでより参考になりました(笑)

PHPからScalaへ: 私の経験

PHPと比較してScalaで感動したfeatureについて語られ、自分もPHPでコード書いてた頃を思い出しながら聴くことができました。

Scala開発者ツールエコシステム

Scalaを使って開発するうえでおススメのツールが紹介されました。ここにもscala-cliは入っていたので使ってみようと思います。

2日目

Scalaビルド時間の最適化

Scalaのビルドがどういう工程で行われるのか、リモートビルドキャッシュやビルドパイプライニングの改善の取り組みについて発表されました。 実際に行われたデモでも目に見えて速くビルドが終わっていて効果を実感できました。

Property-based testing - テストライブラリにやらせよう

期待する安全な境界でテストができる手法の紹介と課題について語られました。
これはいわゆるファジングテストテストなのかが気になりました。

実務で使えるScala初心者向けTips

タイトル通り実務に沿ったTipsで、特にorElseの書き方は中値記法の見た目と相まってなるほどーと思いました。

作って学ぶExtensible Effects

今回最もScalaらしい発表?でした、、難しかった(汗)

Oxを用いたDirect-Style Scala

goroutineのような書き心地をScalaで実現するためのライブラリー(と勝手に思った)Oxが紹介されました。
これも設計思想から関数型プログラミングからの揺り戻しを感じました。

いつ継承を使い、いつ使わないのか

継承(Subtyping)を使って表現する場合と代数的データ型(Algebraic Data Type: ADT)を使って表現する場合のメリット・デメリット、またそれらをどう使い分けるのかが分かりやすく解説されました。
またまたTypeScriptと比較して|使って書けないのかーと思いきや、Union Typesは直和型ではないらしく奥が深い。。

おわりに

ここ最近仕事でサーバーサイドKotlin(とTypeScript)を書く事になり、Scalaとの距離がグッと近くなった中での今回の講演は今までとは違った解像度で聴く事ができました。
formatch式はKotlinにも欲しいけど、ScalaのOptionはNull Safetyの?で書く方がいいなーとか)

また、全体的にScalaの向き合い方に変化を感じたというか、より実用的な内容が重視されたように思えた週末でした。