コンテンツ

前置き

Splinkの奥野です。

SplinkではWebアプリケーションを実装する際に、バックエンドの言語としてScalaをメインに利用しています。Scalaはとてもパワフルな型システムやコンパイラ、長年の実績がありパフォーマンスもよいJVMランタイム、型クラスなどの抽象化機構などなど言語機能・エコシステムが十分に揃っており、安全性、開発パフォーマンス、実行時パフォーマンスのバランスがよい(もしくはバランスをユーザーでコントロールしやすい)、とても実践的で、かつ楽しく開発できる言語だと思っています。近頃の話題の上りやすさでいうと、より新しい言語たちに一歩ゆずるかもしれませんが(個人の感想です)、本体の開発やコミュニティも活発に動いており、個人的にはとても好きな言語の一つで弊社では今後も使い続ける予定です。

さて、そんなScalaですが、最近でもっとも大きなニュースと言えばScala3のRCリリースでしょう。SplinkでScalaを使い続けるにあたって、当然Scala3へのキャッチアップもしなければ、ということになり、有志のメンバーが集まってScala3の変更点や新機能を紹介しつつあれこれ議論する会を社内で行っています。この記事では、その会で調べた&話した内容を何回かに分けてご紹介していきます。詳細な内容は公式ドキュメントを見たほうが早い&正確なので、Scalaの1ユーザーとしてどう影響がありそうかや、どう使っていくのがよいかなどについて併せて触れていければと思います。

Scala3

経緯

Scala3は元々はDottyという名前のプロジェクトで開発が進んでいましたが、昨年9月に正式にScala3になり、今年の4月にScala 3.0.0のRC1まで到達しました。DottyのGitHubリポジトリを見ると2012年がfirst commitであり、当初は研究プロジェクトであったと思われますが、足掛け10年でScala3として世に出てきたわけで、大変めでたいですね🎉 この辺りの経緯については少し前の記事ですがkmizuさんが分かりやすくまとめてくれているので、ご参照ください

Scala, Scala 2, Scala 3, Dotty, DOTの違い:処理系と言語を区別する - kmizuの日記

公式ドキュメントなど

Scala3のドキュメントは、少し前までdottyのドメイン下 にしかなかったのですが、いつ頃からかScalaの公式サイトにもScala3用のページができていたようです。Scala3について知りたい方は、ドキュメント整備を進めてくれている方に感謝しつつ、まずはここを一眺めしましょう。

Documentation

変更点はNew in Scala 3というページが用意されており、ここを見るとどういう変更があったかの雰囲気をつかめます。

New in Scala 3

各変更点の詳細については、若干タイトルが分かり辛いのですが、Language Referenceというページが、Scala2からの変更を個別に説明しているので、Scala2はバッチリなのでScala3の変更点だけ把握したい、という方はここを参照するとよいです。(我々の社内勉強会もこのページをベースにして進めています)

Overview

この記事では、Part1でどういう変更があったかの一覧を紹介しつつ、次Partから各変更点の詳細を説明していきたいと思います。

主な変更点一巡り

Goals