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
takayuki.miura
February 28, 2022
Technology
0
920
Spring Bootという強すぎるフレームワークについて
takayuki.miura
February 28, 2022
Tweet
Share
More Decks by takayuki.miura
See All by takayuki.miura
TerraformをやめてCDKでReStartしたあと、 CDKをやめてCDK for TerraformでReStartした話
tmiura0203
0
1.5k
急激なDB書き込みが行われるサービスをリビルドした話
tmiura0203
0
770
実際にリビルドを完遂してみて
tmiura0203
0
720
Other Decks in Technology
See All in Technology
オーティファイ会社紹介資料 / Autify Company Deck
autifyhq
10
130k
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.7k
事業成長の裏側:エンジニア組織と開発生産性の進化 / 20250703 Rinto Ikenoue
shift_evolve
PRO
2
21k
Delegating the chores of authenticating users to Keycloak
ahus1
0
140
使いたいMCPサーバーはWeb APIをラップして自分で作る #QiitaBash
bengo4com
0
1.9k
マネジメントって難しい、けどおもしろい / Management is tough, but fun! #em_findy
ar_tama
7
1.1k
SEQUENCE object comparison - db tech showcase 2025 LT2
nori_shinoda
0
140
What’s new in Android development tools
yanzm
0
310
2025-07-06 QGIS初級ハンズオン「はじめてのQGIS」
kou_kita
0
170
怖くない!はじめてのClaude Code
shinya337
0
400
KubeCon + CloudNativeCon Japan 2025 Recap
ren510dev
1
380
Connect 100+を支える技術
kanyamaguc
0
200
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Speed Design
sergeychernyshev
32
1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.7k
A Tale of Four Properties
chriscoyier
160
23k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
6
300
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Designing for Performance
lara
610
69k
Transcript
4QSJOH#PPUͱ͍͏ ڧ͗͢ΔϑϨʔϜϫʔΫʹ͍ͭͯ エキサイト株式会社 三浦大幸
˞ݫີʹɺ4QSJOH#PPUͱͦΕʹؔ࿈͢Δٕज़ͷͰ͢
ࣗݾհ • エキサイト新卒6年目 • バックエンドエンジニアとして入社 • その後、フロント・iOSアプリ・AWSインフラ開発を経験 • PHPの開発経験が一番長いが、最近は主にJavaで開発中
https://twitter.com/miura0203
ΞδΣϯμ • Spring Bootとは? • Spring Bootのすごい所 • Spring
Bootの難しい所 • 最後に
4QSJOH#PPUͱʁ
4QSJOH#PPUͱʁ • Javaのフレームワーク • WebサイトやAPIはもちろん、バッチなども作ることができる • MavenやGradleで依存管理をする Spring Bootͱʁ
͍·͞Β+BWB 🤔
+BWBͱ͔ݹष͍ͷͰʜ • ʁ • ͔ΓͮΒ͍ʁ Spring Bootͱʁ
ࠓͷ+BWB 4QSJOH#PPUͳΒಡΈ͍͢ʂ Spring Bootͱʁ 4QSJOH#PPUͷྫ • ΞϊςʔγϣϯΛۦ͢Εɺॻ͖͘ ίʔυΛେ෯ʹΒ͢͜ͱ͕Ͱ͖ɺυϝ ΠϯίʔυʹྗͰ͖Δʂ •
ςετͳͲͷɺࠓͷ։ൃʹඞཁͳػೳ͕ ἧ͍ͬͯΔʂ
͍·͞Β+BWB 🤔
͍·ͦ͜+BWBʂ😎
4QSJOH#PPUͷ͍͢͝ॴ
%*͕ͱͯ؆୯ 4QSJOH#PPUͷ͍͢͝ॴ
%*ͷཧ໘ʜ -BSBWFMͷྫ *OUFSGBDFͱ*NQMFNFOUΛ࣮ %*ίϯςφʹొ ༻͍ͨ͠ΫϥεͷίϯετϥΫλͷ ҾͰఆٛ Spring
Bootͷ͍͢͝ॴ
%*ͷཧ໘ʜ -BSBWFMͷྫ • %*ొ͕ࡶʹͳΔ • ίϯετϥΫλͷهड़͕ࡶʹͳΔ ଞͷϑϨʔϜϫʔΫͰࣅͨΑ͏ͳݒ೦͕͋Δʜ Spring Bootͷ͍͢͝ॴ
%*͕ͱͯ؆୯ʂ 4QSJOH#PPUͷྫ *OUFSGBDFͱ*NQMFNFOUΛ࣮͠ɺ ΞϊςʔγϣϯΛఆٛ ༻͍ͨ͠ΫϥεͷϓϩύςΟʹɺΞϊ ςʔγϣϯͱҰॹʹఆٛ Spring Bootͷ͍͢͝ॴ
%*͕ͱͯ؆୯ʂ 4QSJOH#PPUͷྫ ϝϦοτ • %*ίϯςφͷొ͕γϯϓϧ • ίϯετϥΫλʹཏྻ͢Δඞཁ͕ͳ͘ɺ γϯϓϧ Spring Bootͷ͍͢͝ॴ
ϨΠϠ͝ͱͷΞΫηε੍ݶ͕Ͱ͖Δ 4QSJOH#PPUͷ͍͢͝ॴ ˞ݫີʹ(SBEMFͷػೳͰ͢
ϨΠϠ͝ͱʹΞΫηε੍ݶ͍ͨ͠ʜ $MFBO"SDIJUFDUVSFͷϨΠϠ ཧతʹɺӈਤͷΑ͏ʹ ϨΠϠؒͷΞΫηε੍ݶΛ͍ͨ͠ • ্͔ΒԼͷϨΠϠʹΞΫηεՄೳ • Լ͔Β্ͷϨΠϠʹΞΫηεෆՄ Spring Bootͷ͍͢͝ॴ
Controller Service Repository ΞΫηεՄೳ ΞΫηεෆՄ
ϨΠϠ͝ͱͷΞΫηε੍ݶ͕Ͱ͖Δʂ (SBEMFͷʮϚϧνϓϩδΣΫτʯͱ͍͏ػೳͰ ϨΠϠؒΞΫηε੍ݶΛ࣮ݱͰ͖Δ TFUUJOHTHSBEMFϑΝΠϧͰ αϒϓϩδΣΫτΛఆٛ CVJMEHSBEMFϑΝΠϧͰɺ αϒϓϩδΣΫτؒͷґଘΛఆٛ Spring
Bootͷ͍͢͝ॴ
σʔλΫϥε͕؆୯ʹ࡞ΕΔ 4QSJOH#PPUͷ͍͢͝ॴ ˞ݫີʹ-PNCPLͷػೳͰ͢
σʔλΫϥε͕ࡶʜ 1)1ͷྫ ΧϓηϧԽ͞ΕͨσʔλΫϥεΛ࡞Δʹɺ ҎԼ͕ඞཁ • QSJWBUFͳϓϩύςΟ • QVCMJDͳ HFUUFSTFUUFS •
*NNVUBCMFͳΒɺ TFUUFSͷΘΓʹ ίϯετϥΫλͰϓϩύςΟΛηοτ Spring Bootͷ͍͢͝ॴ
σʔλΫϥε͕؆୯ʹ࡞ΕΔʂ 4QSJOH#PPUͷྫ -PNCPLͱ͍͏ϥΠϒϥϦΛ͏͜ͱͰɺ ͔ͳΓγϯϓϧʹ࣮Ͱ͖Δ • !%BUBͰ .VUBCMFͳσʔλΫϥε • ࣗಈͰ HFUUFSTFUUFS͕͘
• ͞Βʹ !"DDFTTPSTΛ͚ͭΕɺ νΣʔϯͰఆٛͰ͖Δ • !7BMVFͰ *NNVUBCMFͳσʔλΫϥε • ࣗಈͰ HFUUFSίϯετϥΫλ͕͘ • ࣗಈͰϓϩύςΟʹ QSJWBUF͕͘ Spring Bootͷ͍͢͝ॴ
ͦΕҎ֎ʹͨ͘͞Μʂ • Envファイルに定義するような環境ごとのデータを、クラスに紐付けて取得し、DIして使用 できる • マルチプロジェクト機能を使って、簡単にモジュラモノリス構成を作れる • Spring BootではWebフロントサーバからバックエンドAPI、バッチまで作れるので、
ほぼ1サービスをそのプロジェクトのみで作ることができる • キャッシュ生成・取得、DBのトランザクション、データのJSON化やJSONのパースなど、面 倒な作業をアノテーションだけで実装することができる • などなど… Spring Bootͷ͍͢͝ॴ
4QSJOH#PPUͷ͍͠ॴ
ཪଆͷΈ͕ෳࡶ 4QSJOH#PPUͷ͍͠ॴ
ཪଆͷΈ͕ෳࡶ ͍Ζ͍Ζͳࣄ͕Ͱ͖ɺϥΠϒϥϦ๛ͳཪ ଆͷΈ͕ෳࡶͰɺ٧·Δͱղܾ͕େมͳ࣌ ͕͋Δ • ͓ଋతͳઃఆ͕ଟ͍ • ϚϧνϓϩδΣΫτ͏ϥΠϒϥϦͷΈ ߹ΘͤʹΑͬͯɺಛघͳઃఆ͕ඞཁͳ߹ ͕͋Δ
• %#3FEJTͷϛυϧΣΞͱͷଓΛΧε λϚΠζ͍ͨ͠߹ɺෳࡶͳઃఆ͕ඞཁʹͳ Δ • ͳͲͳͲʜ Spring Bootͷ͍͠ॴ
8FC্ͷݟͷϑΟϧλϦϯά͕ ͍͠ 4QSJOH#PPUͷ͍͠ॴ ˞ݫີʹ+BWB֤छϥΠϒϥϦؚΈ·͢
8FC্ͷݟͷϑΟϧλϦϯά͕͍͠ Spring Bootもそうだが、使われる各種ライブラリやJava自体も歴史が古く、いろいろな情報が Web上で出回ってしまっている • 過去のバージョンでは動いたが、今は使えないもの • 一見似ているが、実は異なるライブラリ •
依存管理システムであるMavenとGradleについて、欲しい方の情報が書かれていない • (しかもそのほとんどが英語) • などなど… Spring Bootͷ͍͠ॴ
(SBEMFͷ͍ํ͕͍͠ 4QSJOH#PPUͷ͍͠ॴ ˞ݫີʹ(SBEMFͷͰ͢
(SBEMFͷ͍ํ͕͍͠ (SBEMFͷઃఆɺଞͷґଘཧγεςϜʹൺɺ ෳࡶͳ͜ͱ͕Ͱ͖Δඇৗʹཧղ͕͍͠ͷ ͱͳͬͯ͠·͍ͬͯΔ • JNQMFNFOUBUJPOSVOUJNF0OMZ BQQMZ KBS • CVJMEHSBEMF
HSBEMFQSPQFSUJFT TFUUJOHTHSBEMF • (SBEMFλεΫͱʜʁ • ͳͲͳͲʜ Spring Bootͷ͍͠ॴ
ͦΕҎ֎ʹʜ • 先に挙げた点から、初期ラーニングコストはそれなりにある • Nullですぐエラーになるにも関わらず、Nullを安全に扱うのが難しい • ビルドに時間がかかる • などなど…
Spring Bootͷ͍͠ॴ
࠷ޙʹ
࠷ޙʹ 悪いところも色々書きましたが、それでもなお開発する上で有り余るメリットがあると考えて います。 また、JavaもSpring Bootも活発に更新されているので、いつか先程挙げたデメリットがなくなる 日も来るかもしれません。 ぜひ一度、Spring Bootに触ってみてください!