第2章 Spring Bootとは
2.1 Spring Bootの概要
Javaの世界には、Java EEなどサーバー開発のための技術が揃っています。それなのに、なぜSpring Bootなのか。Spring Bootはどういうもので、なぜいいのか。まずはそうした基本的な事柄について知っておきましょう。
2.1.1 Spring Bootとは
「Spring Framework」は、Javaの世界では老舗ともいえるフレームワークです。このSpring Frameworkは、多数のフレームワークから構成されています。中でも、「Webアプリケーション開発のためのフレームワーク」として多くのJavaプログラマから支持されているのが、「Spring MVC/Roo」、そして本書で解説する「Spring Boot」といったライブラリ類です。
「Spring Framework」は2002年に登場したフレームワークで、当初は「DI」(Dependency Injection、依存性注入)と呼ばれる機能を実現するための小さなフレームワークでした。それが、このDIをベースとするさまざまな機能を実装していき、今では「統合フレームワーク」とでも呼べるような大規模なものに成長しています。
このSpring Frameworkの本体をベースに、さまざまな用途に向けて拡張されたフレームワーク群が用意されています。「Spring MVC」「Spring Roo」「Spring Boot」といったものも、こうしたフレームワーク群を構成しています。
2.1.2 Spring MVC から Spring Rooへ
「Spring MVC」は、WebアプリケーションにModel-View-Controllerアーキテクチャーによる開発を導入するためのフレームワークです。Webアプリケーション全体の制御、処理から切り離された画面構成の設計、データベースの種類等に依存しない抽象化されたデータベースアクセスなど、多くの機能を持っています。
このSpring MVCを補完するライブラリとして登場したのが「Spring Roo」です。各種コードの自動生成機能ライブラリであり、Ruby言語で書かれたRailsのような「簡単なコマンドを実行するだけで、アプリケーションの枠組みが自動的にできあがる」という超高速開発を可能にしました。
2.1.3 Spring Bootの登場
Spring MVCは、Spring Frameworkの上に構築されたもので、これを利用するためには多くのSpring系のライブラリを正確に組み合わせて環境を構築しなければいけません。Spring Rooによりある程度自動化できたとはいえ、手早くWebアプリケーション環境を作り上げるのはとても大変でした。
そこで、いわば「Spring MVCの完成形」として登場したのが、「Spring Boot」です。これは、Spring MVCや、その他のSpring Frameworkのライブラリ類を組み合わせて、最良のWebアプリケーション環境をすばやく構築するためのスターターキット的なライブラリです。
Spring Bootでは、ビルドツール(アプリケーションを構成してビルドする専用ツール)の設定ファイルに記述し、専用のコマンドを実行するだけで、最適化されたWebアプリケーション環境を構築します。Spring MVCでも同様のことは行なえますが、そのためには複雑な設定を記述しなければいけませんでした。Spring Bootでは、専用のスターターライブラリを設定ファイルに記述するだけで、一通りのライブラリを組み込み、環境を構築できます。
また、データベースアクセスなど、複雑になりがちな部分の機能をほとんど自動的に生成することで、必要最小限の手間でアプリケーション開発が行なえます。JPA(Java Persistence API)などで必要となる複雑なデータベース設定なども、必要最小限の記述で使えるようになりますし、何よりデータベースアクセスのための処理をほとんど書くことなく、アクセスできるようになってしまいます。
Spring MVCがWeb開発の土台となるものであり、それを活用するツールとしてSpring Rooが考案され、そしてそれら全体を一つにまとめてシンプルに使えるように統合したのがSpring Bootだ、と考えればよいでしょう。
今でももちろん、Spring MVCを単体で組み込み、Webアプリケーション開発を行うことはできますが、Spring Bootを使えばまったく同じものを圧倒的な速さで組み立てることができます。Webアプリケーション開発に関する限り、Spring Bootこそが「Spring Frameworkの考えた答え」だといってよいでしょう。