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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kenji yoshida
April 16, 2023
Programming
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Scala-Matsuri-2023.pdf
kenji yoshida
April 16, 2023
More Decks by kenji yoshida
See All by kenji yoshida
sbt 2
xuwei_k
0
430
数十万行のプロジェクトを Scala 2から3に完全移行した
xuwei_k
0
1.6k
Scalaプロジェクトの ビルド速度改善
xuwei_k
0
550
WartremoverのScala 3対応
xuwei_k
0
210
アルプでのScala 3移⾏
xuwei_k
1
1.8k
ScalaでgRPC
xuwei_k
0
1.7k
scalaprops
xuwei_k
0
160
Other Decks in Programming
See All in Programming
数百円から始めるRuby電子工作
tarosay
0
120
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1.1k
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
250
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
370
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
200
Foundation Models frameworkで画像分析
ryodeveloper
1
320
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
950
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
920
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
170
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
570
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.7k
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
200
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
6.2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
Mind Mapping
helmedeiros
PRO
1
290
How to Ace a Technical Interview
jacobian
281
24k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Automating Front-end Workflow
addyosmani
1370
210k
Building the Perfect Custom Keyboard
takai
2
830
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
190
Product Roadmaps are Hard
iamctodd
55
12k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
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