Spring Bootとは
既に数年エンジニアとしての経験がある方なら、「Spring Boot」という言葉を聞いたことがある方も多いのではないでしょうか。Spring Bootとは、Java開発環境で使用できる、オープンソースのフレームワークのことを指します。Java向けのフレームワークとして生まれましたが、現在では同じJVM言語であるKotlinを用いたアプリケーションでも多く利用されています。
本記事では、参画中のプロジェクトでJava・Kotlin・Spring Bootを使うことになったサーバサイドエンジニア向けに、Spring Bootに関する入門知識をご紹介します。「Spring Frameworkとの違いは何か?」「Spring Bootを使うメリットは何か?」「具体的にSpring Bootを使ってアプリを起動する手順は?」といった疑問についてお答えしていくので、参考にしてみてください。
Spring BootとSpring Frameworkの違い
Spring Bootとよく似た文脈で聞く言葉に「Spring Framework」があります。Spring BootとSpring FrameworkはどちらもWebアプリケーション開発のフレームワークの名称です。これら2つはどのように違うのでしょうか。違いを簡潔に言うと、「Spring BootはSpring Frameworkの一部であり、より簡単にWebアプリケーションを作れるようにしたものである」となります。
両者の歴史的背景も含め、以下で更に具体的に説明します。
Spring Framework
Spring Frameworkは、2003年に初版がリリースされました。当時の主要なJavaプラットフォームであるJakarta EEの複雑さを解消することを目的として開発され、今日まで多くのプロジェクトに導入されてきました。導入が多くなるにつれ機能アップデートも行われました。「Spring ○○」と言う形での新規機能追加が頻繁に行われた結果、Spring Frameworkは現在、多くの機能を持つフレームワーク群となっています。
以下にSpring Frameworkが持つ機能の一部を記載します。
・Spring Security 認証・アクセス制御のためのフレームワーク。
・Spring Batch バッチ処理開発のためのフレームワーク。
・Spring Data データアクセス・永続化処理の為のフレームワーク。リレーショナルデータベースだけでなく、NoSQLにも対応。
・Spring Session セッション管理のためのフレームワーク
・Spring Cloud 分散システム開発のためのフレームワーク
・Spring MVC Model・View・Controllerパターンを提供するためのフレームワーク
Spring Frameworkはこれ以外にも多数の機能を提供しています。ただ、多機能すぎるが故に下記2点の問題がありました。
・どの機能を選択するのがベストプラクティスなのかが分かりづらい。 ・プロジェクトの初期設定にXMLの記述が必要であり、導入に手間がかかる。
【参考】:Spring Framework
Spring Boot
Spring Frameworkの「多機能かつ重厚であり、導入の手間が大きい」という問題を解決してくれるのがSpring Bootです。Spring Bootでは、Spring Frameworkが提供する機能が汎用性のある形でパッケージ化されています。パッケージの導入はGradleやMavenといったビルドツールを用いて簡単に行うことができ、「まず動くWebアプリを作る」ことがより簡単になっています。
【参考】:Spring Boot
SpringBootのメリット
ここまでは、Spring BootとSpring Frameworkの違いを解説してきました。では、Spring Bootを利用することで我々エンジニアが得られるメリットにはどんなものがあるのでしょうか。
Webコンテナを内包しており、jarファイルのみで起動可能
Spring Bootが導入されるより以前は、開発中のJavaアプリケーションの動作確認のために下記の2点が必要でした。
・Javaプロジェクトを実行する為のjarファイルの生成 ・サーブレットの実行環境であるWebコンテナのセットアップ
Spring Bootでもjarファイルの生成は必須ですが、Webコンテナも内包された状態で生成されます。jarを実行するだけでアプリケーションが起動するようになり、楽に動作確認ができるようになりました。
アノテーションが豊富で、設定ファイル量が少なく済む
Spring Frameworkを用いたアプリケーション開発においては、設定ファイルとして複数のxmlファイルの記述・管理が必要でした。これは後述する依存性の注入を行いたい場合や、データベースとの接続を行いたい場合に更新する必要があり、開発者が本来行いたい業務ロジックの実装の時間を奪ってしまうものでした。
これに対し、Spring Bootでは各種設定を行うための外部ファイルの記述量を減らすことに成功しています。設定ファイルの代わりに、ソースコード内にアノテーションとして記述することで各種設定が行えるようになりました。これにより開発者が業務ロジックの実装により集中できるようになっています。
Java開発のスタンダードであり、学習コストが低い
以下は統合開発環境「IntelliJ IDEA」を開発したJetBrains社がJava開発者にアンケートを行い、よく用いられているツールやフレームワークなどを調査したものです。Javaアプリケーション開発にて用いられるフレームワークは、Spring Bootがランキング1位となっています。
【参考】:Java プログラミング インフォグラフィック:2021年開発者エコシステム
インターネット検索でも多くのノウハウがヒットするため、初学者が学習していくコストや、エンジニアの採用にかかるコストも他のフレームワークに比べて低いです。
Spring Bootを用いたアプリケーション動作確認まで
Spring Bootは「軽量であり、環境構築の手間が少ない」と述べてきました。ここでは、具体的にSpringBootでプロジェクトを作成し、IntelliJで動作確認するまでの具体的な手順を記載します。
Spring Initilizrを用いてプロジェクト生成
Spring Bootには、プロジェクトの雛形を生成してくれるWebサイトが提供されています。下記のサイトを開き、言語や利用するライブラリを作成します。
【参考】:Spring Initializr
今回は例として、下記を設定し、デモ用プロジェクトをダウンロードして下さい。ダウンロードしたzipファイルは解凍しておきましょう。
Project…Gradle Project Language…Java Spring Boot…2.6.5 Packeging…Jar Java…17 Dependencies…Lombok、Spring Web、Thymeleaf、H2
プロジェクトをIDEで開き、JDKを設定
作成したプロジェクトをIntelliJで開いてください。この時点ではIntelliJにJavaのバージョンが設定されていないため、下記の手順を実施してください。
・下記サイトから自分のPCの環境にあったJavaをダウンロード、インストールする
・IntelliJの「File」>「Project Structure」>「Project SDK」にインストールしたバージョンのJavaを設定
実行
ここまで来れば、アプリを起動させることができます。IDEからの起動方法には下記の2種類あります。
・IntelliJの「Gradle」ウィンドウからTasks > application > bootRunを押下し、起動 ・IntelliJの「Terminal」ウィンドウで「gradlew bootRun」コマンドを実行し、起動
ログに下記が表示されたら問題なく起動できています。
Started DemodemoApplication in *** seconds (JVM running for ***)
ここでは起動確認のみとしましたが、実際の現場ではMVCフレームワークの考え方に従い、Controller・Model・Viewを作成して開発を進めていくことになります。
Spring Bootを用いて、Javaアプリケーションを開発しよう
本記事では、Spring Bootがそもそもどういったものなのかについて解説しました。Spring Bootは従来のSpring Frameworkをより使いやすく軽量にしたものであり、「とりあえず動くアプリを作る」までの手間が限りなく軽減されています。また、JetBrains社の調査にもあった通り、Spring BootはJava開発のスタンダードとなっています。ですので案件の数も多く、今のうちに身につけておいて損はありません。
ITエンジニアとしてのキャリアを広げるためにも、Spring Bootを用いた開発に慣れておきましょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから