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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kenji yoshida
April 16, 2023
Programming
0
1.6k
Scala-Matsuri-2023.pdf
kenji yoshida
April 16, 2023
Tweet
Share
More Decks by kenji yoshida
See All by kenji yoshida
sbt 2
xuwei_k
0
370
数十万行のプロジェクトを Scala 2から3に完全移行した
xuwei_k
0
1.6k
Scalaプロジェクトの ビルド速度改善
xuwei_k
0
520
WartremoverのScala 3対応
xuwei_k
0
200
アルプでのScala 3移⾏
xuwei_k
1
1.7k
ScalaでgRPC
xuwei_k
0
1.7k
scalaprops
xuwei_k
0
150
Other Decks in Programming
See All in Programming
Claude Code Skill入門
mayahoney
0
410
[PHPerKaigi 2026]PHPerKaigi2025の企画CodeGolfが最高すぎて社内で内製して半年運営して得た内製と運営の知見
ikezoemakoto
0
240
AI駆動開発の本音 〜Claude Code並列開発で見えたエンジニアの新しい役割〜
hisuzuya
4
530
Java 21/25 Virtual Threads 소개
debop
0
230
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
510
20260313 - Grafana & Friends Taipei #1 - Kubernetes v1.36 的開發雜記:那些困在 Alpha 加護病房太久的 Metrics
tico88612
0
230
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
2
290
ふつうのRubyist、ちいさなデバイス、大きな一年 / Ordinary Rubyists, Tiny Devices, Big Year
chobishiba
1
490
PHP 7.4でもOpenTelemetryゼロコード計装がしたい! / PHPerKaigi 2026
arthur1
1
350
AI時代の脳疲弊と向き合う ~言語学としてのPHP~
sakuraikotone
1
1.5k
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
410
Codex CLIのSubagentsによる並列API実装 / Parallel API Implementation with Codex CLI Subagents
takatty
2
210
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
330
Measuring & Analyzing Core Web Vitals
bluesmoon
9
790
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
460
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.4k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
120
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
84
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