JavaフレームワークのSpring Bootとは?Spring Bootでできる事や特徴、Spring Bootで開発する事のメリット、仕事で使われているかどうかなどについて話しています。Spring Bootに興味のある方は参考にしてください。
※ 本ページはプロモーションが含まれています。
Spring Bootは、Java開発で人気のあるフレームワークです。もともと、Spring Bootが登場するよりもっと昔に、"Spring Framework"というフレームワークがありました(もちろん今でもあります)。
Spring Frameworkは、最初はDI、AOPというのがメイン機能だったわけですが、機能単位でいくつものサブプロジェクト(フレームワーク)が開発されるようになりました。例として、Spring Data、Spring MVC、Spring Security、Spring Session、Spring Batch、Spring Rooなどがあります。Spring Frameworkのサブプロジェクトの詳細については、公式ページを参考にしてください。
Spring Framework(spring.io)
いくつものサブプロジェクトのフレームワークができたSpring Frameworkですが、今度は個々のフレームワークを使いこなす事が難しくなり、そもそも最初に使い始める事自体がJavaプログラマにとって大変になってきました。
そこで、Spring Frameworkの各サブプロジェクトのフレームワークを使い、Springベースのアプリケーションを作り始めやすくしたフレームワークがSpring Bootです。特に、ウェブ系やDBアクセス系のフレームワークが充実してきたため、Spring Bootが注目されるようになってきました。
実際に、Spring Bootを使ってウェブアプリ(ウェブサイト)やWeb APIなどが開発しやすくなったため、Java初心者・入門者でもSpring Bootで簡単なウェブアプリやWeb APIなら開発できるようになりました。結局のところ、Spring BootのおかげでSpringがJavaで人気のフレームワークになったとも言えると思います。
また、下のグラフはGoogle Trends(グーグルトレンド、2014/11/1〜2022/7/23)で、Javaでメジャーなフレームワークのウェブ検索のトレンドを表したものです。
これを見ても、Spring BootがJavaで1番人気があるフレームワークだと言えると思います。2018年以降は伸びてはいませんが、高い位置で安定して推移しています。
Play Frameworkは登場した当初は注目されていましたが、あまり伸びていない印象ですね。あと、Strutsが徐々に衰退傾向で時々スパイクのように跳ね上がっていますが、これは恐らくセキュリティ脆弱性の問題で注目されたからだと思います。
Spring Bootは高い人気を維持した状態で時間も結構経っているので、開発が活発で、かつ、枯れた技術のWebフレームワークになっています。ですので、Java開発の仕事の現場でもよく使われているフレームワークだと思います。
Spring Bootでできる事がですが、MVCモデルのウェブアプリやREST API/Web APIなどのウェブ系のアプリを開発する事ができます。また、ウェブアプリ以外でもコマンドラインアプリも作れますので、バッチも開発できます。上でも書きましたが、Springベースのアプリケーションを作り始めやすくした仕組み・フレームワークがSpring Bootです。
Spring Bootでどんなアプリを作れるかを知りたい方は、公式ページにたくさんの入門サンプルコードがありますので、それを眺めてみるのが良いと思います。入門サンプルコードは、Eclipse(STS)から簡単にプロジェクトをインポートする事ができますので、Eclipse上でコードを見たり、アプリを実行して動作確認をする事ができます。
EclipseでSpringの公式サンプルプロジェクトをインポートして動作確認をする方法については別ページで解説していますので、そちらも参考にしてみてください。
次に、Spring Bootを使ってアプリケーションを開発する事のメリットやSpring Bootの特徴についてです。
Spring Bootは「設定より規約(CoC、convention over configuration)」を優先しているため、XML設定ファイルをアプリ開発者が用意しなくても、すぐにアプリ開発のプログラミングに取り掛かることができます(プロジェクトをMavenで管理する場合、pom.xmlファイルは必要になります。また、XMLファイルはないですが、シンプルなプロパティファイルapplication.propertiesや、メッセージファイルmessages.propertiesなどはあります。)
そして、XMLファイルを使用しない代わりに、Spring BootはJavaファイルでアノテーションを多く使用します。また、@AutowiredでDIもできますので、これらのアノテーションによってプログラマが書くコード量を削減できます。コード量を削減でき、設定ファイルなどに時間を取られずにアプリ開発に集中できるため、基本的なJavaプログラミングの知識や経験さえあれば、DBを使うシンプルなウェブアプリやWeb APIの開発をするだけなら学習コストはそれほどかかりません。その結果、高速でアプリ開発をする事ができます。
また上で書きましたが、Spring BootはSpring Frameworkをベースとしているため、Spring Frameworkの各機能を使えるのも大きなメリットと言えます。
シンプルなMVCモデルのウェブアプリやAPIを開発するだけなら学習コストは低いかもしれませんが、しっかりとセキュリティを考慮したり、様々なSpringの機能を把握したりするとなると、やはりそれなりに大変だと個人的には思います。
時間は有限ですので、必要になったり気になる機能があれば、学習していくというスタイルが良いかもしれませんね。
仕事でもSpring Bootを使ったプロジェクト・案件は多く見られます。現状、JavaでウェブアプリやAPIなどのウェブ開発をする場合、一番使われているフレームワークだと思います。
上でも説明しましたが、ウェブアプリ、Webサービス、REST API/Web API、バッチなどをスピード感を持って開発出来る事や、Javaプログラマにとって学習コストが高くないなどが、Spring Bootが仕事で使われている要因だと思います。
また、DIによってクラスの依存関係が小さいため、テストコードを書きやすいというのも仕事では大きなメリットです。
仕事をするためにSpring Bootを学習するというJavaプログラマが増えていけば、今後さらにSpring Bootを使ったプロジェクトが増えていく事も予想できます。
以上簡単でしたが、Spring Bootについての簡単な説明とSpring BootがJavaで人気のあるフレームワークである事を書いてきました。今後、Javaの基礎を学習した人で、Javaで何かウェブ系のアプリを作ってみたいと考えているなら、Spring Bootは選択肢の1つに入ると思います。
次回からは、Spring Bootを使った日記投稿ウェブアプリを実際に開発していきます。ウェブアプリはMVCモデルで、日記の新規投稿、編集、削除、表示という基本的なCRUD機能を備えた物です。また、データ保存にはDBを使用しています。
よくあるスタンダードなウェブアプリで、かつ学習用にシンプルなものにしていますので、Spring Bootに興味がある・学習しようとしているJava初心者・入門者の方は参考にしてみてください。
(第1回) Spring Boot2で日記ウェブアプリの開発入門スタート【Spring Boot2で日記投稿ウェブアプリ】
Spring Bootの日記投稿ウェブアプリ開発入門トップ
また、"Hello world"を出力するだけのWebアプリをどれだけ簡単にSpring Bootで作れるかをまず知りたい方は、こちらの記事も参考にしてください。