giantneco’s blog

技術メモ

ScalaMatsuri 2019 に参加してきたメモ

ScalaMatsuri2019 に参加してきた。

2019.scalamatsuri.org

f:id:dexil:20190630234919j:plain
ScalaMatsuri オープニング

f:id:dexil:20190630234926j:plain
もらったノベルティ

ワークショップ合わせて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 向けにもコンパイルできるようになるらしいので また ScalaAndroid やってみるという人も出てきそう。

Graal Compiler だとランタイムもうまいことバイナリイメージに収めてくれるらしく、 問題になっていたサイズの問題も解決されるのかも知れない。

Making Logic Monad by halcat0x15a

www.slideshare.net

https://github.com/halcat0x15a/logical

ScalaProlog やろうぜという話。

実用性はないかも知れないが、モナドをとかを組み合わせてこういうことが実現できるというのはすごい。

Fast & Functional by Michał Płachta (@miciek)

speakerdeck.com

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

Making Logic Monad

CPS or DI

ScalaTaiwan/2018-03-07-Programming_with_Algebraic_Data_Types at master · ScalaTaiwan/ScalaTaiwan · GitHub

悩める開発者に贈る〜 サービスの継続的な成長を支える分析設計手法

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

あとはジョブボードのもちょっと見返さないとな…