Scala の世界最大のオフラインカンファレンス、Scala Days Madrid 2023 に参加してきました。Scala Days は例年に2回、アメリカとヨーロッパで開催されており、今年は Madrid での開催でした。
コロナ期間中 Scala Days は開催されておらず、2019年以来4年ぶりの開催!(前回はLausanne開催でした)
会場は世界中から集ったたくさんの人で賑わい、参加者の熱意の高さから感じられるとても良いイベントでした。その中で印象に残ったセッションの紹介を交えつつ、会場の様子をレポートしたいと思います。
カンファレンス本体の話に移る前に、周辺イベントを紹介します。
Tooling Summit
Tooling Summitは、Scalaエコシステムにおけるコアツールの開発やメンテナンスに携わる人々の招待制の集まりです。サミットの目的は、Scalaエコシステムの改善のための問題やアイデアを共有し、Scalaユーザーの開発者体験を向上させる方法を議論することです。
イベントのレポートはまだ公開されていませんが、以下のようなことをコンパイラチームとツール開発者で議論しました、今回の議論をもとにScalaの開発者体験を改善していきたいね。
- The future of semanticDB, TASTy, and the overlap they have
- Standardizing common directives (using directive の標準化)
- Various worksheet implementations (worksheet の実装や仕様を統一したい)
- Code coverage tooling (scoverageのメンテナ募集)
- The state of editor support for scala-cli
- Planning for sbt 2
- Porting scalameta to Scala 3
(過去のレポート March 2023 - Scala Tooling Summit | The Scala Programming Language)
Scala Sprees
次に紹介するのは Scala Sprees です。これは、OSSメンテナーがメンターとなって、新しいコントリビュータのメンタリングを行い、OSSへの最初の一歩をサポートするイベントです(参加者には Scala Contributor Tシャツが配られます!)。
今回、僕は Metals のメンターとして参加しましたが、何やかやの事情があり、Scala Native のメンタリングも担当しました。当日中にはまだプルリクエストをマージすることはできませんでしたが、メンティーとして参加した人のPRは後日、無事にメインブランチにマージされました🎉🎉
カンファレンス本体
Scala Days Madrid は3日間にわたり、1日目は Martin Odersky によるkeynoteとafter party、2日目と3日目は3つのトラックでイベントが進行しました。
カンファレンス中は軽食が提供されたり、企業ブースでTシャツなどのノベルティが配布されたりと、セッション以外でもいたるところで活発に会話や議論が繰り広げられていました!
The role of Scala in Programming Language Ecosystem
- Scala は 2004年にリリースされ、当時はOOPとFPのハイブリッドなんてありえないという反応だった
- しかし、後発の言語などがScalaと同様な言語機能が取り入れるようになり、目新しさは小さくなってきた
- 一方、多くの Scala や Rust の開発者が、値の変更や外部リソースアクセスの安全性のために、Rust に惹かれている
- でも Rust は手続き型言語、Scala は関数型味を保ったまま、Rust のような安全性を取り入れられないか?
- Linear Haskell なんかも同じ方向性を目指しているんですかね?
- Capture Checking なのか? わからない、勉強せねば〜
Choose your own Scala Center roadmap
このインタラクティブなセッションでは、Scala Center という Scala の発展を担うNPO団体の紹介から始まり、その活動と今後のロードマップについて話しました。
- Scala3 の Reliable Code
- Faster Compilation
- Actionable Compile Errors (Code Action を compiler が生成してくれるように)
- Readable StackTraces (TASTy を利用した stacktrace の改善)
- Safe Dependency Updates (Scala3 LTS)
- How to build a sustainable future for Scala
- Scala 3 の specification: Work-in-Progress Scala 3 Specification | The Scala Programming Language
- Scala Contributor の育成 (Compiler Academy) Becoming a Scala OSS Contributor | Contributing to Scala's OSS Ecosystem | Scala Documentation
- Scala 3 migration のために... (macro の移行を簡単にしたい、sbt-scala3-migration)
- Language Evolution (SIP meeting や Tooling Summit)
- 新規 Scala ユーザーの獲得
- Introduction | The Scala Toolkit | Scala Documentation
- チュートリアルのScala3移行、ScalaCLIを利用したガイド
- よりよいオンラインIDE体験 (scastieのLSPサポートなど)
- Community の運営
- Scala への貢献の促進 Scala Sprees・Scala Bridge・Google Summer of Code
- 各種ツール(ビルドシステム・IDE・コンパイラ)の協同: 上に述べたTooling Summit
- オンラインコミュニティスペースの運営
- Networking (ScalaDays の運営)
- Scala への投資会社から直接意見を聞く (advisory board)
See the slides of our interactive talk at @scaladays "Choose your own Scala Center roadmap", there's a lot we didn't get to share with you in the time #ScalaDays : https://t.co/J0tavBlNQ1
— Scala (@scala_lang) 2023年9月14日
A Deep Dive into the Mill Scala Build Tool
このセッションは mill という Scala の簡単なビルドツールについてのお話。セッションの内容相当のブログ記事も公開されています。
- ビルドシステムはなぜ難しいのか? ビルドパイプラインは純粋関数のcomposeのようだが、以下のような質問に答える必要がある
- これらはとても複雑で、特定のビルドツールが特定のことをどのように行うかを学ぶために、何十ページも必要になる...
- Mill はできる限り、何十ページものドキュメントを読まないと使えないという風にならないようデザインしている(詳しくは上のブログ)
- CoursierやScala-CLIのようなメジャーなプロジェクトはMillを使って作られている!Mill は実用性があるのだ〜
An Intro to Generative Art with Scala
- Flow Fieldsとは、ノイズフィールドから2Dベクトル場を生成するアルゴリズム
- step by step の live coding で Flow FieldsをScalaで実装!
- Processing 4はMaven Centralに公開されていないためハッキーな方法で Processing を利用している。giter8 template使ってね
こちらの発表もブログが公開されています
Explaining Different Coroutine Flavours using Scala Native
- Coroutine の分類
- Stackless vs Stackfull
- Symmetric vs Asymetric
- Coroutine と言われたときはだいたい Asymmetric Stackless Coroutine のことを指すよね
- Project Loom で Stackfull Coroutine
- Scala Native でどう実現するか -> Implement delimited continuations primitives by natsukagami · Pull Request #3286 · scala-native/scala-native · GitHub
Supercharge Your Performance with the Optimus Cirrus Platform
Morgan Stanley の人達による発表
- Optimus Cirrus という並列分散処理のためのプラットフォームを内製開発している
- ビルドという関数の参照透過性を実現できれば、このプラットフォームを利用して、容易に分散ビルド・ビルドキャッシュのためのビルドシステムを構築できる!?
- デザインとしてはBazelのような Artifact Based Build system と同じ理屈
- やりました(!??!!??)そして、OSS化予定です
- BSP を利用して IDE サポートもうまくいっているらしい。すごすぎる
OSS化、楽しみ〜〜
Batteries-included Scala with Scala Toolkit
Scala Toolkit を利用して、Pythonのように Batteries Included (scalaをダウンロードしたら、ライブラリの選定とかせずにすぐに基本的な開発のためのライブラリ一式が利用できる状態)を実現します!という話。
Scalaの初学者を遠ざける理由の一つに、何かをするために利用するライブラリがたくさんあって、何を利用すればいいのかわからないという問題があるので、toolkitで厳選した簡単なライブラリを提供することで初学者がスッとScalaの開発に入っていけるようになるのはいいですね。
Closing Panel
Scala はどこか大きな組織や大学の研究機関が大量のリソースを投入して、なんかすごいエンジニアが作っていると思われるかもしれませんが、実際は(だいたいのコンパイラはそうなのですが)、数少ないエンジニアがパートタイムまたはフルタイムで、あるいは趣味の時間を使って開発されているに過ぎません。
今後のScalaの開発継続のためにも、Corporate Membership(1500CHF=約25万のone-time bucket-level donationも)での協力をお願いします!
終わりに
4年ぶりの開催となったScalaDaysは、様々な国から多くの人が集まる熱気あるカンファレンスとなり、世界のScalaコミュニティの活発さを実感することができました!
日本のScalaコミュニティは活発であることが認識されており、ScalaMatsuriのオフライン開催を期待する声や、より多くの日本のScala開発者が世界のScalaイベントに参加してくれることに期待が寄せられています。来年のScalaDaysに参加しようという方、ぜひ一緒に行きましょう。
最後に、ScalaDays チームが作成したカンファレンスの素晴らしいまとめ動画で締めくくりたいと思います。
As we’ve settled back from #ScalaDays Madrid, we again want to send a big thanks to everyone who attended, spoke, & sponsored.
— Scala Days (@scaladays) 2023年9月21日
Plus, a special thanks to @xebia for organizing & the support of @scala_lang!
A thread pic.twitter.com/0ADIOJi6PQ