Trace Id is missing
メイン コンテンツにスキップ
オフィスでノート PC の画面で作業している人

Java Spring Boot とは

Spring Boot の概要をご確認ください。Web アプリとマイクロサービスを開発するためによく使用される Java ベースのツールです。

ノート PC の画面を見て、マウスで外付けキーボードを使用している人

Spring Boot とは

Java Spring Boot は、Java ベースのフレームワークを使ってマイクロサービスや Web アプリを簡単に作成できるオープンソースのツールです。Spring Boot を定義するには、アプリ開発で最も人気があり、広く使われている開発言語とコンピューティング プラットフォームの 1 つである Java から話を始める必要があります。世界中の開発者がコーディングの旅を Java の学習から始めています。柔軟でユーザー フレンドリな Java は、ソーシャル メディア、Web、ゲーム アプリからネットワークやエンタープライズ アプリケーションまで、さまざまなアプリで開発者に愛用されています。

Java と Spring フレームワーク

Java は使いやすく、他の言語よりも習得しやすいかもしれませんが、Java アプリを構築、デバッグ、展開するための複雑さのレベルは、目もくらむような高さまでエスカレートしています。これは、音楽ストリーミングやモバイル現金決済アプリなど、よく使われる最新技術の Web アプリやモバイル アプリを開発する際に、現代の開発者が直面する変数の数が指数関数的に増えているためです。基本的な基幹業務アプリを作成する開発者は現在、複数のライブラリ、プラグイン、エラー ログ記録と処理ライブラリ、Web サービスとの統合、C#、Java、HTML などの複数の言語に対応する必要があります。当然のことながら、Java アプリ開発を効率化し、開発者の時間とコストを節約するツールに対する需要は尽きることがありません。

アプリケーション フレームワークとは、開発者が必要に応じて使用したり、自分のコードに追加したりすることができる、事前作成済みの大量のコードです。これらのフレームワークにより、モバイルや Web アプリの開発であろうと、デスクトップや API での作業であろうと、ほぼあらゆるニーズに対して開発者の負担が軽減されます。フレームワークにより、再利用可能なコードと、ソフトウェア開発プロジェクトのさまざまな要素をまとめるのに役立つツールがまとめて提供されることで、アプリの作成をより速く、より簡単に、より安全に行うことができます。

ここで Spring の出番です。Spring は、Java でアプリを作成するための、効率化され、モジュール型のアプローチを提供するオープンソースのプロジェクトです。Spring  プロジェクト  ファミリは、初期の Java 開発の複雑さに対応するものとして 2003 年に始まり、Java アプリの開発を実現しています。Spring という名前は通常、アプリケーション フレームワーク自体、またはプロジェクトやモジュールのグループ全体を指します。Java Spring Boot は、Spring フレームワークの拡張として構築された特定のモジュールの 1 つです。

Spring フレームワーク、Spring Boot、Java がどのように連携しているかという背景を踏まえて、Spring Boot の定義を説明します。これは、Java フレームワークの Spring の中で Web アプリやマイクロサービス開発を効率化し、スピードアップするツールです。

言語やプラットフォーム (またはその両方) が Java であるため、"Java Spring Boot"、"Java Spring フレームワーク"、"Spring Boot フレームワーク"と呼ばれることもあります。しかし、Java には他にも Play や Hibernate のようなサードパーティ製のフレームワークがあるため、"Spring "や "Spring Boot" と言った方が正確です。

Java の基礎に関する概要についての議論は、 Java とはの記事をご覧ください。

Spring と Spring Boot の違い

前述したように、Spring はオープンソースの Java ベースのアプリ フレームワークであり、その傘下には多くの小規模なプロジェクトがあります。他の有名な  Spring プロジェクト には、Spring Data、Spring Cloud、Spring Security などがあります。Spring Boot と Spring の違いを理解するには、コア機能に違いがあったとしても、すべて Spring ファミリであることを認識することが重要です。

Spring と Spring Boot の違いを完全に理解するには、まずいくつかの重要な用語を定義する必要があります。

ノート PC を見ている人。
タブレットを見ている女性。

マイクロサービスとは

マイクロサービス は、ソフトウェア開発アーキテクチャのアプローチのひとつです。マイクロサービスの "マイクロ" とは、コードが小さく管理しやすい部分、つまりコンポーネントで提供されることを指し、それぞれの "サービス" またはコア機能は、他のサービスから独立して作成され、デプロイされます。独立した各コンポーネントは連携し、コントラクトと呼ばれる所定の API ドキュメントを通じて通信します。このようなマイクロサービスの小規模かつ相対的な分離には多くの利点があります。たとえば、この種類のアーキテクチャは分散型で疎結合されているため、1 つのコンポーネントに障害が発生してもアプリ全体が壊れることはありません。その他の利点としては、生産性の向上、メンテナンスの容易さ、ビジネスとの整合性の向上、フォールト トレランスの向上などが挙げられます。

依存性の注入とは

依存性の注入 (DI) は、制御の反転 (IoC) を実現するために使われる設計手法です。Java などのオブジェクト指向プログラミングでは、他のオブジェクトに依存するオブジェクトは依存関係と呼ばれます。通常、受け手または依存するオブジェクトはクライアントと呼ばれ、クライアントが依存するオブジェクトはサービスと呼ばれます。そのため、依存性の注入では、サービスがクライアントに渡されるか、インジェクターと呼ばれるコードを使用して依存性が"注入"されます。DI では、クライアントがどのサービスを使用するかを指定する必要がありません。インジェクターがクライアントに代わってその作業を行います。

ノート PC とモニターを見ている人。
VR ヘッドセットを装着している女性

"設定より規約" とは

"設定より規約" ("規約によるコーディング" と呼ばれることもあります) は、アプリケーション フレームワークで使われる概念で、開発者が行わなければならない決定事項の数を減らすために使われます。冗長なコードを作成しないようにするために、"同じことを繰り返さない" という原則に従います。"規約によるコーディング" は、開発者が作成中のアプリの型にはまった側面についてのみコードを書けるようにしながらも、柔軟性が維持されるようになっています。アプリの望ましい動作が、確立された規約と一致する場合、設定ファイルを作成しなくても、アプリは既定で実行されます。開発者が明示的に設定ファイルを作成する必要があるのは、望ましい動作が "規約" から外れた場合だけです。

Spring Framework とSpring Boot の違い

Spring Boot は Spring フレームワークの利点の上に構築されているため、Spring と Spring Boot の "どちらか一方" に関することではなく、むしろ "両方" の利点があります。Spring か Spring Boot のどちらか、ということではなく、Spring と Spring Boot は両立するのです。
組織全体を対象とするサポート プラン
Spring Spring Boot
概要

Java に基づくオープンソースの Web アプリケーション フレームワーク。

Spring フレームワーク上に構築された拡張機能またはモジュール。

何を行うものか?

カスタマイズされ疎結合された Web アプリを作成するために、事前構築済みコードのツールやライブラリを使用した、柔軟で完全に設定可能な環境が提供されます。

注釈や XML 構成、または多くの追加コードを記述することなく、すぐに実行できるスタンドアロンの Spring アプリケーションを作成する機能が提供されます。

いつ使用すればよいか?

次のことを求める場合に Spring を使用します。

  • 柔軟性。
  • 利用者の制約が少ないアプローチ。*
  • カスタム コードから依存関係を削除する。
  • 非常に一意の構成を実装する。
  • エンタープライズ アプリケーションを開発する。

次のことを求める場合に Spring Boot を使用します。

  • 使いやすさ。
  • 利用者に制約を課すアプローチ。*
  • 高品質なアプリをすばやく実行し、開発時間を短縮する。
  • 定型コードの記述や XML の構成を避ける。
  • REST API を開発する。
主な機能は何か?

依存性の注入

自動構成

埋め込みサーバーはあるか?

いいえ。Spring では、お客様がサーバーを明示的に設定する必要があります。

はい。Spring Boot には Tomcat や Jetty のような HTTP サーバーが組み込まれています。

どのように構成されているか?

Spring フレームワークにより柔軟性が提供されますが、その構成は手動で作成する必要があります。

Spring Boot により、Spring やその他のサードパーティ製フレームワークは、"設定よりも規約" の原則を超える既定の規約によって自動的に構成されます。

XML を操作する方法を知る必要があるか?

Spring では、XML 構成に関する知識が必要です。

Spring Boot では、XML 構成は必要ありません。

アプリを開発/テストするための CLI ツールはあるか?

Spring フレームワーク単体では、アプリを開発またはテストするための CLI ツールは提供されません。

Spring モジュールとしての Spring Boot には、Spring ベースのアプリを開発およびテストするための CLI ツールがあります。

利用者に制約を課すアプローチ、または利用者の制約が少ないアプローチから機能するか?

利用者の制約が少ない*

利用者に制約を課す*

*利用者に制約を課す、および利用者の制約が少ないフレームワーク アプローチの比較

"利用者に制約を課す"という言葉は漠然と否定的に聞こえるかもしれませんが、Spring Boot の利用者に制約を課すアプローチにも、利用者の制約が少ない Spring フレームワークにも両方、利点があります。

利用者に制約を課すアプローチ

利用者に制約を課すアプローチは、他のすべての方法よりも圧倒的に簡単な方法が 1 つあるという立場をとります。設計上、ソフトウェアによって設計者が制限され、その決められた方法で物事を行うように促されます。

良く整えられた状態の道のりが提供され、多くの状況で大部分の人に通用するベスト プラクティスとなっています。アプリは、こうしたベスト プラクティスと広く普及している規約に厳密に沿って作成されます。利用者に制約を課すアプローチにより、コーディング プロジェクトで共同作業したりヘルプをより簡単に利用したりできるようになり、そのフレームワークの経験がある他の開発者は、新しいアプリにすぐに慣れ親しみ、即座に開始することができます。

利用者の制約が少ないアプローチ

どのソリューションでもほぼ同じ労力や複雑さが必要とされる場合、利用者の制約が少ないアプローチが採用されます。ここでは、問題解決に到達するための 正しい方法は 1 つではない という立場が取られます。代わりに、さまざまな方法で問題を解決できる柔軟なツールが提供されます。利用者の制約が少ないフレームワークには、開発に多くの柔軟性が提供され、開発者の手に多くの制御が委ねられるという利点があります。柔軟性が高いことの主な欠点は、フレームワークがあまりにオープンエンドすき、利用者の制約が少ないため、開発者はより多くの決断を迫られ、より多くのコードを書かなければならなくなる可能性があることです。

Spring Boot の機能と利点

最後に、魅力的な部分である、Java Spring Boot が Spring フレームワークを超えて提供するコア機能があります。Spring Boot により、アプリを設定、構成、実行するための、より簡単で迅速なパスが提供されます。これにより、ほとんどの Spring ベースのアプリを設定するのに必要な構成の手間を省くことができます。開発者は、基礎となる Spring フレームワークを学ぶことなく、すぐに Spring Boot を使い始めることができます。

椅子に座ってデスクトップ画面を見ている人

ここでは、Spring Boot の機能が Java プログラミング作業の効率化にどのように役立つかを紹介します。Spring Boot の主な機能は次のとおりです。

Spring Boot の利点

Spring Boot:

Java Spring Boot チュートリアル

既に Spring フレームワークを使ったアプリの構築に慣れている方なら、このセクションで提供されるチュートリアル、プロジェクト スターター、ドキュメントを使って Spring Boot を学ぶのは簡単でしょう。しかし、Spring Boot を使いたいが、まだフレームワークを知らないという方に朗報です。Spring フレームワークを学ぶ前に Spring Boot を学び、使い始め、操作することが可能です。なぜなら、その過程においてフレームワークの基礎の多くを習得できるからです。フレームワークについて知っておくべきことをすべて学べるわけではありませんが、後々学ぶことになったときに良いスタートを切れるでしょう。

Spring Boot を学ぶもう 1 つのメリットは、アプリ開発がより速く、効率的になる以外に、他の Spring の機能、つまり Spring Data、Project Reactor、Spring Security を使えるようになることです。

ヘッドホンを使ってノート PC で話している人
そうは言っても、Spring フレームワークで "依存性の注入" と "制御の反転" がどのように機能するかという基本的な概念を最初に学んでおくと、最初の Spring Boot チュートリアルを進めやすくなります。ここでは、その概要を説明します。

依存性の注入

  • XML ベース (例: <beans/> と <namespace:*/>)。
  • 注釈ベース (例: @Component、@Autowired、@Inject)。
  • Java ベース (例: @Configuration クラス、@Bean メソッド)。

制御の反転 (IoC)

  • ApplicationContext — Spring IoC コンテナーとして機能するルート インターフェイスです。
  • BeanFactory — Spring コンテナーにアクセスするためのインターフェイスです。
  • Beans — ApplicationContext によってインスタンス化、アセンブル、管理されるオブジェクトです。

初心者向けの Java Spring Boot チュートリアル

基本をマスターしたら、Spring Boot アプリを大規模に構築してデプロイするのであれば、Microsoft と VMware が提供するフルマネージド  Azure Spring Cloud  サービスを検討してみてください。あるいは、 TLS/SSL 証明書を使用して安全な Spring Boot アプリにする方法についてのチュートリアルを使用して、すぐに開始することができます。

Java アプリを作成してセキュリティで保護する

Microsoft Entra ID (旧称 Azure Active Directory) 用の Spring Boot スターターを使って、Spring Initializr で Java アプリを作成しましょう。

初めてのアプリを Azure Spring Cloud にデプロイする

Spring Initializr を使用して構築されたシンプルな Spring Boot アプリを作成、プロビジョニング、監視する方法について詳しくご覧ください。

シンプルな Spring Boot マイクロサービスを構築する

シンプルなマイクロサービスを構築してデプロイし、そこに Spring Cloud テクノロジを追加する方法を詳しくご覧ください。

その他の Spring Boot スターター

ストレージ、セキュリティ、認証、キー コンテナーの機能を Spring Boot アプリに追加できます。

よくあるご質問

  • Spring Boot は、Spring が提供するオープンソースのマイクロサービスベース Java Web フレームワークで、Web アプリやマイクロサービスを開発するソフトウェア エンジニアに特に有用です。

  • "Java の Spring Boot" は、"Java Spring Boot" の別の言い方であり、この 2 つの用語は互換的に使用できます。Java は言語およびプラットフォームであり、Spring は Java ベースのアプリケーション フレームワークです。Spring Boot は Spring フレームワークを拡張したもので、いくつかの利点が追加されています。

  • Spring Boot は一般的な Spring フレームワークの機能を備えています。Spring を学ぶために Spring Boot は必要ありません。開発者はより短時間でアプリを立ち上げて実行できます。なぜなら、Spring Boot の属性は自動設定され、利用者に製薬を課すアプローチにより、Spring アプリの開発とデプロイに関わる定型的なコードと設定の多くが削除されるためです。

  • はい。前述したように、Spring Boot はソフトウェア開発アーキテクチャへのマイクロサービス アプローチに特に有効です。マイクロサービスは、独立して作業できる小規模で自律的なチームを構築するための一般的な方法であり、その性質上、マイクロサービスはバックエンドでしか機能しません。

  • 開発時間の短縮、生産性の向上、使いやすさは、Spring Boot アプリを開発する利点のほんの一部です。

  •  Spring の Web サイト には、チュートリアル、クイックスタート、ドキュメントがたくさんあり、 Microsoft Azure の Spring Boot スターターやドキュメントもあります。Spring Boot アプリケーションのデプロイをすぐに始めたい方は、ウェビナー  Spring Boot アプリケーションを大規模にクラウド化する をご覧ください。

準備が整ったら、Azure の無料アカウントを設定しましょう