Spring
2021.09.21
【5分でわかる】Spring Boot超入門! 特徴やできること、Spring Frameworkとの違いなどをわかりやすく解説
2023.11.15


Spring bootとSpringの違い

Springの肥大化

前回記事Spring Flameworkとは?(記事リンク)でも紹介しましたが、Springは、WebシステムやWebサービスをはじめ、クラウドアプリケーションやモバイルシステムなど、Spring に備わっている機能の拡張性を利用して、細やかな仕様変更や多様な開発プロジェクトに柔軟に対応できるフレームワークです。

開発言語として人気の高いJavaの中でもSpringを扱えるエンジニアは貴重です。特に大規模開発を行うSIer業界では重宝されており、今後も需要が無くなるということは考えられません。

一方で、Springが提供する機能の数は多く、その全体を把握することを難しくしているのも事実です。また、Qiita等の初学者向けの解説やサンプルコード等を参考にできるサイトでは、PHPのLaravelやRuby on Rails等、プログラミングスクールで人気の言語と比べると参考記事の量は少ない傾向にあります。そのため、他のフレームワークと比べると習得難易度の難しいフレームワークと言えるかもしれません。


様々なSpringプロジェクト群

下記のとおり、Spring Flamework公式(参考URL https://spring.io/projects)に載っているプロジェクトだけでも両手では数えきれません。Springを本業とされるエンジニアでも全てのプロジェクトを使用したことがある人はなかなかいないのではないでしょうか。

また、開発現場では他のフレームワークやミドルウェア・サービスと連携させて、プロジェクトに合ったカスタマイズをして開発を進めていくこともあります。そのため、設計段階で高度な知識や経験が必要となることもあります。

開発でフレームワークを活用するメリットに、エンジニアの知識や質にバラつきが合っても、チームでの開発、運用・保守を効率化してくれるというものがあります。しかし、Springは習得に時間がかかるため、組織やチームを集めにくくなるといった側面もあります。こうしたデメリットを解消してくれるのがSpring bootです。

Springプロジェクト一覧機能
Spring Cloudクラウドネイティブ化
Spring Cloud Data FlowKubernetes用ストリーミング・バッチデータ処理
Spring Dataデータベースへのアクセス
Spring Security認証・認可などのセキュリティ機能
Spring Sessionセッション情報の管理
Spring Integrationシステム間連携
Spring HateoasREST APIの提供
Spring REST DocsREATfulなサービスのドキュメント生成
Spring Batchバッチアプリケーションの構築
Spring AMQPメッセージングサービス
Spring for AndroidAndroidアプリケーション開発
Spring CredHubGithubとの連携
Spring FIOJavascriptライブラリ
Spring for Apatch KafkaApatche Kafkaへの開発の適用
Spring LDAPLDAP認証の利用
Spring Mobileモバイルやタブレットへのビューの提供
Spring Rooコマンドラインからのファイル作成
Spring Shellシェルスクリプト等の作成
Spring StatemachineUMLの実装
Spring Valut機密情報等の操作
Spring Web Flow画面遷移の記載
WebServiceドキュメント駆動開発のサポート



Spring bootとは


Springで実現できることが多くなってきた反面、開発プロジェクトへの導入・Java初学者の勉強へのハードルが高くなることにもつながりました。

Spring bootが登場する前は、Springの初期設定で躓いてしまい、開発環境内ですら自分が書いたコードの動作確認をすることができず、泣く泣くJavaを諦めてしまった初学者もいるのではないでしょうか。

Spring Bootは、Springプロジェクト群を汎用性のある形でパッケージ化し、シンプルに誰でも活用できるようにしたフレームワークです。

Springプロジェクト作成時に時間のかかる初期設定・環境構築の手間を省いてくれる点も、Spring Bootの最も大きな特徴の一つです。これにより、マイクロサービス等の小規模・シンプルなWebアプリケーションの開発時に採用されたり、JavaやSpringの勉強を始めてとりあえず動くアプリケーションを作ってみたいという人が、最初に勉強してみるフレームワークとして選ばれたりすることが多くなっています。

現在では様々なシチュエーションでSpring bootが採用され、その注目度は日々上がっています。

Spring bootの人気・採用事例


Spring bootの影響力の大きさを数字で見てみましょう。Developer Ecosystem 2020(https://www.jetbrains.com/ja-jp/lp/devecosystem-2020/java/)のJavaの項目ではフレームワークとしてSpringが圧倒的なシェアを誇ることが見て取れます。またSpringよりも近年ではSpring bootの方が人気なフレームワークとなっています。

Yahoo等の大手企業でも、新たにサーバーサイドアプリケーションを作成する際は、Spring bootが採用されていることが多いようです、Java言語で開発を行う企業の至る所で、Spring bootへの置き換えが進んでいます。

また、Javaを簡素化・汎用化した言語であるKotlinでもspring bootフレームワークは利用することができ、サイバーエージェント・Line・エムスリーといった、名だたるIT企業でもフレームワークとして採用されています。


Spring Bootを使うメリット

Spring Bootのメリット①:Tomcatの内包

JavaでのWebシステム開発は、warファイルを作りTomcatやJBossなどのアプリケーションサーバーにデプロイするのが一般的です。これらのプロジェクトに毎回Tomcatを入れていては、手間がかかります。

Spring BootでははじめからTomcatが組み込まれており、普通のJavaファイルと同じようにJavaクラスを起動すると、Tomcatも自動で起動してアプリケーションが勝手にデプロイされて動くようになります。

Tomcatの情報が確認できないと不安に思う方もいるかもしれませんが、pom.xmlファイルを辿るとバージョン等確認することができますので、ご安心ください。

また、Spring Bootのアプリケーションをjarにまとめると、Tomcat一式もjarファイルの中に含まれ、jarファイルだけで起動ができます。jarファイルのみで環境を構築できるので、AWSやコンテナ技術など現在トレンドとなっているマイクロサービスとも相性がよいという点もメリットです。

Spring Bootのメリット②:xmlファイルの記述が不要

Springで用意されている多種多様な機能を使うためには、xmlファイルに必要なプロジェクト・ライブラリを記載していき適切な設定を記載していく必要があります。一文字でも間違えるとプロジェクトが起動できないため、このxmlでの設定ファイル作成がSpring初期設定・環境構築の関門となってきます。

xml(eXtensible Markup Language)は、データ構造を自由に定義でき、プログラム間でのデータ処理を可能とします。そのため、AjaxやOfficeアプリケーションをはじめとした、様々な技術で瞬く間に利用されるようになりました。

しかしxmlの活用があまりに多くなると、ファイルへの定義設定が複雑になり、いわゆるxml地獄という、大きな工数や苦労を開発者にもたらしました。

一定以上の機能を備えるサービスを開発するためには、xmlファイルの書き方が複雑になり、専門知識も必要となります。大規模案件を扱うSIerではxml職人等も存在していたと聞きます。Spring bootでは、この設定ファイル作成・記述という複雑な作業をできる限り排除してくれています。

統合開発環境であるSTS(Spring Tool Suite)を利用して、Spring bootのプロジェクトを選択、必要なライブラリ選んでスタートするだけです。pom.xmlを確認すれば、選択したライブラリの情報が勝手に書かれているはずです。

プロジェクトの初期設定が自動で行われ、また設定変更も、プロパティの値を変えるだけで済むようになりました。

Springを始めるならSpring bootから


これまで見てきたように、Spring bootは、Springの拡張性や便利さを簡単に利用しやすくしたパッケージ・仕組みです。コーヒーで例えてみると、コーヒー豆を自分で選び、豆を挽いて飲むのがSpring、スターバックスでコーヒーを注文してミルクや砂糖の量だけ調整するのがSpring bootです。

JavaをProgateやドットインストールで勉強してみたので、次はアプリケーションを作成してみたいという方はSpring bootから始めてみるのをおすすめします。参考書やWeb記事の通りに従って始めても躓くことなく、すぐに開発したいアプリケーションのコーディングに取り組むことができるはずです。

この記事をシェア