Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
No More NoSuchMethodError
Search
TATSUNO Yasuhiro
October 14, 2026
Programming
12
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
No More NoSuchMethodError
For
https://server-side-kotlin-meetup.connpass.com/event/405098/
TATSUNO Yasuhiro
October 14, 2026
More Decks by TATSUNO Yasuhiro
See All by TATSUNO Yasuhiro
ゆくKotlin くるRust
exoego
1
380
Scala 3 で GLSL のための c-like-for を実装してみた
exoego
1
1.1k
Bun に LCOV 出力を実装した
exoego
2
410
terraform-provider-aws にプルリクして マージされるまで
exoego
2
550
ライブラリをパブリッシュせずにすばやく試す
exoego
2
400
esbuild 最適化芸人
exoego
3
2.8k
いい感じに AWS を組み合わせたビルディングブロックでアプリ開発を支援する / TdTechTalk 2022 11
exoego
0
970
Empowering App Dev by Nicely-Crafted High-Level AWS Components
exoego
0
140
月間数十億リクエストのマイクロサービスを支える JVM+AWS フルサーバーレス開発事例 / Now and Future of Fully Serverless development at Chatwork
exoego
1
870
Other Decks in Programming
See All in Programming
setup-vp GitLab対応の裏側
naokihaba
0
160
wkhtmltopdfの次どうするか問題2026
willnet
2
1.9k
パーソナライズPodcastを作った話
repunit11
0
130
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.5k
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
160
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
470
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
530
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
150
カツオ、ご期待ください
suneo3476
0
160
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
650
phperだってパンチカードでコーディングしたい
o0h
PRO
0
260
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.1k
Featured
See All Featured
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Navigating Team Friction
lara
192
16k
Designing Powerful Visuals for Engaging Learning
tmiket
1
600
The Cult of Friendly URLs
andyhume
79
7k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
480
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.3k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
700
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
530
Transcript
😭 本番障害 塩 漬 No More NoSuchMethodError け Server-Side Kotlin
Meetup vol.20, 2026-10-14, TATSUNO Yasuhiro, @exoego
筆者プロフィール TATSUNO Yasuhiro 医療系スタートアップ 医療情報システム戦略統括本部 SWE プレビュー環境、印刷基盤、認証認可基盤、AWS移⾏⼿伝い exoego 好きなプログラミング⾔語:Scala、Rust、Go、Java 最近よかったこと:トム・ブラウン、ヤーレンズのライブ
ライブラリ 更新してますか? Renovate や Dependabot を⼊れたものの プルリクを何ヶ⽉も放置してるやつ いねえよなぁ!!?
ライブラリ更新してたら NoSuchMethodError を 踏みすぎてつらかったので 静的解析ツールを作りました ⼈柱募集お試しください!
ライブラリ更新のモチベーション バグ修正 Kotlin の DB ライブラリ 新機能
あと連⽇世間を騒がしてる 改ざん! 情報漏洩! サービス停止!
各事案の要因は⾊々あろうが JVM でも ライブラリの脆弱性が攻撃に使われてきた 2015 Commons Collections 2015 Spring EL
2016 Struts 1 2017 Struts 2 2017〜 Jackson 2017〜 Fastjson 2019 Ktor 2020 Ktor 2021 Log4j2 2022 Spring Kotlin の話題 これで最後です
ISO/IEC 27017 とか認証取得にも関係する 12.6.1 技術的ぜい弱性の管理 クラウドサービスプロバイダは、提供するクラ ウドサービスに影響し得る技術的ぜい弱性の管 理に関する情報をクラウドサービスカスタマが 利⽤できるようにすることが望ましい。 CRITICAL
や HIGH な脆弱性を残したまま情報公開しちゃう?
更新していくぞ〜 挙動の破壊的変更はマイナーバージョンアップだからないだろうし テストもちゃんと書いてるから⼤丈夫やろ〜〜
M h c u S o N r o r
r E d o h t e 😇 これってさぁ! 静かに壊れる… ってコト!? NoClassDe fFoundErro r s e c c A l ega r o r sEr
①弊社コード利⽤ ②google-cloud-firestore:3.47.0 の内部コード 利⽤ ③ opentelemetry-grpc-1.6:2.23.0-alpha ④SqlStatementSanitizer が 使えるバージョンに otel系ライブラリを更新した
opentelemetry-jdbc:2.25.0-alpha の内部コード ⑥⾮互換:newClientInterceptor が 2.25.0 で削除 ⑤opentelemetry-grpc-1.6:2.25.0-alpha version.ref を⼀緒にしてたので つられて更新 ⑦NoSuchMethodError: 'ClientInterceptor GrpcTelemetry.newClientInterceptor()'
🤔 そもそもなぜ 起きるんだ? 静的型付⾔語の利点ってコンパイル時に 型の誤りを検知してくれるはずでは?
Class ファイルのバイナリ⾮互換で起きる • google-cloud-firestore:3.47.0 は、古い依存バージョンのシグネチャで コンパイル済 • ⼀⽅、実⾏時のクラスパスには新しいバージョンがり、古いシグネ チャが消えてた(バイナリ⾮互換) •
コンパイル時、ライブラリの class ファイルまでチェックされない でも実際どう⾔うこと? と思ったので図解を作ってみた https://www.exoego.net/jvm-visualized/
じゃあ逆に 定数プールを見れば 破壊的変更を検出できる ……ってコト!?
作った https://github.com/exoego/uika バイナリ⾮互換の内容 と取れそうな対策
クラスファイルのスキャンは⼗分速い
既存⼿法との⽐較 uika(本提案) やること 結合テスト ライブラリのバイトコードの変化 Spring や Ktor などを起動 と、⾃コード側で使ってるものを
し、ライブラリひと通り 付き合わせ、破壊的変更を検出 ロードされる形でテスト E2E (End-to-End) テスト 個別のコンポーネントだけでな く、連携する複数コンポ(多く の場合 Web UI やモバイルアプ リ含む)を結合してテスト タイミング PR(プルリクエスト) PR PR〜定期実⾏ 処理時間 数⼗秒〜数分 数分〜数⼗分 数⼗分〜数時間 強み 速い リフレクションも含めて テスト追加不要 検出できる(テスト書け テストない部分もある程度検出可 ば) モックがちな外部連携を実際に テストできる(テスト書けば) 弱み リフレクションを使った呼出は 検出不能 環境構築の敷居 インフラ稼働コスト 個別PRマージ後にテストが動く ので気づくまでにかなり時間差 ツールが未成熟!! 呼出部分のテストを追加 し忘れると検出不能
静的解析ツール uika ⼈柱募集 Gradle, Maven, sbt, Clojure 他対応 結合テスト、E2Eと組み合わせて ライブラリ更新を安全に!!
終