MENU
👇しうが厳選・おすすめのブログ!
しう
【テニス好きブロガー】 
テニス、読書が好きです。IT企業で学んだこともブログに書いています。高校教諭(テニス部顧問)→IT企業。テニス歴12年。人生をより有意義なものにしたいと思い、ブログを書き始めました。Twitterもしています。
アーカイブ

Springのメリット・デメリット【Java】 (Spring FrameworkとSpring Bootの違いも解説)

エンジニアとして3年目に突入し、一番触れる機会が多かった言語がJavaでSpringを利用する機会も多かったためJavaでのSpringのメリットやデメリットについて記載していきます。まずはJavaのフレームワークであるSpringとは何か、またSpringのメリット・デメリットについて実際に利用して感じたことも含めて記事を書いています。

記事の信頼性:エンジニア3年目の「しう」が実際の開発現場でJavaのフレームワーク、Springを利用して感じたメリット・デメリットについて記載しています。

 

しう

Spring FrameworkとSpring Bootは異なるものやから、そのあたりも解説していくで!

目次

Spring Framework・Spring Bootとは【Java】

Spring Frameworkはオープンソースのフレームワークです。2004年にバージョン1.0がリリースされ、多くのエンジニアに利用をされているフレームワークとなります。省略をしてSpringと呼ばれることもあります。

アスペクト指向プログラミングやMVCモデル(Model、View、Controller)などのサービスを提供するモジュールから構成されています。Javaだけでなく、KotlinやGroovyでも利用することができるフレームワークとなっています。

参考URL:
wikipedia(Spring Framework)
Spring Framework 公式サイト
Spring Boot 公式サイト

 

ちなみに、Spring BootというSpring Frameworkの機能の使い分けが困難という欠点を解消するために作られたフレームワークも存在していて、筆者の「しう」が開発現場で利用する時にはSpring Bootを利用することが多かったです。

Spring BootはSpring Initializrのサイトを利用することで Lombok や MySQL Driver など自分の選択した機能を利用するプロジェクトの作成ができます。Lombokについては下記の記事で紹介しているので参考にしてください。

あわせて読みたい
JavaでLombok! (@Builder)【しうの備忘録】 今回は、Builderについて解説していきます!   Builder って何なの? SpringのLombok(ロンボック、ロンボク)で使えるアノテーションの一つやで!   そんな機能もあ...

Springの特徴

Springの特徴について下記の順番で記載していきます。今から紹介するSpringの特徴は、 Spring FrameworkとSpring Bootのどちらにも当てはまっているものになります。

  • DI(Dependency Injection):依存性の注入
  • AOP(アスペクト志向プログラミング)により管理がしやすい

DI(Dependency Injection):依存性の注入

SpringはDI(Dependency Injection)を提供しており、オブジェクト間の依存関係を疎結合にすることができます。Javaの場合はプログラム同士の依存性が高いとテストや保守対応がしにくくなるため、DIを利用してメンテナンスのしやすいシステム開発をおこなうことは大切です。

AOP(アスペクト志向プログラミング)により管理がしやすい

AOP(アスペクト志向プログラミング)という特徴もあります。AOPは、Springが提供する機能の一つで、アプリケーション全体にまたがる機能をモジュール化し、コードの再利用性や保守性を向上させるための手法です。

 

実際のJavaを利用した開発現場では、エラー時に原因が特定できるようにするため、処理中にcatch句を通る場合はログの出力をさせたい場合が多いです。しかし、ログ出力の処理を各機能でそれぞれ書いてしまうとログの出力内容を一部変えたい場合など実装をした機能全ての修正が必要になります。

AOPではアプリケーションの機能を横断する共通処理を、別のクラスに分離することができるため、アプリケーション全体にまたがる共通処理を一箇所にまとめることができ、保守性を高めることができます。

JavaでSpringを利用するメリット

JavaでSpringを利用するメリットについて下記の順番で説明していきます。技術選定をする際にはメリットを理解した上で選定することが大切になるので、頭の中に入れておくといいでしょう。

  • 案件数が豊富
  • 生産性の向上
  • コミュニティーの活発さ
  • JUnitを利用したテストコードの実装

案件数が豊富

JavaでSpringを利用する1つ目のメリットは、案件数が豊富ということです。転職活動やSESでの面接の時には今まで利用してきた技術について質問がされますが、その案件で採用されている技術の経験があると面接で好印象を持たれやすいです。

つまり案件数が多いということはその経験を今後、エンジニアとして働くときに活かしやすいということです。仕事を通じてせっかく勉強するのであれば将来の役にたつ勉強の方がいいので、案件数が豊富なSpringの案件に取り組むといいでしょう。

 

しう

人気な技術の経験があると転職活動の時にも活かしやすいで!

生産性の向上

JavaでSpringを利用する2つ目のメリットは、生産性の向上です。特にSpring Bootでは、システム開発でよく使われる機能に関するサービスを提供しており、自分で1から全て構築する必要は少なくなっています。

先ほど紹介した記事内で書かれているLombokを利用することでJavaでよく使われるGetterやSetter、コンストラクターの記載も短縮できます。システム開発において生産性の向上は重要で、Springを利用するメリットとなっています。

コミュニティーの活発さ

JavaでSpringを利用する3つ目のメリットは、コミュニティーの活発さです。Springは、オープンソースのフレームワークであり、世界中の開発者が利用しています。そのため、調査が必要な場合に既に誰かが調べた内容が見つかる可能性が高いです。

新しいフレームワークの場合は、コミュニティーが活発でなく調査をするのに時間がかかったりするため、コミュニティーの活発さもSpringのメリットとなります。

JUnitを利用したテストコードの実装

JavaでSpringを利用する4つ目のメリットは、JUnitを利用したテストコードの実装です。開発現場によってはテストコードを利用せずにエビデンスを残す手法を採用している現場もありますが、どちらも経験した筆者の立場からするとテストコードは利用した方がいいです。コードの修正対応が入った場合に、テストコードを記載していると既存保証がしやすく最終的にかかる工数が少なくなるからです。

JavaでSpringを利用するデメリット

JavaでSpringを利用するデメリットについて下記の順番で説明していきます。

  • 土台の設定が難しい
  • 学習コストが高い

土台の設定が難しい

Springを利用する場合、様々な設定をする必要が出てきます。先ほど紹介したDIを利用する時の設定やSpring Boot利用時のbuild.gradleの設定が該当します。そのため、Springを利用することで効率アップは測ることができますが、最初の土台設定に時間がかかる可能性があります。

筆者の「しう」が未経験で入社した会社で一番できるエンジニアがSpringの土台の設定をしてくれていましたが、その部分で手間がかかるという理由で小規模な案件の時にLaravel(PHP)を採用することもありました。

学習コストが高い

上記の土台の設定が難しいに関連しますが、Springを利用する場合は学習コストが高くなります。豊富な機能があるため、組み合わせる際にどの機能を採用するかも学ぶ必要がありますし、DIに関する理解もプログラミング初心者にとって簡単なものではありません。

しかし、特にJavaでの開発でSpringが採用されることが多いことからも分かるように、学習コストが高くても使いこなせると開発効率が高くなるフレームワークです。

JavaでSpringを勉強する方法

JavaでSpringを勉強する方法は下記の2つの方法があります。自分に合った方法を選ぶといいですが、それぞれについて両方経験した視点から解説していきます。

  • Udemyでのハンズオン
  • 書籍での学習

Udemyでのハンズオン

1つ目の方法はUdemyでのハンズオンによる学習です。Springを利用する場面としては実際にシステム開発をする時に開発効率アップなどのために利用する場面が多いです。つまり考え方というよりは実務面でのコーディングなどで必要となるため、その場合はハンズオンでの方法を推奨しています。

オススメのUdemyの動画は「」になります。

 

しう

実際に購入して勉強してみたけど、Spring Bootでよく使われるLombokやCRUD処理、DIについても学ぶことができてオススメやで!

書籍での学習

2つ目の方法は書籍での学習です。個人的にはUdemyでのハンズオンを推奨していますが、どうしても本で勉強を進めたいという場合は「」を利用してみてください。

ただ、筆者の「しう」も購入して読んでみましたが、かなり分厚く時間がかかりすぎるためあまりオススメはしていません。また、Spring BootでなくSpring Frameworkの解説書となるため、今から改めて学習するなら「」の方がいいでしょう。

まとめ

いかがでしたか?今回は、次の順番でSpringのメリットやデメリットなどについて記載をしました。

  • Spring Framework・Spring Bootとは【Java】
  • Springの特徴
  • JavaでSpringを利用するメリット
  • JavaでSpringを利用するデメリット
  • JavaでSpringを勉強する方法

 

Javaでの開発で一番有名なフレームワークはSpringなので、Springについての知識を持っておくとJavaエンジニアとしては開発がしやすくなります。Springの特徴やメリット・デメリットを把握した上でシステム開発に役立ててください。

 

☟あわせて読みたい 「しう」のオススメブログ

あわせて読みたい
転職ドラフト・体験談【実務経験2年半の場合】 を利用して転職活動をおこない、無事に内定をいただき転職することができたため体験談を残しておきます。エンジニアであればX(旧Twitter)などで目にすることも多いサー...
あわせて読みたい
Jasper Reports 【JavaでのPDFの作成方法】 今回は、JavaでのJasper ReportsでのPDF出力の方法についてご紹介します。初めてJasper Reportsを実務で使った時には使い方がわからず戸惑うことが多かったですが、使い...
あわせて読みたい
JavaでLombok! (@Builder)【しうの備忘録】 今回は、Builderについて解説していきます!   Builder って何なの? SpringのLombok(ロンボック、ロンボク)で使えるアノテーションの一つやで!   そんな機能もあ...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

【しう】
Java Engineer| 最近はKotlin| 「テニスとJava(プログラミング)のお悩み解決ラボ」運営者| プログラミング・開発現場の学びを主に発信|【経歴】受託系IT企業➪自社開発企業| ∮保有資格∮ : Java Silver,Oracle SQL Silver,基本情報,TOEIC 750,簿記3級

コメント

コメントする

CAPTCHA


目次