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
970
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
790
実際にリビルドを完遂してみて
tmiura0203
0
740
Other Decks in Technology
See All in Technology
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
4
10k
Obsidian応用活用術
onikun94
1
470
COVESA VSSによる車両データモデルの標準化とAWS IoT FleetWiseの活用
osawa
1
270
MCPで変わる Amebaデザインシステム「Spindle」の開発
spindle
PRO
3
3.2k
おやつは300円まで!の最適化を模索してみた
techtekt
PRO
0
290
バッチ処理で悩むバックエンドエンジニアに捧げるAWS Glue入門
diggymo
3
190
データアナリストからアナリティクスエンジニアになった話
hiyokko_data
2
440
Evolución del razonamiento matemático de GPT-4.1 a GPT-5 - Data Aventura Summit 2025 & VSCode DevDays
lauchacarro
0
160
初めてAWSを使うときのセキュリティ覚書〜初心者支部編〜
cmusudakeisuke
1
230
AWSを利用する上で知っておきたい名前解決のはなし(10分版)
nagisa53
10
3k
Kiroと学ぶコンテキストエンジニアリング
oikon48
6
9.9k
20250910_障害注入から効率的復旧へ_カオスエンジニアリング_生成AIで考えるAWS障害対応.pdf
sh_fk2
3
220
Featured
See All Featured
Scaling GitHub
holman
463
140k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Rails Girls Zürich Keynote
gr2m
95
14k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.2k
A Tale of Four Properties
chriscoyier
160
23k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Art, The Web, and Tiny UX
lynnandtonic
302
21k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
What's in a price? How to price your products and services
michaelherold
246
12k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
Unsuck your backbone
ammeep
671
58k
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に触ってみてください!