Slide 1

Slide 1 text

4QSJOH#PPUͱ͍͏ ڧ͗͢ΔϑϨʔϜϫʔΫʹ͍ͭͯ エキサイト株式会社 三浦大幸

Slide 2

Slide 2 text

˞ݫີʹ͸ɺ4QSJOH#PPUͱͦΕʹؔ࿈͢Δٕज़ͷ࿩Ͱ͢

Slide 3

Slide 3 text

ࣗݾ঺հ • エキサイト新卒6年目 • バックエンドエンジニアとして入社 • その後、フロント・iOSアプリ・AWSインフラ開発を経験 • PHPの開発経験が一番長いが、最近は主にJavaで開発中 https://twitter.com/miura0203

Slide 4

Slide 4 text

ΞδΣϯμ • Spring Bootとは? • Spring Bootのすごい所 • Spring Bootの難しい所 • 最後に

Slide 5

Slide 5 text

4QSJOH#PPUͱ͸ʁ

Slide 6

Slide 6 text

4QSJOH#PPUͱ͸ʁ • Javaのフレームワーク • WebサイトやAPIはもちろん、バッチなども作ることができる • MavenやGradleで依存管理をする Spring Bootͱ͸ʁ

Slide 7

Slide 7 text

͍·͞Β+BWB 🤔

Slide 8

Slide 8 text

+BWBͱ͔ݹष͍ͷͰ͸ʜ • ৑௕ʁ • ෼͔ΓͮΒ͍ʁ Spring Bootͱ͸ʁ

Slide 9

Slide 9 text

ࠓͷ+BWB4QSJOH#PPUͳΒಡΈ΍͍͢ʂ Spring Bootͱ͸ʁ 4QSJOH#PPUͷྫ • ΞϊςʔγϣϯΛۦ࢖͢Ε͹ɺॻ͘΂͖ ίʔυΛେ෯ʹ΁Β͢͜ͱ͕Ͱ͖ɺυϝ Πϯίʔυʹ஫ྗͰ͖Δʂ • ςετͳͲͷɺࠓͷ։ൃʹඞཁͳػೳ͕ ἧ͍ͬͯΔʂ

Slide 10

Slide 10 text

͍·͞Β+BWB 🤔

Slide 11

Slide 11 text

͍·ͦ͜+BWBʂ😎

Slide 12

Slide 12 text

4QSJOH#PPUͷ͍͢͝ॴ

Slide 13

Slide 13 text

%*͕ͱͯ΋؆୯ 4QSJOH#PPUͷ͍͢͝ॴ

Slide 14

Slide 14 text

%*ͷ؅ཧ͸໘౗ʜ -BSBWFMͷྫ *OUFSGBDFͱ*NQMFNFOUΛ࣮૷ %*ίϯςφʹొ࿥ ࢖༻͍ͨ͠ΫϥεͷίϯετϥΫλͷ Ҿ਺Ͱఆٛ Spring Bootͷ͍͢͝ॴ

Slide 15

Slide 15 text

%*ͷ؅ཧ͸໘౗ʜ -BSBWFMͷྫ ໰୊఺ • %*ొ࿥͕൥ࡶʹͳΔ • ίϯετϥΫλͷهड़͕൥ࡶʹͳΔ ଞͷϑϨʔϜϫʔΫͰ΋ࣅͨΑ͏ͳݒ೦͕͋Δʜ Spring Bootͷ͍͢͝ॴ

Slide 16

Slide 16 text

%*͕ͱͯ΋؆୯ʂ 4QSJOH#PPUͷྫ *OUFSGBDFͱ*NQMFNFOUΛ࣮૷͠ɺ ΞϊςʔγϣϯΛఆٛ ࢖༻͍ͨ͠ΫϥεͷϓϩύςΟʹɺΞϊ ςʔγϣϯͱҰॹʹఆٛ Spring Bootͷ͍͢͝ॴ

Slide 17

Slide 17 text

%*͕ͱͯ΋؆୯ʂ 4QSJOH#PPUͷྫ ϝϦοτ • %*ίϯςφ΁ͷొ࿥͕γϯϓϧ • ίϯετϥΫλʹཏྻ͢Δඞཁ͕ͳ͘ɺ γϯϓϧ Spring Bootͷ͍͢͝ॴ

Slide 18

Slide 18 text

ϨΠϠ͝ͱͷΞΫηε੍ݶ͕Ͱ͖Δ 4QSJOH#PPUͷ͍͢͝ॴ ˞ݫີʹ͸(SBEMFͷػೳͰ͢

Slide 19

Slide 19 text

ϨΠϠ͝ͱʹΞΫηε੍ݶ͍ͨ͠ʜ $MFBO"SDIJUFDUVSFͷϨΠϠ ཧ૝తʹ͸ɺӈਤͷΑ͏ʹ ϨΠϠؒͷΞΫηε੍ݶΛ͍ͨ͠ • ্͔ΒԼͷϨΠϠʹ͸ΞΫηεՄೳ • Լ͔Β্ͷϨΠϠʹ͸ΞΫηεෆՄ Spring Bootͷ͍͢͝ॴ Controller Service Repository ΞΫηεՄೳ ΞΫηεෆՄ

Slide 20

Slide 20 text

ϨΠϠ͝ͱͷΞΫηε੍ݶ͕Ͱ͖Δʂ (SBEMFͷʮϚϧνϓϩδΣΫτʯͱ͍͏ػೳͰ ϨΠϠؒΞΫηε੍ݶΛ࣮ݱͰ͖Δ TFUUJOHTHSBEMFϑΝΠϧͰ αϒϓϩδΣΫτΛఆٛ CVJMEHSBEMFϑΝΠϧͰɺ αϒϓϩδΣΫτؒͷґଘΛఆٛ Spring Bootͷ͍͢͝ॴ

Slide 21

Slide 21 text

σʔλΫϥε͕؆୯ʹ࡞ΕΔ 4QSJOH#PPUͷ͍͢͝ॴ ˞ݫີʹ͸-PNCPLͷػೳͰ͢

Slide 22

Slide 22 text

σʔλΫϥε͕൥ࡶʜ 1)1ͷྫ ΧϓηϧԽ͞ΕͨσʔλΫϥεΛ࡞Δʹ͸ɺ ҎԼ͕ඞཁ • QSJWBUFͳϓϩύςΟ • QVCMJDͳ HFUUFSTFUUFS • *NNVUBCMFͳΒɺ TFUUFSͷ୅ΘΓʹ ίϯετϥΫλͰϓϩύςΟΛηοτ Spring Bootͷ͍͢͝ॴ

Slide 23

Slide 23 text

σʔλΫϥε͕؆୯ʹ࡞ΕΔʂ 4QSJOH#PPUͷྫ -PNCPLͱ͍͏ϥΠϒϥϦΛ࢖͏͜ͱͰɺ ͔ͳΓγϯϓϧʹ࣮૷Ͱ͖Δ • !%BUBͰ .VUBCMFͳσʔλΫϥε • ࣗಈͰ HFUUFSTFUUFS͕෇͘ • ͞Βʹ !"DDFTTPSTΛ͚ͭΕ͹ɺ νΣʔϯͰఆٛͰ͖Δ • !7BMVFͰ *NNVUBCMFͳσʔλΫϥε • ࣗಈͰ HFUUFSίϯετϥΫλ͕෇͘ • ࣗಈͰϓϩύςΟʹ QSJWBUF͕෇͘ Spring Bootͷ͍͢͝ॴ

Slide 24

Slide 24 text

ͦΕҎ֎ʹ΋ͨ͘͞Μʂ • Envファイルに定義するような環境ごとのデータを、クラスに紐付けて取得し、DIして使用 できる • マルチプロジェクト機能を使って、簡単にモジュラモノリス構成を作れる • Spring BootではWebフロントサーバからバックエンドAPI、バッチまで作れるので、 ほぼ1サービスをそのプロジェクトのみで作ることができる • キャッシュ生成・取得、DBのトランザクション、データのJSON化やJSONのパースなど、面 倒な作業をアノテーションだけで実装することができる • などなど… Spring Bootͷ͍͢͝ॴ

Slide 25

Slide 25 text

4QSJOH#PPUͷ೉͍͠ॴ

Slide 26

Slide 26 text

ཪଆͷ࢓૊Έ͕ෳࡶ 4QSJOH#PPUͷ೉͍͠ॴ

Slide 27

Slide 27 text

ཪଆͷ࢓૊Έ͕ෳࡶ ͍Ζ͍Ζͳࣄ͕Ͱ͖ɺϥΠϒϥϦ΋๛෋ͳ෼ཪ ଆͷ࢓૊Έ͕ෳࡶͰɺ٧·Δͱղܾ͕େมͳ࣌ ͕͋Δ • ͓໿ଋతͳઃఆ͕ଟ͍ • ϚϧνϓϩδΣΫτ΍࢖͏ϥΠϒϥϦͷ૊Έ ߹ΘͤʹΑͬͯ͸ɺಛघͳઃఆ͕ඞཁͳ৔߹ ͕͋Δ • %#΍3FEJT౳ͷϛυϧ΢ΣΞͱͷ઀ଓΛΧε λϚΠζ͍ͨ͠৔߹ɺෳࡶͳઃఆ͕ඞཁʹͳ Δ • ͳͲͳͲʜ Spring Bootͷ೉͍͠ॴ

Slide 28

Slide 28 text

8FC্ͷ஌ݟͷϑΟϧλϦϯά͕ ೉͍͠ 4QSJOH#PPUͷ೉͍͠ॴ ˞ݫີʹ͸+BWB΍֤छϥΠϒϥϦ΋ؚΈ·͢

Slide 29

Slide 29 text

8FC্ͷ஌ݟͷϑΟϧλϦϯά͕೉͍͠ Spring Bootもそうだが、使われる各種ライブラリやJava自体も歴史が古く、いろいろな情報が Web上で出回ってしまっている • 過去のバージョンでは動いたが、今は使えないもの • 一見似ているが、実は異なるライブラリ • 依存管理システムであるMavenとGradleについて、欲しい方の情報が書かれていない • (しかもそのほとんどが英語) • などなど… Spring Bootͷ೉͍͠ॴ

Slide 30

Slide 30 text

(SBEMFͷ࢖͍ํ͕೉͍͠ 4QSJOH#PPUͷ೉͍͠ॴ ˞ݫີʹ͸(SBEMFͷ࿩Ͱ͢

Slide 31

Slide 31 text

(SBEMFͷ࢖͍ํ͕೉͍͠ (SBEMFͷઃఆ͸ɺଞͷґଘ؅ཧγεςϜʹൺ΂ɺ ෳࡶͳ͜ͱ͕Ͱ͖Δ෼ඇৗʹཧղ͕೉͍͠΋ͷ ͱͳͬͯ͠·͍ͬͯΔ • JNQMFNFOUBUJPOSVOUJNF0OMZ BQQMZ KBS • CVJMEHSBEMF HSBEMFQSPQFSUJFT TFUUJOHTHSBEMF • (SBEMFλεΫͱ͸ʜʁ • ͳͲͳͲʜ Spring Bootͷ೉͍͠ॴ

Slide 32

Slide 32 text

ͦΕҎ֎ʹ΋ʜ • 先に挙げた点から、初期ラーニングコストはそれなりにある • Nullですぐエラーになるにも関わらず、Nullを安全に扱うのが難しい • ビルドに時間がかかる • などなど… Spring Bootͷ೉͍͠ॴ

Slide 33

Slide 33 text

࠷ޙʹ

Slide 34

Slide 34 text

࠷ޙʹ 悪いところも色々書きましたが、それでもなお開発する上で有り余るメリットがあると考えて います。 また、JavaもSpring Bootも活発に更新されているので、いつか先程挙げたデメリットがなくなる 日も来るかもしれません。 ぜひ一度、Spring Bootに触ってみてください!