第2章 Spring Bootとは

2.2 Spring Boot を選ぶ理由

現在ではJavaの世界でも、ようやく効率的で高速開発のできるフレームワークが利用できるような環境が整ってきました。その結果、「どれを選べばいいかわからない」という、従来とは逆の贅沢な悩みを招くこととなりました。
数あるJavaフレームワークの中で「Spring Boot」を選ぶ理由は何か?その特徴と利点について簡単に整理しましょう。

2.2.1 Spring MVC + Spring Bootがベスト

ここでは、便宜上、「Spring Boot」と呼びますが、正確には「Spring MVCをベースにしたSpring Bootによる開発」といってよいでしょう。開発の際には、Spring Bootだけでなく、ベースとなっているSpring MVCはもちろん、その他のSpring Frameworkの各種ライブラリも背後で利用されます。これらは高度に結び付いており、切り離して考えることはできません。

Spring Frameworkのライブラリ群の最大の特徴はここにあります。すなわち、Spring Frameworkのコアとなる部分の上に、開発に必要なあらゆる機能がライブラリ化されており、Spring Bootはそれら全ての恩恵を受けている、という点です。

2.2.2 DI をベースとする一貫した実装

これらはすべてSpring製ですから、基本的な設計は共通しており、さまざまなライブラリを寄せ集めるのに比べれば、はるかにすっきりとわかりやすく統合されています。
Springのライブラリ群は、Spring Frameworkの中心となっている「DI」「AOP」(Aspect Oriented Programming、アスペクト指向プログラミング)と呼ばれる機能をベースにして設計されています。数多くのライブラリがあっても、それらの基本的な設計思想は一貫しており、新しいライブラリを追加するたびにその設計を一から覚え直す、ということもありません。

2.2.3 幅広い利用範囲

Spring Frameworkは、Javaのアプリケーション開発全般で利用することを考えられています。この種のフレームワークは、例えば「Webアプリケーションを作るため」というように、特定の用途に絞って作られていることが多いものですが、Spring FrameworkはあらゆるJavaの開発に利用できるように考えられています。
もちろん、本書で取り上げる「Spring Boot」は、基本的にWebアプリケーション開発のためのものなのですが、「Spring Framework自体は、Web開発専用ではない」ということは頭に入れておきましょう。つまり、ここで覚える機能のいくつかは、そのままWeb以外の分野でも利用できるのです。

2.2.4 Bootによる生成機能

Spring FrameworkがWebアプリケーション開発の分野で次第に浸透しつつあるのは、「Spring Boot」の力によるものです。
Spring Bootは、非常にシンプルにSpring MVCをベースとしたWebアプリケーションを構築することができます。ごく簡単なコマンドでアプリケーションの基本的な骨格を作り、非常に短いコードを書くだけでWebアプリケーションの汎用的な処理を実装できます。特にデータベース周りのコーディングのシンプルさは特筆に値するでしょう。

2.2.5 強力な専用開発ツール「Spring Tool Suite」

一般に、フレームワークを開発するベンダーは、フレームワークのライブラリファイルを単体で提供するのが普通です。「本体は提供するから、後はそれぞれで使ってくれ」というスタンスですね。ところが、Spring Frameworkの開発元は、フレームワーク本体だけでなく、それを利用して開発を行うための専用開発ツールまで作って提供しています。
これは「Spring Tool Suite」(STS)と呼ばれ、オープンソースの開発環境である「Eclipse」をベースに、Spring Framework利用のための各種プラグインを追加して作成されています。単体パッケージのほか、Eclipseにインストールするプラグインのみのパッケージも用意されています。

(プラグインなどをインストールしていない)標準のEclipseそのままでも、もちろんSpring Frameworkは利用できますが、そのためには手作業でライブラリファイルを組み込み、必要なファイルなどを手書きしていかなければいけません。専用ツールを利用することで、必要な処理が自動化され、コードの作成のみに注力することができます。ここまで環境整備を行なっているフレームワークは、Spring Framework以外にはまず見られないでしょう。

NEXT>> 2.3 Spring Frameworkの概要