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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Chen
September 06, 2024
Programming
1.5k
2
Share
Scala におけるコンパイラエラーとの付き合い方
Chen
September 06, 2024
More Decks by Chen
See All by Chen
約 5 年のゲーム開発 ~リリースまでがこんなに大変でした~
chencmd
1
700
fs2-io を試してたらバグを見つけて直した話
chencmd
0
860
Language Server Protocol の歴史について (a.k.a. 考古学者になる方法)
chencmd
1
160
Other Decks in Programming
See All in Programming
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
570
ReactとSvelteのその先、Ripple-TS / Beyond React and Svelte: Ripple-TS
ssssota
3
1.9k
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
7
2.9k
Claspは野良GASの夢をみるか
takter00
0
150
AIとRubyの静的型付け
ukin0k0
0
490
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
100
権限チェックの一貫性を型で守る TypeScript による多層防御
mnch
4
1k
OCRを使ってゲームのアイテムをデータ化する
kishikawakatsumi
0
120
AI時代のUIはどこへ行く?その2!
yusukebe
18
5.9k
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
110
今さら聞けないCancellationToken
htkym
0
210
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
300
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
AI: The stuff that nobody shows you
jnunemaker
PRO
7
670
Designing Powerful Visuals for Engaging Learning
tmiket
1
390
Information Architects: The Missing Link in Design Systems
soysaucechin
0
950
Producing Creativity
orderedlist
PRO
348
40k
Balancing Empowerment & Direction
lara
6
1.1k
Design in an AI World
tapps
1
220
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
150
Large-scale JavaScript Application Architecture
addyosmani
515
110k
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