Upgrade to Pro — share decks privately, control downloads, hide ads and more …

数十万行のプロジェクトを Scala 2から3に完全移行した

数十万行のプロジェクトを Scala 2から3に完全移行した

2024年12月のScalaわいわい勉強会での発表資料

https://scala-tokyo.connpass.com/event/335477/

kenji yoshida

December 13, 2024
Tweet

More Decks by kenji yoshida

Other Decks in Programming

Transcript

  1. がくぞ @gakuzzzz·Follow そういえばアルプのプロダクト、しばし前から Scala 3 で 本番環境も動いてましたが、いつでも戻せるように Scala 2.13 でもクロスビルドしてました。

    それを先日 2.13ドロップして Scala 3 のみにしたので 諸々便利な機能も使えるようになりましたヤッター 7:34 PM · Oct 31, 2024 30 Reply Copy link Read more on X 4 / 30
  2. 残ってた主な課題 Apache Spark 古いsttp akka 関連どうする?pekko 移行? refined のScala 3

    対応macro その他独自macro の対応 3 だけtest 落ちる箇所修正 7 / 30
  3. Apache Spark これ書いてる2024 年12 月現在でもSpark 公式は Scala 3 非対応 非公式で無理やり頑張るツールはある

    そもそもAWS のEMR 使っていた影響でSpark 関連部分 のコードだけScala 2.13 ですらなく2.12 だった 8 / 30
  4. refined のScala 3 対応macro https://github.com/fthomas/refined Scala 2 なら大きな不満ないが・・・ compile 遅くなる罠はある

    公式がScala 3 のmacro ほぼ未対応 そもそも開発活発ではないのでは? 17 / 30
  5. refined のScala 3 対応macro compile error のmessage にScala 2 と互換無く

    なったが基本的に動くので許容範囲なものが完成 まだ中途半端にfthomas/refined に依存したまま だが、今後iron に移行するか、そもそも全部独自に してしまうか何かしたいかも? https://github.com/Iltotore/iron 20 / 30
  6. Scala 3 移行後 約1 ヶ月でimplicit をほぼ全部消してgiven や using やextension にしたぞ!

    ほぼ自分がやった 確か元々は数千箇所あったはず ここでもscalafix 大活躍 数十個は書いた 24 / 30
  7. Scala 3 移行後 scalafix だけScala 2 で書かないといけないの で、はやく対応してくれ〜 PolyFunction やexport

    使ったりenum に一部書き 換えたり、その他色々やってる最中 26 / 30