Spring Frameworkがよく使われる理由。【4つのメリットを解説】

どうもこんにちわkoheiです。
エンジニア歴が7年目になりました。
そして、以下のツイートをしました。
Spring Frameworkの実務経験を必ずといっていいほど聞かれる気がする。
— こうへい@フリーランスエンジニア (@kohei72901660) April 9, 2020
Javaのフレームワークって色々あると思いますが、まずはSpringから始めるのもありですね。
案件が多いので、精神的安心につながる気がします。
最近ですが参加していた案件でSpring Frameworkをつかったアプリケーションを利用していたこともあり、少しずつですが勉強してきました。
Java歴はある程度あるので、お、便利!といった印象でした。
本記事に実際に感じたSpring Frameworkのメリットについて書きたいと思います。
本記事は

なので、Springを使うことでのメリットを知りたい。
また、なにから初めていいのかわからないので教えてほしい。
そんな方向けになります。
Spring Frameworkがよく使われる理由。4つのメリットを解説。
Javaの実務経験が5年以上になる私ですが、
もしも、Javaのフレームワークを何から始めたらいいか聞かれたら、
第一にSpring Frameworkを勧めます。
なぜかというとSpring Frameworkを以下の4つのメリットがあるからです。
- Spring Frameworkを扱う案件が圧倒的に多いです。つまり、仕事に困らない。
- Spring bootを使用すれば、面倒な設定いらずでロジック箇所の実装にすぐ入れるのでラク
- 単体テストの自動化をしやすい→工数が減ってバグも減る
- コミュニティは活発で、かつ参考書籍も多数あるので問題解決がしやすい
このメリットがあるからこそ
Spring FrameworkがJavaのフレームワークの中で
デフォルトスタンダードになっているといっても過言ではありません。
では、さらに詳しく解説したいと思います。
【メリット①】Spring Frameworkを扱う案件が圧倒的に多いです。つまり、仕事に困らない。
案件紹介のときに必ずと言っていいほど、Spring Frameworkの実務経験を聞かれてきました。
さらに、Spring Framework経験が必須の求人が多い印象です。
これは非常に大事なことだと思います。
やりたいことだけやっていたいとは思いますが、食べていけなくてはやりたいこともできません。
なので、案件数が多いということは安定して収入を得られる可能性が高くります。
個人的には精神的安心にも繋がってます。
【メリット②】Spring bootを使用すれば、面倒な設定いらずでロジック箇所の実装にすぐ入れるのでラク
Spring bootが登場する前は設定がかなり多いので取っ付きにくかったですが、
Spring bootが登場してからはデフォルトの設定で自動でアプリケーションを作成してくれるようになりました。
このおかげで、すぐに目的のロジック箇所の実装に取り掛かることができるようになりました。
知っている方ならイメージがわくと思いますが、まさにRuby on Railsみたいな感じです。
Spring bootの登場により学習コストが高かったSpring Frameworkの敷居が低くなったことでスタートアップの企業でも使われるようになったみたいです。
案件数も多くなるのもこれが理由だと思います。
【メリット③】単体テストの自動化をしやすい→工数が減ってバグも減る
依存性の注入(DI)という考え方によって、
インスタンスの生成とソースコードを分離することが可能になってます。
いわるゆ、モジュールの結合度が弱いので、Spring TestモジュールとJunitを使用したUT、CTが簡単に実装できます。
Springができる前は自分でテストがしやすいように心がけながら実装していました。
時間的コストやスキルが必要でしたが、そもそもSpringではDIをメイン機能といっていいほど重要視しているので、設計に時間をかけずにすみます。
設計も楽になり、自動化テストもできるようになったことで、圧倒的に工数とバグが減るので、企業側からしたら大きなメリットかと思います。
また、Spring SecurityやSpring Bootなどからもテスト用のコンポーネントが提供されており、Springがテストを重要視していることがわかります。
【メリット④】コミュニティは活発で、かつ参考書籍も多数あるので問題解決がしやすい
リリースも頻繁にされてます。
また、公式サイトではSpringを使用したアプリケーション開発のチュートリアルがわかりやすく記載されており、はじめて使用する方にも始めやすい環境が整っていると思います。
詳しくは公式サイト(英語)を見てみてください → https://spring.io/
また、公式サイトは英語で書かれているので、英語が苦手という方は書籍が多数出版されているので学習面では安心かと思います。
反対意見も理解できます。
フレームワークを使わないほうがいいとか、
別のフレームワークを使ったほうがいいとかいう人もいますが、
Springが向かない場合もあることは承知してます。
そのことについては後で述べるとして、上記で述べたメリットからしたら、
今後のエンジニア人生の中で必ず知っておいたほうがいいと私は思います。
非常にコスパがいいです。
なにから初めていいかわからない方はまずSpring Frameworkからはじめましょう!
なので、まず第一にJavaのフレームワークを勉強するならSpringから勉強しましょう!
Spring Frameworkが向かない場合(デメリット)
Spring Frameworkのデメリットは学習コストが高すぎる
これに尽きると思います。
理由は以下になります。
- メイン機能であるDIを理解するのがJavaもしくはプログラム経験をある程度している方でないと難しい。
- さらに、Springには豊富な機能があるので、各機能を適切に組み合わせてアプリケーションを作成する必要がある。
- そのためには設定する項目が多くなりすぎるのも学習コストを上げる要因です。
どのぐらい設定があるのか
また、思いつくだけでも以下の設定が必要です。
- DI、AOPの概念
- アプリケーション作成の設定
- Spring SecurityなどのSpringプロジェクトごとの設定
- アプリケーションサーバ設定
- アプリケーションデプロイ
Spring bootが解決してないの?
しかし、Spring bootが登場した事により、敷居は低くなったのは確かです。
上記で述べた、学習コストを上げる項目を解決してくれます。
ですが、結局のところSpring bootで設定されたデフォルト値から変更しなければいけない場合が必ず起きます。
なので、結局のところ各設定を知らないといけないです。
よって、学習コストは高くなります。
これが大きなデメリットといえます。
とはいえ、メリットのほうが大きい
メリット、デメリットは他のフレームワークにも存在すると思います。
つくるアプリケーションによって、使い分けるのが一番かとは思いますが、
フレームワークすべてを覚えるのは非現実的ですし、それこそコスパが悪いと思います。
なので、Spring Frameworkを勉強して損はないと思います。
Spring Frameworkのおすすめの勉強法
まずは、Spring Bootを使用したWebアプリケーション開発を簡単に実装してみることをおすすめします。
そして、あとから内部構造をみるなり、追加したい機能ができたときにSpringの詳しい設定について勉強するのがいいかと思います。
なぜなら、実際に動くものを作ってみないと正直イメージしにくく、覚えられないと思います。
具体的には
Spring Bootを使用してWebアプリケーションを作成し、追加したい機能については書籍を読んで肉付けしていくのがいいかと思います。
おすすめの本
私が読んでみて、おすすめの本は以下になります。
DI、AOPの概念や、Springの各プロジェクト(Spring SecurityやSpring bootなど)についてかなり網羅できてると思います。
テストについても記載されてますし、本の最後の章では実際にアプリケーションを作成の例が書かれているので、初心者の方はまずはそこからはじめるとイメージがわきやすくていいかと思います。
しかし、他の書籍に比べるとボリュームが多いです。
なので、一気読みしてもいいですが、つまずく可能性もあるので、意気込まずに検索用として使うのもありかと思います。
いろいろ勉強方法はあることは承知してます。
そんな私もはじめは本をひたすら読んでいた時期がありました。
はじめはやる気があるのでいいのですが、途中からわからないことが多くなり気づいたら読むのをやめてしまった過去もあります。。
5年以上、試行錯誤しましたが、結局、実際に作ってみるのが一番だということにたどり着きました。
ただ、人それぞれの勉強法があると思うので、やりやすい方法でいいと思います。
勉強法についてわからない方の参考になれれば幸いです。
人気記事①:【厳選4冊+α】Spring Framework初心者におすすめな本
人気記事②:現役エンジニアがおすすめするプログラミングスクール5社:無料あり
