いまやWebアプリケーションの開発にはフレームワークが不可欠であり、その選定が重要になっています。中でも、Javaでの開発の場合、数多くの様々なフレームワークが存在し複雑化しているため、どれを選ぶかが難しい状況といえるでしょう。
そこで本記事では、Webアプリケーション開発のフレームワークとして、近年人気上昇中のSpring Bootについて解説します。
1. Spring Bootとは
Spring Bootは、Javaのフレームワークとして歴史と実績のあるSpring Frameworkをベースとしており、Webアプリケーションを効率よく高速開発するためのフレームワークです。
1.1 まずはSpring Frameworkを知ろう
Spring Bootについて説明する前に、最初に、Spring Bootのベースであり、強い関連性を持つSpring Frameworkについて簡単に解説します。
◆ Spring Framework 公式サイト:
https://spring.io/
1.1.1 サーバーサイドJavaとフレームワーク
もともと、Javaのサーバー開発は、様々な機能を実装するための技術が搭載されたJava EE(Java Platform, Enterprise Edition)を利用して行われてきました。
Java EEは大規模システム開発に対応できる技術として設計されており世に広く浸透しましたが、その複雑な仕様はシンプルな小規模システム開発には過剰だと言われるようにもなりました。
そこで、効率よく簡単なシステム構築の実現を目指し、Struts、Grail、Play Flameworkなどの新興フレームワークが次々と登場。Spring Frameworkもそのうちのひとつです。
1.1.2 Spring Frameworkの特色
Spring Frameworkは、当初、DI(Dependency Injection:依存性の注入)*という、機能を実現するための小さなフレームワークでしたが、その後、様々な機能が追加され、現在では、各機能ごとのフレームワークが数多く独立して構成されたフレームワーク群を築いています。
Spring Frameworkという言葉は、このフレームワーク全体、またはその中核部分を指すようになりました。
◆ Spring Frameworkの主なフレームワーク群(公式サイト)
https://spring.io/projects/spring-framework
* DI(Dependency Injection) 依存性の注入
"DI = 依存性の注入" と訳されても何のことかわかりづらいかもしれません。
DIとは、例えば、オブジェクトAとオブジェクトBの間の依存関係を、オブジェクト内のコードに記述せず、実行時に外部から引数などで呼び出す手法です。
これにより、オブジェクトAとオブジェクトBの依存関係が固定的になったり隠れることもなく、外部から、自由に指定したり変更したりできるようになります。
このDIは、Spring Frameworkの大きな特徴であり、Spring BootにもDIの考え方がベースに含まれています。
1.2 Spring Bootが生まれた背景
Spring BootはSpring Frameworkの中の、Webアプリケーション開発を迅速に構築するためのフレームワークと述べましたが、どのような経緯で登場したのでしょうか。
1.2.1 Spring MVCをベースとし最小限の作業での構築を可能に
Spring Framework群のひとつである、Spring MVCとは、MVC(Model・View・Controller)アーキテクチャーに基づいたWebアプリケーションを開発するためのフレームワークです。
画面構成の設計や、依存性のないデータベースアクセスなどWebアプリケーション開発のための基本的な機能を備えていますが、その他のSpring系ライブラリと上手く組み合わせて環境構築を行う際、コード作成などの必要手順が多く、手間取る面がありました。
そのような状況下で、もっと使いやすくするために、Spring Bootでは、ビルドツールの設定ファイルを記述し、専用コマンドを実行するだけで、自動的にSpringMVCやその他のSpring系ライブラリを正確に組み合わせることを可能にしました。
これにより、最良のWebアプリケーション環境を手早く作成できるようになりました。
2. Spring Bootの特徴
2.1 面倒なXML設定ファイルの記述をしなくてもいい
XMLファイルへの記述による設定作業は、入力が面倒だったりエラーの特定が難航しがちでしたが、Spring Bootでは、Auto-configurationと呼ばれる自動設定機能により、各種設定を必要最低限の記述のみで自動設定できます。
自動設定で不足する部分はJavaConfigを追加したり、複雑なアプリケーション構成などを行う際などに必要であれば、xml設定ファイルを使って設定することも可能です。
2.2 サーバー内蔵方式により、サーバーへのデプロイが不要
一般的なWebアプリケーション開発では、アプリケーションとは別にサーバーを準備し、開発したアプリを追加して動かすという方法が取られてきました。つまり、Webアプリケーションの完成後、WARファイルを作成し、Apache Tomcatなどのサーバーに追加するやり方です。
これに対しSpring Bootでは、Javaサーバーが内蔵されており、直接サーバーを起動して実行します。
現在のWebアプリケーション開発においては、AWSやGCPをはじめとするクラウドサービスの利用が盛んですが、これらでは「サーバー内でプログラムを実行」させます。
このようなクラウドサービスを利用する上でも、「サーバーを内蔵して、実行するだけでアプリケーション公開が可能」というSpring Bootの方式はぴったりであり、まさに現在のクラウド時代にも適していると言えるでしょう。
2.3 アノテーション記述によるコーディング量の削減
Javaのアノテーション(annotation:注釈)とは、@Xxxの形式で、コンパイラや実行環境に補足状況を伝えるために使います。
アノテーションをプログラムに記述することで、プログラムの動作変更などを行えます。
Spring Bootでは、このアノテーションの記述が可能であり、余計なコードを書かなくても、処理の実装ができます。
特にデータベース関連処理などは、クラスを定義するだけで実現できるため、コーディング量が減り、工数削減につながります。
3. Spring Bootを選ぶ理由
前述したSpring Bootの特徴とも多少かぶりますが、数あるJavaのフレームワークからSpring Bootを選ぶ理由を解説します。
3.1 Spring FrameworkのDIをベースとした一貫した実装
Spring Bootは、Spring Frameworkが土台であるため、様々なライブラリをいろいろ集めるよりもすっきりとわかりやすくなっています。
DIについては、前章の"1.1.2 Spring Frameworkの特色" でも説明していますが、DIがベースにある下記のようなメリットがあります。
- クラスの仕様変更などが発生しても、既存のソースコードは影響を受けることがない
- 単体テストに際し、テスト用のクラスを作成できる
このような基本的な思想が一貫していることにより、新しいライブラリが追加されても、その設計を最初から覚える必要などがないのです。
3.2 Spring Boot開発のための強力な味方!「Spring Tool Suite」
Spring Frameworkの開発元は、フレームワークのみならず、専用の開発ツールSTS(Spring Tool Suite)を提供しています。
STSは、Javaの統合開発環境といえばこれというくらい有名なEclipseをベースに、Spring Frameworkの開発に特化した開発環境です。
- 各種プラグインが追加されている
- 必要な処理の多くが自動化
このように、環境整備がしっかりしているSTSを利用することで、コードの作成のみに集中して開発を進めることができます。
また、STSでは、単体パッケージ以外にも、Eclipse、Visual Studio Code、Theiaなどに対応するパッケージも用意されています。
◆ STS(公式サイト):https://spring.io/tools
◆ STS最新バージョン:4.4.2.(2019.11.23現在)
3.3 Spring Frameworkの各機能を効率良く利用できる
Spring Bootによる開発は、すなわち、Spring MVCをはじめとする他のSpring Frameworkのライブラリを背後で利用することであり、これらとは切り離すことのできない強い関連性を持っています。
言い換えると、Spring Bootは、Spring Framework上に存在する、開発に必要なあらゆる機能がライブラリ化されたものすべての恩恵を受けることができるということです。
そして、この巨大なフレームワーク群の煩雑さを解消し、自動設定や簡単な必要最小限のコードで実行可能なアプリケーションを開発できる点は、Spring Bootの最大の魅力とも言えるでしょう。
4. Spring Bootを使ったWebアプリケーション開発の概要
Spring BootでのWebアプリケーション開発というのは、これさえあればWebアプリケーション開発が完成するということではありません。
Spring BootはSpring MVCの要素を強く内包していますが、主に、MVCのV(View 画面表示)と、C(Controller 制御部分)の機能、その"仕組み"を提供しています。
実際に、C(Controller)部分は、アノテーション記述による書き方が主流ですが、 例えばV(View)など画面表示の設計に際しては、Thymeleafというテンプレートエンジンを用いるケースなどが多く、これらを活用する知識も必要となります。
M(Model データ管理)に関しては、データベースアクセスのためのSpring Data系のフレームワークをデータベースの種類によって使い分けます。
いずれも、複雑な設定処理を記述する必要もなく、簡単なコード記述で実装できるようになっています。
Spring Bootを利用することで、主にSpring Frameworkのフレームワークを組み合わせながら、簡単に素早くWebアプリケーション開発が行えるのです。
5. まとめ
上記で解説してきたことからも、Spring Bootは、JavaでのWebアプリケーション開発でのファーストチョイスになるフレームワークであると言っても過言ではないでしょう。
Spring Bootとの関連性が強いSpring Framework。こちらも2002年の登場以来、IT業界の技術発展に対応しながら進化し続けています。
Webアプリケーション開発は、短いスパンで素早く行うスタイルが主流である今、Spring Bootはますます注目を集めるでしょう。
そして、今後もより使いやすく便利な機能追加が期待されています。
これを機に、Spring Bootに触れ、技術を身につけてみてはいかがでしょうか。