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 におけるコンパイラエラーとの付き合い方
Search
Chen
September 06, 2024
Programming
2
910
Scala におけるコンパイラエラーとの付き合い方
Chen
September 06, 2024
Tweet
Share
More Decks by Chen
See All by Chen
fs2-io を試してたらバグを見つけて直した話
chencmd
0
230
Language Server Protocol の歴史について (a.k.a. 考古学者になる方法)
chencmd
1
51
Other Decks in Programming
See All in Programming
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
3
330
Jakarta EE meets AI
ivargrimstad
0
240
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
180
快速入門可觀測性
blueswen
0
360
Webエンジニア主体のモバイルチームの 生産性を高く保つためにやったこと
igreenwood
0
330
良いユニットテストを書こう
mototakatsu
7
2.2k
暇に任せてProxmoxコンソール 作ってみました
karugamo
2
720
ブラウザ単体でmp4書き出すまで - muddy-web - 2024-12
yue4u
3
470
テストコード文化を0から作り、変化し続けた組織
kazatohiei
2
1.5k
htmxって知っていますか?次世代のHTML
hiro_ghap1
0
330
PHPUnitしか使ってこなかった 一般PHPerがPestに乗り換えた実録
mashirou1234
0
180
これが俺の”自分戦略” プロセスを楽しんでいこう! - Developers CAREER Boost 2024
niftycorp
PRO
0
190
Featured
See All Featured
Docker and Python
trallard
42
3.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
Fireside Chat
paigeccino
34
3.1k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
Adopting Sorbet at Scale
ufuk
73
9.1k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
520
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
0
98
Transcript
Scala におけるコンパイラエラーとの付き合い方 by Chen (@Chen__TS) Scala わいわい勉強会 #3 / 2024-09-06
君だれ? 通称 : ちぇん Twitter : @Chen__TS GitHub : @ChenCMD
趣味 : プログラミング 職業 : バックエンドエンジニア 最近の悩み : 何もしてないのに コンパイラエラーをよく踏む
こう思いませんでしたか? 3/22
「君、コンパイラエラー踏みすぎじゃない?」 4/22
みんなコンパイラエラーを踏んでいることに気づ いてないだけなのでは? 5/22
コンパイラエラーはどういうときに見れるの? コンパイル時に出力されるエラー 6/22
コンパイラエラーはどういうときに見れるの? コンパイル時に出力されるエラー Presentation Compiler を通して出力されるエラー ※Presentation Compiler とは? コーディング中に高速にエラーや補完等のフィー ドバックを与えるためにコンパイラに搭載された
コード解析機能のこと 7/22
コンパイラエラーが既知のものかを調べる方法 使用する Scala のバージョンを Nightly に上げて試す Maven リポジトリから指定するバージョンを取得できます https://repo1.maven.org/maven2/org/scala-lang/scala3- compiler_3/maven-metadata.xml
8/22
コンパイラエラーが既知のものかを調べる方法 使用する Scala のバージョンを Nightly に上げて試す Maven リポジトリから指定するバージョンを取得できます https://repo1.maven.org/maven2/org/scala-lang/scala3- compiler_3/maven-metadata.xml
出力されているスタックトレースを元に Scala や ScalaMeta のリポジトリ の Issues を検索する スタックトレースが同一でも原因が違うこともある 基本的には、確実に既知と言い切れなければ報告して良い (と思う) 9/22
Issue を作る 10/22
Issue を作る その前に 先程のコードをそのまま Issue に貼ったとして、それを見た開発者の気持ちを 考えてみる ※あくまでも想像です 11/22
Issue を作る その前に 先程のコードをそのまま Issue に貼ったとして、それを見た開発者の気持ちを 考えてみる ※あくまでも想像です 「何だこのめちゃくちゃに長いコードは...」 12/22
Issue を作る その前に 先程のコードをそのまま Issue に貼ったとして、それを見た開発者の気持ちを 考えてみる ※あくまでも想像です 「何だこのめちゃくちゃに長いコードは...」 「よくわからない依存関係も
import されてる...」 13/22
Issue を作る その前に 先程のコードをそのまま Issue に貼ったとして、それを見た開発者の気持ちを 考えてみる ※あくまでも想像です 「何だこのめちゃくちゃに長いコードは...」 「よくわからない依存関係も
import されてる...」 「原因がさっぱりわからん...」 こうなることが容易に想像できる 14/22
そうだ、Minimization をしよう。 15/22
Minimization とは? コンパイラエラーが発生する最小のコードを作る工程 エラーに関係ないのであれば、import 等も極限まで削除する "Minimization" == "最小再現例" (日本語で言及されてることはあまり見かけませんが...) 16/22
Minimization の手順 ※ちぇん個人のやり方です 1. コードをある程度小さなコード辺にする コードに関数が複数ある場合は一つずつ削除してみる 17/22
Minimization の手順 ※ちぇん個人のやり方です 1. コードをある程度小さなコード辺にする コードに関数が複数ある場合は一つずつ削除してみる 2. import をすべて無くす import
先のコードをコピーして持ってきて import を消していく 18/22
Minimization の手順 ※ちぇん個人のやり方です 1. コードをある程度小さなコード辺にする コードに関数が複数ある場合は一つずつ削除してみる 2. import をすべて無くす import
先のコードをコピーして持ってきて import を消していく 3. これを更に細かく小さくしていく trait や引数、関数呼び出し等、一つずつ削除してみる 19/22
今度こそ Issue を作る 基本的にテンプレートに従って書 けば OK 今回の場合はこんな感じ あとは見返して を押すだけ 20/22
まとめ コンパイラエラーは誰にでも起こりうるし、気づいていないだけで既に踏 んでいるかもしれない エラーメッセージをしっかりと読んで原因のファイルを特定することが最 初のステップ Scala のバージョンを上げたり、スタックトレースを元にリポジトリの Issues を検索して既知のエラーかどうかを調べるのが次のステップ 未知のエラーならば
Minimization コードを作成し、Issue を報告すること を目指すのがオススメ 21/22
Scala におけるコンパイラエラーとの付き合い方 by Chen (@Chen__TS) Twemoji : CreativeCommons-BY-4.0 Scala わいわい勉強会
#3 / 2024-09-06 22/22