Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Scala-Matsuri-2023.pdf
Search
kenji yoshida
April 16, 2023
Programming
0
1.5k
Scala-Matsuri-2023.pdf
kenji yoshida
April 16, 2023
Tweet
Share
More Decks by kenji yoshida
See All by kenji yoshida
数十万行のプロジェクトを Scala 2から3に完全移行した
xuwei_k
0
1.5k
Scalaプロジェクトの ビルド速度改善
xuwei_k
0
420
WartremoverのScala 3対応
xuwei_k
0
180
アルプでのScala 3移⾏
xuwei_k
1
1.6k
ScalaでgRPC
xuwei_k
0
1.7k
scalaprops
xuwei_k
0
140
Other Decks in Programming
See All in Programming
NetworkXとGNNで学ぶグラフデータ分析入門〜複雑な関係性を解き明かすPythonの力〜
mhrtech
3
1k
なぜGoのジェネリクスはこの形なのか? Featherweight Goが明かす設計の核心
ryotaros
7
1k
(Extension DC 2025) Actor境界を越える技術
teamhimeh
1
220
アメ車でサンノゼを走ってきたよ!
s_shimotori
0
140
そのpreloadは必要?見過ごされたpreloadが技術的負債として爆発した日
mugitti9
2
3k
大規模アプリのDIフレームワーク刷新戦略 ~過去最大規模の並行開発を止めずにアプリ全体に導入するまで~
mot_techtalk
0
380
GitHub Actions × AWS OIDC連携の仕組みと経緯を理解する
ota1022
0
240
iOS 17で追加されたSubscriptionStoreView を利用して5分でサブスク実装チャレンジ
natmark
0
580
Web Components で実現する Hotwire とフロントエンドフレームワークの橋渡し / Bridging with Web Components
da1chi
3
1.8k
Django Ninja による API 開発効率化とリプレースの実践
kashewnuts
0
930
AIエージェント時代における TypeScriptスキーマ駆動開発の新たな役割
bicstone
4
1.5k
CSC509 Lecture 04
javiergs
PRO
0
290
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Writing Fast Ruby
sferik
629
62k
4 Signs Your Business is Dying
shpigford
185
22k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Mobile First: as difficult as doing things right
swwweet
224
10k
Transcript
Scalafix and Wartremover 2023 ScalaMatsuri 2023 2023-04-16 1 / 16
twitter @xuwei_k github @xuwei-k blog https://xuwei-k.hatenablog.com 2 / 16
2020: Scalafix やWartremover の独自ルール を仕事で活用する 2022: Wartremover のScala 3 対応
3 / 16
wartremover Compiler plugin Linter TASTy inspector でcompile 時とは別に動か す方法増やした 原理上、全ての型情報を扱えるので、何でも正確
に判断できる ここ数年ほとんど@xuwei-k しかコミットしてな い 4 / 16
wartremover Scala 2 と3 で全く別のコードを書く必要がある デメリット SemanticDB の生成が遅いので、それを考慮する とSemanticRule よりwartremover
の方が実行 速い? 型情報扱わないなら使うべきではない 言い換えるとscalafix のSyntacticRule で良いなら必要な い 5 / 16
残してあるがscalafix の SyntacticRule で十分な例 AsInstanceOf, IsInstanceOf, Throw, Var, While, Return,
Null, ExplicitImplicitTypes, DefaultArguments 6 / 16
scalafix SyntacticRule とSemanticRule で実行できる ことや、実行速度が異なる @xuwei-k はscalafix 自体のコミッターではな い 稀にpull
req する程度 自作でOSS のrule 多数公開してる この発表の2023-04-16 時点で75 個 https://github.com/xuwei-k/scalafix-rules 7 / 16
scalafix Linter にもなるし、書き換えも出来る SyntacticRule はとても速い rule 実行するたびにcompile やり直さなくてよ い wartremover
でもScala 3 なら同様 8 / 16
近況 本当に毎日のレベルで仕事かOSS でscalafix 書 いてる( 今までの合計数百) scalafix とwartremover それぞれ長所も短所 あるので両方使ってる
9 / 16
近況 wartremover のScala 3 対応はほぼ終わった wartremover もscalafix も独自rule 色々足し た
scala-js でscalafix 作るためのサイト作った ことにより大幅にscalafix 書きやすくなった 10 / 16
https://xuwei-k.github.io/scalameta-ast/ 日本語blog Scala コードを入力すると、scala-js と scalameta で変換の後のAST 表示してくれる かなり細かく機能つけた 11
/ 16
https://xuwei-k.github.io/scalameta-ast/ dialect 選択 SyntacticRule 、SemanticRule の雛形生成 Rule の雛形においての細かい設定 package 、rule
名、import style 12 / 16
https://xuwei-k.github.io/scalameta-ast/ input とoutput 両方をscalafmt でformat js で動かすためにscalafmt 独自fork していて面倒 scalafmt
の設定も自由に可能 browser のlocal strage に前回の状態保存 scalameta のversion 選択可能 13 / 16
wartremover の近況 wartremover のsbt plugin にscalafix のよ うなinput task 追加した
Scala 3 で独自にunion type のleast upper bound を計算する仕組みを作った 14 / 16
Live Coding や 既存のrule 説明 15 / 16
おわり 16 / 16