Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Spring Bootという強すぎるフレームワークについて

Spring Bootという強すぎるフレームワークについて

takayuki.miura

February 28, 2022
Tweet

More Decks by takayuki.miura

Other Decks in Technology

Transcript

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

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

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

     https://twitter.com/miura0203
  4.  ΞδΣϯμ • Spring Bootとは? • Spring Bootのすごい所 • Spring

    Bootの難しい所 • 最後に 
  5. 4QSJOH#PPUͱ͸ʁ

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

    
  7. ͍·͞Β+BWB 🤔

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

  9. ࠓͷ+BWB 4QSJOH#PPUͳΒಡΈ΍͍͢ʂ Spring Bootͱ͸ʁ 4QSJOH#PPUͷྫ • ΞϊςʔγϣϯΛۦ࢖͢Ε͹ɺॻ͘΂͖ ίʔυΛେ෯ʹ΁Β͢͜ͱ͕Ͱ͖ɺυϝ Πϯίʔυʹ஫ྗͰ͖Δʂ •

    ςετͳͲͷɺࠓͷ։ൃʹඞཁͳػೳ͕ ἧ͍ͬͯΔʂ 
  10. ͍·͞Β+BWB 🤔

  11. ͍·ͦ͜+BWBʂ😎

  12. 4QSJOH#PPUͷ͍͢͝ॴ

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

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

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

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

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

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

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

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

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

  22. σʔλΫϥε͕൥ࡶʜ 1)1ͷྫ ΧϓηϧԽ͞ΕͨσʔλΫϥεΛ࡞Δʹ͸ɺ ҎԼ͕ඞཁ • QSJWBUFͳϓϩύςΟ • QVCMJDͳ HFUUFSTFUUFS •

    *NNVUBCMFͳΒɺ TFUUFSͷ୅ΘΓʹ ίϯετϥΫλͰϓϩύςΟΛηοτ Spring Bootͷ͍͢͝ॴ 
  23. σʔλΫϥε͕؆୯ʹ࡞ΕΔʂ 4QSJOH#PPUͷྫ -PNCPLͱ͍͏ϥΠϒϥϦΛ࢖͏͜ͱͰɺ ͔ͳΓγϯϓϧʹ࣮૷Ͱ͖Δ • !%BUBͰ .VUBCMFͳσʔλΫϥε • ࣗಈͰ HFUUFSTFUUFS͕෇͘

    • ͞Βʹ !"DDFTTPSTΛ͚ͭΕ͹ɺ νΣʔϯͰఆٛͰ͖Δ • !7BMVFͰ *NNVUBCMFͳσʔλΫϥε • ࣗಈͰ HFUUFSίϯετϥΫλ͕෇͘ • ࣗಈͰϓϩύςΟʹ QSJWBUF͕෇͘ Spring Bootͷ͍͢͝ॴ 
  24.  ͦΕҎ֎ʹ΋ͨ͘͞Μʂ • Envファイルに定義するような環境ごとのデータを、クラスに紐付けて取得し、DIして使用 できる • マルチプロジェクト機能を使って、簡単にモジュラモノリス構成を作れる • Spring BootではWebフロントサーバからバックエンドAPI、バッチまで作れるので、

    ほぼ1サービスをそのプロジェクトのみで作ることができる • キャッシュ生成・取得、DBのトランザクション、データのJSON化やJSONのパースなど、面 倒な作業をアノテーションだけで実装することができる • などなど… Spring Bootͷ͍͢͝ॴ 
  25. 4QSJOH#PPUͷ೉͍͠ॴ

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

  27. ཪଆͷ࢓૊Έ͕ෳࡶ ͍Ζ͍Ζͳࣄ͕Ͱ͖ɺϥΠϒϥϦ΋๛෋ͳ෼ཪ ଆͷ࢓૊Έ͕ෳࡶͰɺ٧·Δͱղܾ͕େมͳ࣌ ͕͋Δ • ͓໿ଋతͳઃఆ͕ଟ͍ • ϚϧνϓϩδΣΫτ΍࢖͏ϥΠϒϥϦͷ૊Έ ߹ΘͤʹΑͬͯ͸ɺಛघͳઃఆ͕ඞཁͳ৔߹ ͕͋Δ

    • %#΍3FEJT౳ͷϛυϧ΢ΣΞͱͷ઀ଓΛΧε λϚΠζ͍ͨ͠৔߹ɺෳࡶͳઃఆ͕ඞཁʹͳ Δ • ͳͲͳͲʜ Spring Bootͷ೉͍͠ॴ 
  28. 8FC্ͷ஌ݟͷϑΟϧλϦϯά͕ ೉͍͠ 4QSJOH#PPUͷ೉͍͠ॴ ˞ݫີʹ͸+BWB΍֤छϥΠϒϥϦ΋ؚΈ·͢

  29.  8FC্ͷ஌ݟͷϑΟϧλϦϯά͕೉͍͠ Spring Bootもそうだが、使われる各種ライブラリやJava自体も歴史が古く、いろいろな情報が Web上で出回ってしまっている • 過去のバージョンでは動いたが、今は使えないもの • 一見似ているが、実は異なるライブラリ •

    依存管理システムであるMavenとGradleについて、欲しい方の情報が書かれていない • (しかもそのほとんどが英語) • などなど… Spring Bootͷ೉͍͠ॴ 
  30. (SBEMFͷ࢖͍ํ͕೉͍͠ 4QSJOH#PPUͷ೉͍͠ॴ ˞ݫີʹ͸(SBEMFͷ࿩Ͱ͢

  31. (SBEMFͷ࢖͍ํ͕೉͍͠ (SBEMFͷઃఆ͸ɺଞͷґଘ؅ཧγεςϜʹൺ΂ɺ ෳࡶͳ͜ͱ͕Ͱ͖Δ෼ඇৗʹཧղ͕೉͍͠΋ͷ ͱͳͬͯ͠·͍ͬͯΔ • JNQMFNFOUBUJPOSVOUJNF0OMZ BQQMZ KBS • CVJMEHSBEMF

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

    Spring Bootͷ೉͍͠ॴ 
  33. ࠷ޙʹ

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