ScalaMatsuri 2019 に参加してきたメモ
ScalaMatsuri2019 に参加してきた。
ワークショップ合わせて3日間あるが、自分は2日目のカンファレンスデーと3日目アンカンファレンスデーを見てきた。
自分は今回で 3 回目の参加。 正直最近の仕事では全然 Scala は使っていないが、 Scala 使いに限らず関数型言語好きなら参加して十分意味があったのではないかと思う。 それに日本の関数型言語界隈では一番大きい集まりなのでは?
今回は型クラス関連や、Graal の話を中心に聞いてきた。逆に DDD とか実務の話はあまり行かなかった。
あとは結構海外から聴講に来ている人もいるようで、アメリカの他台湾や韓国から来ている人も居たようだ。
参加してきたセッション
参加してきたセッションで特に記憶に残ったやつ。
再帰:スキーム,代数,finally tagless,データ型. 統合されたビジョン
簡単な型から初めて tagless final の形になるまでを段々と説明していく話。
途中までしかついていけて無いので、資料があったら見直したいがどうもなさそう… Free モナドも忘れかけてたしココらへんは勉強せんとなあ。
Scala ♥ Graal by Flavio Brasil (@flaviowbrasil)
Twitter 社での GraalVM の使われ方の話。
Twitter 社が GraalVM を使っているのは最適がが行いやすいかららしく、実際にどのような最適化をしているかが紹介された。
結構大胆な最適化をしているようで、CAS の仮想化とか、インターフェースのメソッドと実際に呼び出されるメソッドのオフセットを記録して直接そこに jump させるということもやっているらしい。
Run Scala Faster with GraalVM on any Platform by Amitpal Singh
こちらも GraalVM の話で、GraalVM の説明から native-image
を使ったシングルバイナリイメージの作成の話なども。
Graal コンパイラはかなり頑張っているようで、Stream Processing を for ループに展開したりするなど色々な最適化をしており 場合によっては普通のJavaコンパイラに対して2倍以上のパフォーマンスを出せるそうだ。
Go が流行っているのは、シングルバイナリにできるのが現在のコンテナ全盛時代の時流にのっているのもあると思うので、 Scala でもそれができれば kubenetes と合わせてもっと使われるようになったりするのかも知れない。 (だとすると kubenetes 関連のセッションも見とけばよかったなあ)
あと Android 向けにもコンパイルできるようになるらしいので また Scala で Android やってみるという人も出てきそう。
Graal Compiler だとランタイムもうまいことバイナリイメージに収めてくれるらしく、 問題になっていたサイズの問題も解決されるのかも知れない。
Making Logic Monad by halcat0x15a
www.slideshare.net
https://github.com/halcat0x15a/logical
実用性はないかも知れないが、モナドをとかを組み合わせてこういうことが実現できるというのはすごい。
Fast & Functional by Michał Płachta (@miciek)
Scala を使ってスクラッチでサービスを作る話。 モナドを使う実例にもなっているので、モナドの使いみちをs爪いするときの参考にできそう。
パフォーマンスチューニングを取り上げているのも良い。
From Go To Scala Easy vs Simple (ディスカッション)
https://togetter.com/li/1371467
ちょっと Kotlin に厳しすぎない?
その他
以下は公開されている ScalaMatsuri の発表資料 公式でもリンクはあるが、これから見直すつもりの個人用メモ。
Scalaライブラリを作る前に知っておきたいメンテナンスのこと - Speaker Deck
Using Akka Cluster for a payment service - Speaker Deck
Understanding the vulnerabilities of Play through its code base - Speaker Deck
Clean Architecture in Practice @ScalaMatsuri2019 - Speaker Deck
悩める開発者に贈る〜 サービスの継続的な成長を支える分析設計手法
Gentle Introduction to DOT calculus
Functional Concurrency in Scala 101 (ScalaMatsuri 2019)
Case of Ad Delivery System is Implemented by Scala and DDD - Speaker Deck
Scala Driven Management - Speaker Deck
High Performance Scala/high_performance_scala - Speaker Deck
How to build an Event-Sourcing system using Akka with EKS - Speaker Deck
Write stack safe non-tailrec recursive functions - Speaker Deck
こんなに違う!ScalaとKotlin - Speaker Deck
WiFi x Scala: Implementing Captive Portal in Scala and deploy into #ScalaMatsuri - Speaker Deck
The advantage of using ’Eff’ in Scala Project - Speaker Deck
ピュアなドメインを支える技術/pure domain model and the technology behind it - Speaker Deck
Intro to typeclass in Scala - Speaker Deck
How we replaced a 10-year-old Perl product using Scala - Speaker Deck
Running Scala on AWS Lambda in a Snappy Way - Speaker Deck
ScalaのOSSに貢献しよう ~ Phil Bagwell Award記念講演
How To Use Scala At Work - Airframe In Action at Arm Treasure Data
Fast & Functional (Scala Matsuri, JP) - Speaker Deck
また資料ではないが発表に使われたソースコード。
https://github.com/weihsiu/bengal
https://github.com/miciek/influencer-stats
https://github.com/halcat0x15a/logical
あとはジョブボードのもちょっと見返さないとな…