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.2k
Scala におけるコンパイラエラーとの付き合い方
Chen
September 06, 2024
Tweet
Share
More Decks by Chen
See All by Chen
約 5 年のゲーム開発 ~リリースまでがこんなに大変でした~
chencmd
1
580
fs2-io を試してたらバグを見つけて直した話
chencmd
0
580
Language Server Protocol の歴史について (a.k.a. 考古学者になる方法)
chencmd
1
100
Other Decks in Programming
See All in Programming
ニーリーにおけるプロダクトエンジニア
nealle
0
840
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
5
890
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
2.1k
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
3
770
AIプログラマーDevinは PHPerの夢を見るか?
shinyasaita
1
230
AI時代のソフトウェア開発を考える(2025/07版) / Agentic Software Engineering Findy 2025-07 Edition
twada
PRO
89
30k
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
120
チームで開発し事業を加速するための"良い"設計の考え方 @ サポーターズCoLab 2025-07-08
agatan
1
430
スタートアップの急成長を支えるプラットフォームエンジニアリングと組織戦略
sutochin26
1
5.9k
VS Code Update for GitHub Copilot
74th
2
650
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
530
Agentic Coding: The Future of Software Development with Agents
mitsuhiko
0
100
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
510
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
A Tale of Four Properties
chriscoyier
160
23k
A designer walks into a library…
pauljervisheath
207
24k
Balancing Empowerment & Direction
lara
1
430
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
54k
Done Done
chrislema
184
16k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.7k
Thoughts on Productivity
jonyablonski
69
4.7k
The Language of Interfaces
destraynor
158
25k
Large-scale JavaScript Application Architecture
addyosmani
512
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