JavaのSpringとは
Spring とは、Javaのプラットフォーム向けアプリケーションフレームワークを指します。2004年に製品版が登場してから20年におよぶ実績があります。オープンソースのソフトウェアであり、「Springフレームワーク」あるいは「Spring」と呼ばれています。
Java SEならびにJava EE(Jakarta EE)でフレームワーク機能が提供されます。
Springは複数の機能をいくつかのフレームワークとして提供しており、フレームワークの集合体ととらえることができます。
【参考】:Spring
Springの特徴
Springは、開発の生産性向上に重点を置いています。世界中の開発者が協力し、製品をリリースしています。マイクロソフトやグーグル、アマゾン、アリババなどの協力者が参加し、メンテナンスされていると述べています。
同様に柔軟な拡張機能を提供するために、サードパーティライブラリが豊富に揃えられています。そのため多様なアプリケーション開発に対応する特徴があります。さらに起動や停止が高速に行われ、アプリケーション開発や実行を高速に行うことができます。
【参考】:Why Spring?
Spring Bootとは
Spring Bootとは、Springフレームワークに含まれるフレームワークの1つです。Springは、いくつかの機能をフレームワークの集合体として提供しています。そのため、利用する上で環境設定が複雑で、さらに簡単に実装するためのフレームワークが必要となりました。
Spring Bootでは、使いたい機能を選択してプロジェクトを作成するだけであり、簡単に利用することができます。Springとの違いは、Springが複数のフレームワークで構成されているのに対して、Spring Bootは簡単にSpringを使用するためのフレームワークの1つである点に違いがあります。
【参考】:Spring Boot
Springでできること
SpringはウェブアプリケーションのJavaフレームワークで、Javaのアプリケーション開発を効率的に行うことができます。ここでは、実際にアプリケーション実装でできることと特徴を整理し、紹介していきます。
マイクロサービスの構築と実行
マイクロサービスは、アプリケーションのコードを小さい単位で作成し、サービスとして利用することです。利用者はアプリケーションを個々のサービスを組み合わせて構築し、利用します。マイクロサービスのメリットは、メンテナンスが容易で障害に強く、ビジネスの変化への追従がしやすいことです。
Springでは、Spring Bootを活用してマイクロサービスを簡単に構築し、本番環境で利用することができます。
【参考】:Spring Microservices 【参考】:Spring Boot
リアクティブ・プログラミング
リアクティブ・プログラミングは、フロー制御によるノンブロッキングの非同期アプリケーション開発手法です。低レイテンシ、高スループットのワークロードに活用します。送信したメッセージの状況に応じた処理を、任意の場所で効率的に実行することができます。
SpringはProject Reactorと連携して、システムの応答性、回復力、弾力性、メッセージ駆動性を高めたエンタープライズ向けシステム構築が可能です。
【参考】:Spring Reactive 【参考】:Project Reactor
クラウドネイティブコード
アプリケーションは、システムの分散に応じたサービスを提供する必要があります。開発コードは、クラウドネイティブ化によって、外部設定やステートレス、ロギング、バッキングサービスなどへの対応が求められます。
Springでは、Spring Cloudプロジェクトとしてクラウド実行に必要なサービスをまとめて提供します。
【参考】:Spring Cloud
ウェブアプリケーションの構築
ウェブアプリケーションは、ウェブプログラミングによるアプリケーション開発の高速化と構築の迅速化が求められます。
Springでは、コードの定型化や設定の簡素化などにより、サーバーサイドのHTMLベース・ウェブアプリケーション、REST API、双方向のイベント処理など、必要とされる多くの機能が盛り込まれています。
サーバーレス・アプリケーション
サーバーレス・アプリケーションは、常時サーバを確保することなく必要時に起動されるアプリケーションです。具体的には、トリガーによるイベント駆動型のコード実行が可能でステートレス、必要に応じてプラットフォーム側が必要なサービスの開始、停止、スケーリングを行うものです。
クラウドサービスでは、Function as a Service(FaaS)などと呼びます。
Springは、サーバーレスアプリケーションを構成する一連の機能を提供します。具体的には、Spring Dataでデータにアクセスしたり、Spring Integrationでエンタープライズ統合パターンを使ったり、Spring FrameworkとProject Reactorで最新のリアクティブプログラミングを使ったりすることができます。
【参考】:Spring Serverless 【参考】:Spring Data 【参考】:Spring Integration 【参考】:Spring Framework 【参考】:Project Reactor
イベント駆動型
イベント駆動型(イベントドリブン)は、イベントを中心にアプリケーションを開発する手法です。何かが操作されたときや、何かのメッセージを受信したときなどのイベントによって、コンピューターの処理とフローが決まります。
Springでは、イベントを処理することでアプリケーションの処理と同期したデータフローやストリーミングデータの処理を行います。イベントの生成や処理などを抽象化し、メッセージのプラットフォーム接続やルーティング、変換・処理などのインテグレーションに対応します。
【参考】:Spring Event Driven
バッチ処理
バッチ処理は、一定の量や期間のデータをまとめて演算したり格納したりする処理です。人手を介さずに一括処理できます。
Springでは、Spring BatchによってJVM上で堅牢なバッチ処理を行います。多くの処理パターンにあらかじめ対応しています。同様に基幹業務で必要とされる、ミッションクリティカルな処理アプリケーションの構築も可能です。
【参考】:Spring Batch
Springを始めるには
Springを始めるには、「Getting Started Guides」に目を通すことをおすすめします。残念ながらドキュメントの多くは英語です。それぞれのフレームワーク毎に詳細なドキュメントが準備されているので、理解するにはウェブアプリケーション開発の経験があると良いでしょう。
素早く触ってみるには、Spring Bootを用いた「Spring Quickstart Guide」がおすすめです。利用するには、統合開発環境(IDE)とJDKを環境構築しておきます。
【参考】:Spring: Getting Started Guides 【参考】:Spring: Spring Quickstart Guide
Spring Bootのプロジェクト
Spring Bootは、プロジェクトを作成してコード開発を進めていきます。プロジェクトを作成するには、Springの用語をあらかじめ理解しておく必要があります。ここでは、「DI」と「AOP」について解説していきます。
・DI DIとは、Dependency Injectionの略で「依存性の注入」と言います。メインのクラスに、依存関係のあるクラスを入れ込む(注入する)流れです。DIはコンテナとして管理されており、管理されるコンポーネントをBeanと呼びます。
・AOP AOPとは、Aspect Oriented Programmingの略で「アスペクト指向プログラミング」と言います。ログ出力などの、共通する処理を横断的に抜き出して管理することができます。
【参考】:Spring: Guides
Spring Bootを使用する
Spring Bootでは、最初にひな形をSpring Initializerで作成します。Spring Initializerの画面が表示されたら、プロジェクトの基本情報を入力し、「GENERATE」ボタンを押します。ひな形となるZipファイルをダウンロードしたら、編集してビルドに用います。
「Spring Quickstart Guide」では、Spring Initializerを用いてSpring Bootのプロジェクトを作成し、簡単にウェブアプリケーションとして”Hello World!”を表示させるまでの手順が記載されています。
【参考】:Spring Boot 【参考】:Spring Initializer 【参考】:Spring: Spring Quickstart Guide
Springをさらに学ぶには
Springをさらに学ぶには、公式サイトのドキュメントを活用するのが良いでしょう。「Getting Started Guides」がそれぞれ15分~20分、「Topical Guides」が60分程度、「Tutorials」で2時間~3時間となります。
「Getting Started Guides」は短めですが、全部で68種類登録されていますので相当な分量です。
入門情報やサンプルコードなど、Pleiadesのように日本語で情報掲載しているサイトもありますので参考にするのが良いでしょう。詳しくは、以下のリンク先を確認してください。
【参考】:Spring: Guides 【参考】:Spring ドキュメント
Springは実績あるJavaフレームワーク
Springは、すでに製品投入後20年余り経過している人気のJavaフレームワークです。Javaは汎用プログラミング言語でも人気があり、効率的な開発にはフレームワークの利用が欠かせません。
まずはSpring Bootを用いて理解を深め、最終的により多くのフレームワークをSpringで利用することをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから