Scala の世界最大のオフラインカンファレンス、Scala Days Madrid 2023 に参加してきました。Scala Days は例年に2回、アメリカとヨーロッパで開催されており、今年は Madrid での開催でした。
scaladays.org
コロナ期間中 Scala Days は開催されておらず、2019年以来4年ぶりの開催!(前回はLausanne開催でした)
developer.hatenastaff.com
会場は世界中から集ったたくさんの人で賑わい、参加者の熱意の高さから感じられるとても良いイベントでした。その中で印象に残ったセッションの紹介を交えつつ、会場の様子をレポートしたいと思います。
カンファレンス本体の話に移る前に、周辺イベントを紹介します。
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 です。これは、OSSメンテナーがメンターとなって、新しいコントリビュータのメンタリングを行い、OSSへの最初の一歩をサポートするイベントです(参加者には Scala Contributor Tシャツが配られます!)。
github.com
今回、僕は Metals のメンターとして参加しましたが、何やかやの事情があり、Scala Native のメンタリングも担当しました。当日中にはまだプルリクエストをマージすることはできませんでしたが、メンティーとして参加した人のPRは後日、無事にメインブランチにマージされました🎉🎉
github.com
カンファレンス本体
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 のような安全性を取り入れられないか?
Choose your own Scala Center roadmap
このインタラクティブなセッションでは、Scala Center という Scala の発展を担うNPO団体の紹介から始まり、その活動と今後のロードマップについて話しました。
- Scala3 の Reliable Code
- How to build a sustainable future for Scala
- 新規 Scala ユーザーの獲得
- Community の運営
このセッションは mill という Scala の簡単なビルドツールについてのお話。セッションの内容相当のブログ記事も公開されています。
www.lihaoyi.com
- ビルドシステムはなぜ難しいのか? ビルドパイプラインは純粋関数のcomposeのようだが、以下のような質問に答える必要がある
- どのタスクが何に依存するのか?
- 入力ファイルはどこから来るのか?
- 何がどのような順序で実行される必要があるのか?
- 何が並列化できて、何が並列化できないのか?
- タスクはどこでディスクを読み書きできるのか?
- クロスビルドはどのように処理するのか?(ScalaのバージョンやJVMのバージョンなど)
- ...
- これらはとても複雑で、特定のビルドツールが特定のことをどのように行うかを学ぶために、何十ページも必要になる...
- 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使ってね
こちらの発表もブログが公開されています
www.chris-kipp.io
Explaining Different Coroutine Flavours using Scala Native
Morgan Stanley の人達による発表
- Optimus Cirrus という並列分散処理のためのプラットフォームを内製開発している
- ビルドという関数の参照透過性を実現できれば、このプラットフォームを利用して、容易に分散ビルド・ビルドキャッシュのためのビルドシステムを構築できる!?
- デザインとしてはBazelのような Artifact Based Build system と同じ理屈
- やりました(!??!!??)そして、OSS化予定です
- BSP を利用して IDE サポートもうまくいっているらしい。すごすぎる
OSS化、楽しみ〜〜
Scala Toolkit を利用して、Pythonのように Batteries Included (scalaをダウンロードしたら、ライブラリの選定とかせずにすぐに基本的な開発のためのライブラリ一式が利用できる状態)を実現します!という話。
Scalaの初学者を遠ざける理由の一つに、何かをするために利用するライブラリがたくさんあって、何を利用すればいいのかわからないという問題があるので、toolkitで厳選した簡単なライブラリを提供することで初学者がスッとScalaの開発に入っていけるようになるのはいいですね。
Closing Panel
Scala はどこか大きな組織や大学の研究機関が大量のリソースを投入して、なんかすごいエンジニアが作っていると思われるかもしれませんが、実際は(だいたいのコンパイラはそうなのですが)、数少ないエンジニアがパートタイムまたはフルタイムで、あるいは趣味の時間を使って開発されているに過ぎません。
今後のScalaの開発継続のためにも、Corporate Membership(1500CHF=約25万のone-time bucket-level donationも)での協力をお願いします!
scala.epfl.ch
終わりに
4年ぶりの開催となったScalaDaysは、様々な国から多くの人が集まる熱気あるカンファレンスとなり、世界のScalaコミュニティの活発さを実感することができました!
日本のScalaコミュニティは活発であることが認識されており、ScalaMatsuriのオフライン開催を期待する声や、より多くの日本のScala開発者が世界のScalaイベントに参加してくれることに期待が寄せられています。来年のScalaDaysに参加しようという方、ぜひ一緒に行きましょう。
最後に、ScalaDays チームが作成したカンファレンスの素晴らしいまとめ動画で締めくくりたいと思います。