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
"おまじない"はもう卒業! デバッガで探るSpring Bootの裏側と「学び方」の学び方
Search
竹内 雅和
November 14, 2025
Technology
500
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
"おまじない"はもう卒業! デバッガで探るSpring Bootの裏側と「学び方」の学び方
竹内 雅和
November 14, 2025
More Decks by 竹内 雅和
See All by 竹内 雅和
Java正規表現エンジン(NFA)の仕組みと パフォーマンスを維持するための最適化手法
takeuchi_132917
0
240
Other Decks in Technology
See All in Technology
AIツールを導入しても生産性はあがらない? カオナビが直面した 3つの壁と乗り越え方。/ Overcoming 3 Barriers to AI-Driven Productivity at kaonavi
kaonavi
0
270
SRENEXT_2026_Chairs__Talks_in_Tamachi.sre.pdf
srenext
1
150
StepFunctionsとGraphRAGを活用した暗黙知活用のためのRAG基盤
yakumo
0
160
20260720_クラウド女子会×PyLadiesTokyoコラボ Amazon Bedrock ハンズオン用資料
yuuka51
2
120
AI工学特論: MLOps・継続的評価
asei
10
2.1k
副作用のある Lambda でも Lambda Power Tuning は使えるのか / lambda-power-tuning-side-effects
koukihosaka
2
150
設計レビューとAIハーネスで向き合う AIが生み出した新しいボトルネックの対処法 / Design Reviews and AI Harnesses Against New Bottlenecks Created by AI
nstock
5
480
なぜ、あなたのエージェントは言うことを聞かないのか
segavvy
1
450
AI時代のPlaywright活用(システムテストを自動化する ー 実行エンジンにPla ywrightを選んだ理由)
ynisqa1988
2
1k
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
2
290
AIエージェントがあれば技術書なんてすぐ書けるでしょ→無理でした
watany
4
380
AIが当たり前の組織で エンジニアはどう育つか
nishihira
1
1.2k
Featured
See All Featured
Fireside Chat
paigeccino
42
4k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.5k
Claude Code のすすめ
schroneko
67
230k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
230
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
420
Building the Perfect Custom Keyboard
takai
2
820
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
510
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
390
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.2k
Transcript
"おまじない"はもう卒業! デバッガで探るSpring Bootの裏側と「学び方」の学び方 2025/11/15 JJUG CCC 2025 Fall #jjug_ccc_i 竹内
雅和 (@tm0920.bsky.social)
自己紹介 ・竹内 雅和 ・入社6年目 ・主にバックエンド担当 ・フロント/クラウドもちょっと触る ・Springの経験は3年くらい ・Bluesky:@tm0920.bsky.social ▪ 今回の資料
↓
目次 • 学びの停滞感について • ググっても解決しない問題との遭遇 • Springの基礎 • デバッグのコツ •
まとめ
学びの停滞感について • ”おまじない” • 「中級者への壁」
”おまじない” • @Autowired をつけると DIされる • @Transactional をつけるとトランザクションできる • @Controller,
@Service … • Service 層を実装するときは必ず IF を定義する
「中級者への壁」 • なぜ動くのか、説明できない • チュートリアル レベルの学習は終えた。 • 応用的な実装や、原因不明のエラーに遭遇すると手が止まる。 • ググっても、自分のケースに合う答えがなかなか見つからない…。
次に何をどう学べば良いの?
ググっても解決しない問題との遭遇 • 一般的に想定されるアプリとDB • 今回のPJのアプリとDB • ググってみても…。 • Mapperから先の処理が全く分からない…。 •
挫折ポイント
一般的に想定されるアプリとDB 接続先のDBは固定
今回のPJのアプリとDB ユーザー毎に接続先のDBが違う
ググってみても…。 • AbstractRoutingDataSource というクラスを使うらしい…。 • 自分の環境では上手く動かない…。 • 記事に書いてある説明の内容が全く分からない…。 Datasource、SpringManagedTransaction …???
Mapper から先の処理が全く分からなかった
背後に何かいる
ここを調べるには?
挫折ポイント(普通にデバッグしても追えない) MapperはInterfaceで定義 このメソッドを実装しているクラス?
挫折ポイント(普通にデバッグしても追えない) @Autowired で DIされて Mapperの実装クラスが入っているは ず。 ここにブレークポイント & ステップイン すれば良いのでは?
挫折ポイント(普通にデバッグしても追えない) UserMapperは…? updateOne() は…? invoke() なんて呼んでませ んけど…?
挫折ポイント(普通にデバッグしても追えない) UserMapperは…? updateOne() は…? invoke() なんて呼んでませ んけど…? 普通にデバッグしても追えない…
Springの基礎を知る • IoCとは • AOPとは • AOPを実現する仕組み
IoC とは ※ 参考:『Spring 徹底入門』(株式会社NTTデータ 著)
IoC とは ※ 参考:『Spring 徹底入門』(株式会社NTTデータ 著)
IoC とは ※ 参考:『Spring 徹底入門』(株式会社NTTデータ 著)
AOP とは ※ 参考:Spring AOP Tutorial for Beginners - Step
by Step with Example https://www.javaguides.net/2019/05/understanding-spring-aop-concepts-and-terminology-with-example.html
AOP とは ※ 参考:Spring AOP Tutorial for Beginners - Step
by Step with Example https://www.javaguides.net/2019/05/understanding-spring-aop-concepts-and-terminology-with-example.html
AOP とは ※ 参考:Spring AOP Tutorial for Beginners - Step
by Step with Example https://www.javaguides.net/2019/05/understanding-spring-aop-concepts-and-terminology-with-example.html
AOP とは ※ 参考:Spring AOP Tutorial for Beginners - Step
by Step with Example https://www.javaguides.net/2019/05/understanding-spring-aop-concepts-and-terminology-with-example.html
AOP とは
AOPとは ※ 参考:『Spring 徹底入門』(株式会社NTTデータ 著)
AOPを実現する仕組み ・IoCが管理するオブジェクト ( Bean )に対して、 AOPの実装を埋め込んでいる ・アプリからBeanを取得する時、Bean のインスタンスそのものではなく、 Proxyでラップされた状態で取得され る。
・Beanの処理を呼ぶ時に Proxyを経由して、AOPの処理を実行 している。 ※ 参考:『Spring 徹底入門』(株式会社NTTデータ 著)
仕組みを踏まえた上で処理を見ていく • Mapperから先の処理を見ていく • デバッグのコツ • デバッグを通して分かったこと
Mapperから先の処理を見ていく UserMapperは…? updateOne() は…? invoke() なんて呼んでませ んけど…?
Mapperから先の処理を見ていく UserMapperがラップされ たProxy Proxyのメソッドが呼ばれて る
デバッグのコツ • スタックトレースを読む • 変数を見る • ブレークポイントを貼ってみる • ステップ実行もしつつ繰り返して…
スタックトレースを読む
スタックトレースを読む
ブレークポイントを貼ってみる
変数を見てみる
ステップ実行もしつつ繰り返して…
BaseExecutor の update() を呼び出す
SimpleExecutor の doUpdate() を呼び出す
SimpleExecutor の prepareStatement() を呼び出す
BaseExecutor の getConnection() を呼び出す
SpringManagedTransaction の getConnection() を呼び出す
SpringManagedTransaction の openConnection() を呼び出す
DataSourceUtils の getConnection() を呼び出す
DataSourceUtils の doGetConnection() を呼び出す
DataSourceUtils の fetchConnection() を呼び出す
HikariDataSource の getConnection() を呼び出す
HikariPool の getConnection()を呼び出す
HikariPool の getConnection()を呼び出す
PoolEntry の createProxyConnection()を呼び出す
ProxyFactory の getProxyConnection()を呼び出す
HikariProxyConnectionのインスタンスを生成 ※ 一旦、呼び出し元を辿って戻ります。
RoutingStatementHandler の update() を呼び出す
PreparedStatementHandler の update() を呼び出す
PreparedStatementLogger の execute() を呼び出す
ProxyPreparedStatement の execute() を呼び出す
JdbcPreparedStatement の execute() を呼び出す
Command の executeUpdate() が呼ばれてSQLが実行される
デバッグを通して分かったこと • Mapperのメソッドが呼ばれてからSQLが実行されるまでの処理の流れ。 • DBとの接続(Connection)は DataSource の実装クラスで行われていること。 ◦ AbstractRoutingDataSource は
DataSource を実装した AbstractDataSourceを継承したクラス
【まとめ】フレームワークの裏側を探る『学び方』 • 例外をわざと発生させて、スタックトレースを読む。 • IDEのステップ実行と変数を参照して 内部のコードを追っていく。 • 内部のコードを追った後だと、技術記事の理解度が格段に上がる! • 「ステップアウト」で呼び出し元を辿って、
処理の流れを整理するのがオススメ。 • フレームワークの基礎的な設計思想を簡単に知っておくと デバッグしやすい。 • 「おまじないだから…」から少しずつ脱却していきましょう!
ご清聴ありがとうございました 質疑応答(例) • 前提知識として読んでおくと良い Springの公式ドキュメントや書籍? • 効率的に「当たり」をつけるためのコツ? (何でもどうぞ…!) (アンケートも書いてほしい…🙏→) 今回の資料
↓ 全体アンケート↓ セッションアンケート↓