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
1.3k
Scala におけるコンパイラエラーとの付き合い方
Chen
September 06, 2024
Tweet
Share
More Decks by Chen
See All by Chen
約 5 年のゲーム開発 ~リリースまでがこんなに大変でした~
chencmd
1
640
fs2-io を試してたらバグを見つけて直した話
chencmd
0
680
Language Server Protocol の歴史について (a.k.a. 考古学者になる方法)
chencmd
1
110
Other Decks in Programming
See All in Programming
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
640
O Que É e Como Funciona o PHP-FPM?
marcelgsantos
0
240
Kotlin 2.2が切り拓く: コンテキストパラメータで書く関数型DSLと新しい依存管理のかたち
knih
0
110
ネストしたdata classの面倒な更新にさようなら!Lensを作って理解するArrowのOpticsの世界
shiita0903
1
210
SwiftDataを使って10万件のデータを読み書きする
akidon0000
0
250
テーブル定義書の構造化抽出して、生成AIでDWH分析を試してみた / devio2025tokyo
kasacchiful
0
350
AI時代に必須!状況言語化スキル / ai-context-verbalization
minodriven
2
270
フロントエンド開発のためのブラウザ組み込みAI入門
masashi
7
3.7k
Towards Transactional Buffering of CDC Events @ Flink Forward 2025 Barcelona Spain
hpgrahsl
0
120
SidekiqでAIに商品説明を生成させてみた
akinko_0915
0
110
Swift Concurrency 年表クイズ
omochi
3
220
Temporal Knowledge Graphで作る! 時間変化するナレッジを扱うAI Agentの世界
po3rin
5
1.1k
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Being A Developer After 40
akosma
91
590k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The Invisible Side of Design
smashingmag
302
51k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
940
Writing Fast Ruby
sferik
630
62k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
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