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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
690
fs2-io を試してたらバグを見つけて直した話
chencmd
0
840
Language Server Protocol の歴史について (a.k.a. 考古学者になる方法)
chencmd
1
160
Other Decks in Programming
See All in Programming
ついに来た!本格的なマルチクラウド時代の Google Cloud
maroon1st
0
450
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
0
110
開発とはなにか、Essenceカーネルで見えるもの
ukin0k0
0
190
iOS26時代の新規アプリ開発
yuukiw00w
0
130
Cloudflare で始める Data Platform
ta93abe
0
180
なぜあなたのコードには「コシ」がないのか?〜AI時代に問う、最後まで美味しい設計と戦略〜 #phpconkagawa / phpconkagawa2026
shogogg
0
210
【ディップ|26年新卒研修資料】OpenAPI/Swagger REST API研修
dip_tech
PRO
0
170
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
1
170
Lightning-Fast Method Calls with Ruby 4.1 ZJIT / RubyKaigi 2026
k0kubun
3
3.2k
20260514 - build with ai 2026 - build LINE Bot with Gemini CLI
line_developers_tw
PRO
0
450
ECR拡張スキャンでSBOMを収集して サプライチェーン攻撃の影響調査を 爆速で終わらせてみた
akihisaikeda
1
120
PHPでローカル環境用のSSL/TLS証明書を発行することはできるのか? #phpconkagawa
akase244
0
370
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
The browser strikes back
jonoalderson
0
1.1k
Google's AI Overviews - The New Search
badams
0
1k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
200
WCS-LA-2024
lcolladotor
0
590
Skip the Path - Find Your Career Trail
mkilby
1
120
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
190
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Navigating Team Friction
lara
192
16k
Accessibility Awareness
sabderemane
1
120
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
250
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