$30 off During Our Annual Pro Sale. View Details »

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

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

takayuki.miura

February 28, 2022
Tweet

More Decks by takayuki.miura

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide


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

    https://twitter.com/miura0203

    View Slide


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

    View Slide

  5. 4QSJOH#PPUͱ͸ʁ

    View Slide


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

    View Slide

  7. ͍·͞Β+BWB 🤔

    View Slide

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

    View Slide

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

    View Slide

  10. ͍·͞Β+BWB 🤔

    View Slide

  11. ͍·ͦ͜+BWBʂ😎

    View Slide

  12. 4QSJOH#PPUͷ͍͢͝ॴ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide


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

    View Slide

  25. 4QSJOH#PPUͷ೉͍͠ॴ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide


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

    View Slide

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

    View Slide

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

    View Slide


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

    View Slide

  33. ࠷ޙʹ

    View Slide


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

    View Slide