Scalaわいわいランドは2025年3月14日、Scalaわいわい勉強会#5を開催しました。

今回もハッシュタグは#scala_waiwaiとなっております。発表に対する感想や盛上がりが確認できます。ぜひご覧ください。
今回も前回の構成を踏襲し、トーク3本(うち一本はお題枠『初心者向け』)、LT3本の構成になりました。
Talks
@tanishiking24 -- Scala meets WebAssembly
Scala の WebAssembly (Wasm) 対応を進めている
id:tanishiking24 さんによる発表。Wasm が導入された背景から Scala.js における Wasm 対応、Wasm 周りのプロポーザルや現状のランタイムの実装に至るまで、網羅的な内容をわかりやすく説明してもらいました。バックエンドエンジニアが多めの会場だったためか聴衆は興味津々で聞き入っていましたね。
Scala における Wasm 対応は実験的なものが既にリリースされており、さらにここから最適化の余地がたくさんあるとのことでしたが、現在存在するプロポーザルをうまく組み込んで Wasm サポート言語として頭角を現わしてほしいですね。


@by110416 -- Scala でクロスプラットフォームな SMTP クライアントを書く
Scala においてクロスプラットフォームかつ非同期・マルチスレッドな処理を安全に扱いたいとき、真っ先に候補に挙がるのが Cats Effect です。これを基盤に組み立てられたストリーム処理ライブラリである fs2 を用いて @by110416 さんは SMTP クライアントを、なおかつ TLS に対応させた形で実装しました。JVM でも Node.js でもネイティブバイナリでも動作するSMTPクライアントを素直に記述できる Scala と Cats Effect / fs2 の懐の広さがうかがえます。コネクションや TLS をめぐる複雑に入り組んだ処理が、Scala の強力な合成能力によって安全に組み立てられていく様子は他ではなかなか見られないはずです。
@by110416 さんが「Scala は低レイヤーのライブラリは充実しているが中レイヤーのライブラリは不足気味」とおっしゃっていたのが印象的でした。確かに、非同期処理やパーサ、エラーハンドリング等に関しては非常に強力かつ高品質なライブラリが数多く存在する一方、メールや特定のクラウドへのSDK、グラフ描画ライブラリといったライブラリはより貴重です。Scala わいわい勉強会が間口を広げて今後そのようなライブラリを書いてくれる逸材を輩出したいものですね・・・


[初心者向け枠] @Kory__3 -- 多相メソッドの話
Scala エンジニアなら、いやソフトウェアエンジニアなら一度は触ったことがあるであろうジェネリクス、より一般には多相メソッドと呼ばれているものを使う上で初学者が持っておきたい視座について、簡単な例から始めつつ、「任意の型について関数が必ず手に入る」という考え方に誘導してくれる発表でした。
僕がジェネリクスを初めて知ったのも確か Scala だったような気がするのですが、具体的な型が分からなくても「動く」の!?とビックリした覚えがあります。動くにもいくつかのレイヤーがあって、例えば定義する側では分からなくても呼び出す側ではコンパイラにとってはどの型が入るかは既知ですし、ビルドされてバイトコードになったコードが「動く」ときには詳細な型情報は消えてしまっているのですがそれを利用する箇所は厳格な型検査を通った「わかってる」コードなので動いちゃうんですね。
このあたりの「高級な表現では既知だったはずの情報が、低級な表現では消えている」というのはよくあることで、例えば CPU は Boolean が何なのか知らないよね、といった話、すなわちイレージャの概念を紹介してくれるのが以下の記事です(@xuwei_k さんありがとうございます!)
https://t.co/P9dqzDGM0j
— Kenji Yoshida (@xuwei_k) 2025年3月14日
イレイジャ
自体の一般的な概念の説明は個人的にはこれがオススメだぞ#scala_waiwai


LTs
@nozomitaguchi -- Scala で灰色問題を解いた時に面白く感じたことや関数など
競技プログラミングにおける問題を Scala を活用して解いてみよう!という LT でした。絵本を実際に手元で回転させてデモすることで、transpose と reverse を組み合わせるだけで「右に90度回転」みたいな操作になるのが直感的に理解できて、関数合成の面白さを改めて感じました!

@exoego -- Scala 3 で GLSL のための c-like-for を実装してみた
Scala でゲーム開発をしている会社がある、という衝撃的な事実の発表から始まり、しかもその会社が GLSL シェーダへのトランスパイラをマクロで実装している、というさらに驚愕の事実に会場は沸き立ちました。Scala のマクロは他言語と比べても遜色ないどころか非常に洗練されなおかつ安全であり、トランスパイラを簡単に作れてしまうんですね。きっと Scala も喜んでいると思います。自作の for 文をトランスパイルしてしまうコードを書ける @exoego さんもめちゃ凄いと思います・・・

@windymelt -- AI Coding Agent 時代の Scala
Cline をはじめとする LLM を用いて主体的にコーディングを行ってくれるツールキットの潮流がにわかに起こっていますが、Scala で活用してみるとどうなの?というのを確かめてみた LT でした。Scala のモジュラリティや型システムの表現力の豊かさがかなり有利に働くように思っており、今後盛り上がってほしいな〜と願っています。

Coffee Sponsor
前回に引き続き、ワンダーソフト株式会社さまよりコーヒースポンサーとしてハンドドリップでコーヒーの提供をいただきました!
発表中もコーヒーのいい香りが会場に漂い、良い雰囲気だね〜とスタッフからも参加者からも好評でした。軽食に合うおいしいコーヒーの提供ありがとうございました!本当においしかったです。

#scala_waiwai ☕️飲めて最高 ヽ(’ω’)ノ三ヽ(’ω’)ノ コーヒーの提供は @wonder_soft pic.twitter.com/ZghgbbnwBK
— TATSUNO Yasuhiro (@exoego) 2025年3月14日
懇親会
今回は懇親会はLTを行いながら軽食をとりつつ会話するという形式で実施してみました。なんとありがたいことに株式会社FOLIOさまのご厚意によって当初の予定にはなかった軽食をご提供いただきました。おいしい軽食を本当にありがとうございました。スタッフ一同を代表しまして御礼申し上げます。


あとがき
試行錯誤しながらの開催を重ね、もう5回目の勉強会を達成することができました。ここまで来ると親戚の子供が成長したかのような感慨深さがあります。 といってもここまで成長してこられたのはスタッフを支えてくださった参加者の皆様の熱気と会場提供くださった会社さまのご協力あってのものです。 あぐらをかかないよう背筋を伸ばして今後もしっかり運営を行っていきたい所存です。
今回も前回と引き続いて初心者枠を用意したのですが、参加者の皆様にご満足いただけたなら幸いです。一方で実際の発表現場では初心者から識者入り交じっての大盛り上がりを見せ、スケジュール進行のため途中でいったん切り上げるほどの激しい化学反応が起こりました。熱意のある人々を一箇所に集めると本当に良くって、勝手に化学反応が起こって面白いことが起こるんですね。これは勉強会やカンファレンスの醍醐味だと思います。偶然にも、今回は「登壇」といいつつオーディエンスと発表者はまったくの地続きのフロアでレイアウトされていたため、読んで字のごとくフラットな論壇が生まれたのが良かったのかな、と振り返って思うところです。こうした触媒の働きをわれわれScalaわいわいランド運営が提供できたことを大変うれしく思いますし、誇りに思います。
また、なんと遠方からの参加者(北海道、富山、長野)がおられたようです。勉強会の主催冥利に尽きることです。参加したいと思ってもらえる勉強会にできるように頑張っていきます。暖かな目で見守っていただけると嬉しいです。
最後となりますが、会場提供くださった株式会社FOLIOさま、ありがとうございました!部屋のインテリアの準備から施設内の誘導経路の作成、プロジェクターの設定に至るまでありとあらゆるリソースの提供をいただきました。おかげでスタッフは本当に負担なく勉強会を進行することができました。重ねて御礼申し上げます。
To Be Continued...
今後の開催にご期待ください。一切は未定ですが、遠方からの参加者を招くためにもオンライン勉強会エディションを開催する案があります。
ぜひConnpassグループや公式Twitter/Xアカウント(@ScalaWaiwai)をフォローしていただけると最新の情報をお届けできます。
撮影場所: 株式会社FOLIO
文責:
id:Windymelt
