はじめに
Spring Boot は Java 製の Web アプリを最小限の手間で作れるフレームワークとして長年使われ続けています。
この記事では、Spring Boot がどういう経緯で生まれたのか、どんな特徴があるのか、どんなユースケースに向いているのかをまず整理し、その後、実際に手元で Hello World(REST API)が動くところまでをハンズオン形式で書いていきます。
Spring Boot とは
最初に Spring Boot の概要を記載します。
生まれた経緯
Spring Boot が生まれた経緯について記載します。
まず、土台になっている Spring Framework の説明をします。Spring Framework 自体は 2000 年代前半から存在する歴史ある DI コンテナ(依存性注入)です。当時は大量の XML 設定ファイルを書く必要があり、アプリを動かすまでの準備が重いという課題がありました。
その課題を解消するため 2014 年に登場したのが Spring Boot です。「設定より規約(Convention over Configuration)」という思想のもと、よく使う構成をあらかじめ用意しておき、開発者が書く設定を最小限にすることを目指しました。
Spring Boot は Spring Framework を置き換えるものではなく、その上に乗る ラッパー です。
特徴
Spring Boot の特徴は、大きく次の 4 つに整理できると思います。
| 特徴 | 内容 |
|---|---|
| 自動構成(Auto Configuration) | クラスパス上の依存関係を見て、必要な設定を自動で行う |
| スターター依存(Starter Dependencies) |
spring-boot-starter-web のように、関連ライブラリをまとめて取り込める依存パッケージ |
| 組み込みサーバー | Tomcat や Jetty を内蔵し、java -jar だけで起動できる(別途サーバー構築が不要) |
| 本番対応機能(Actuator) | ヘルスチェック・メトリクス・監視用のエンドポイントを標準で提供 |
従来は「アプリをビルドして、別途用意したサーバーにデプロイする」という手順が必要でしたが、Spring Boot では実行可能な JAR ひとつにサーバーごと固めてしまえるので、ローカル、本番ともに java -jar で完結します。
向いているユースケース
Spring Boot は汎用的なフレームワークなので幅広く使えますが、特に次のようなケースに向いていると思います。
- REST API サーバー — フロントエンドと分離したバックエンド API の構築
- マイクロサービス — 独立した小さなサービスを多数立てる構成。組み込みサーバーで各サービスを単体実行できる点が相性良し
- エンタープライズな Web アプリケーション — Spring Security や Spring Data JPA など、業務システムに必要な周辺エコシステムが充実している
逆に、ごく小規模なツールや起動の軽さを最優先したい用途では、JVM の起動コストがネックになる場面もあります。そのあたりは要件次第で判断するのがよさそうです。
開発環境
今回の環境は以下のとおりです。
- OS: Windows 11
- エディタ: VSCode(Extension Pack for Java)
- JDK: Java 25
- Spring Boot 4.0.6
- Gradle 9.3.0
- ビルドツール: Gradle(Groovy DSL)
Spring Boot 4.0 は Spring Framework 7 をベースにしており、Java 17 以上が必須です(Java 26 まで対応)。今回は 2026 年 6 月時点の LTS である Java 25 を選びました。Spring Boot 4.x のプロジェクトは Gradle 9.3.0 で生成されます。
初期セットアップ手順
Spring Boot プロジェクトの作成には、公式が提供する Spring Initializr を使うのが定番です。Web ブラウザ上で構成を選ぶだけで、ビルド設定込みのプロジェクト一式を生成してくれます。
手順 0. JDK をインストールする
Spring Boot は Java のフレームワークなので、まず JDK(Java Development Kit)が必要です。今回はオープンソースで商用利用も無償の Eclipse Temurin(Adoptium) の Java 25 を使います。
Adoptium Temurin 25 のダウンロードページ にアクセスし、OS に Windows、Architecture に x64、Package Type に JDK を選んで、MSI インストーラ(.msi)をダウンロードします。
ダウンロードしたインストーラを実行し、ウィザードに従って進めます。途中の「Custom Setup」画面で、「Set JAVA_HOME variable」 と 「Add to PATH」 を有効(インストールする状態)にしておくと、環境変数の設定が自動で行われて楽です。
Windows でパッケージマネージャの winget や Chocolatey を使っている場合は、コマンド一発でも入ります。
# winget の場合
winget install EclipseAdoptium.Temurin.25.JDK
# Chocolatey の場合
choco install temurin25
インストールが終わったら、ターミナル(コマンドプロンプトや PowerShell)で以下を実行して確認します。
java -version
次のような出力が出ればインストール成功です。
openjdk 25.0.3 2026-04-21 LTS
OpenJDK Runtime Environment Temurin-25.0.3+9 (build 25.0.3+9-LTS)
OpenJDK 64-Bit Server VM Temurin-25.0.3+9 (build 25.0.3+9-LTS, mixed mode, sharing)
もし 'java' は内部コマンドまたは外部コマンド〜 のように表示される場合は、PATH が通っていない可能性があります。インストーラをやり直して「Add to PATH」を有効にするか、環境変数 Path に JAVA_HOME\bin を手動で追加してください。
手順 1. Spring Initializr でプロジェクトを生成する
Spring Initializr にアクセスし、以下のように設定します。
そして Dependencies に Spring Web を追加します。これは REST API や Web アプリを作るためのスターター依存で、組み込み Tomcat や JSON シリアライズ(Jackson)などがまとめて含まれます。
設定が終わったら「GENERATE」を押すと ZIP がダウンロードされるので、解凍して VSCode で開きます。
ブラウザを使わずに curl でも生成できます。同じ構成を生成するコマンドは以下のとおりです。
curl https://start.spring.io/starter.zip \
-d type=gradle-project \
-d language=java \
-d bootVersion=4.0.6 \
-d javaVersion=25 \
-d groupId=com.example \
-d artifactId=demo \
-d dependencies=web \
-o demo.zip
手順 2. プロジェクト構成を確認する
生成されたプロジェクトの主要なファイルは以下のとおりです。
demo
├── build.gradle # ビルド設定・依存関係
├── settings.gradle # プロジェクト名などの設定
├── gradlew / gradlew.bat # Gradle Wrapper(Gradle 本体の同梱)
└── src
├── main
│ ├── java
│ │ └── com/example/demo
│ │ └── DemoApplication.java # エントリーポイント
│ └── resources
│ └── application.properties # アプリ設定
└── test
└── java/com/example/demo
└── DemoApplicationTests.java # テスト
gradlew(Gradle Wrapper)が同梱されているため、Gradle 本体を別途インストールする必要はありません。プロジェクトに紐づいたバージョンの Gradle が自動的に使われます。
生成された build.gradle は次のようになっています。
plugins {
id 'java'
id 'org.springframework.boot' version '4.0.6'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(25)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
spring-boot-starter-web という 1 行で、Web アプリに必要なライブラリ群(組み込み Tomcat、Jackson、Spring MVC など)がまとめて取り込まれます。これがスターター依存の便利なところだと思います。
手順 3. エントリーポイントを確認する
DemoApplication.java がアプリケーションの起点です。
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
ポイントは @SpringBootApplication というアノテーションです。これは実際には複数のアノテーションをまとめたもので、特に自動構成(@EnableAutoConfiguration)とコンポーネントスキャン(@ComponentScan)を有効にしています。つまりこの 1 行が、Spring Boot の「設定を自動でやってくれる」仕組みの入口になっています。
Hello World(REST API)を作る
ここまでで土台ができたので、/hello にアクセスすると文字列を返すだけの最小 API を作ってみます。
手順 1. コントローラーを作成する
DemoApplication.java と同じ階層に HelloController.java を新規作成します。
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, World!";
}
}
各アノテーションの役割は次のとおりです。
| アノテーション | 役割 |
|---|---|
@RestController |
このクラスが REST API のコントローラーであることを示す。メソッドの返り値がそのままレスポンスボディになる |
@GetMapping("/hello") |
/hello への GET リクエストをこのメソッドに紐づける |
手順 2. アプリを起動する
プロジェクトのルートで以下を実行します(macOS の場合は ./gradlew bootRun)。
./gradlew.bat bootRun
ログの最後あたりに、組み込み Tomcat が 8080 番ポートで起動した旨が表示されれば成功です。
Tomcat started on port 8080 (http) with context path '/'
Started DemoApplication in 1.234 seconds (process running for 1.567)
手順 3. 動作確認する
別のターミナルから curl で叩いてみます。ブラウザで http://localhost:8080/hello を開いても OK です。
curl http://localhost:8080/hello
以下のように返ってくれば、Hello World 完成です。
Hello, World!
まとめ
この記事では、Spring Boot の生まれた経緯・特徴・ユースケースを整理し、Spring Initializr を使った初期セットアップから Hello World(REST API)が動くところまでを記載しました。
「設定地獄を解消する」という出発点から生まれただけあって、spring-boot-starter-web 1 行で必要なものが揃い、java -jar 相当のコマンドだけで動く手軽さは、入門のハードルが低くてよいと思いました。

