本文へスキップ
T2R tech2rich.com
プログラミング 📚 Java入門 第14回 #Java #入門 #プログラミング初心者 #Spring Boot #Web API #フレームワーク

【Java入門 第14回・最終回】Spring Boot 入門|Java で Web API を作ってみよう

Java 入門連載の最終回。現代の Java 開発の主役 Spring Boot を完全初心者向けに徹底解説。プロジェクトの作り方、@RestController で API を作る方法まで丁寧に解説します。

📅 公開: 2026.05.27 🔄 更新: 2026.05.27 ⏱ 読了 約12分 ✍ 管理人

第13回 で JUnit テストを学びました。 そして本記事はついに 「Java 入門」連載の最終回! 現代の Java 開発で 圧倒的シェア を誇るフレームワーク 「Spring Boot(スプリング ブート)」 に入門します。

「Spring Boot って難しそう…」── 大丈夫。ここまで学んだ クラス・メソッド・アノテーションの基礎があれば、意外とすんなり理解できます。本記事では「Hello, World! を返す Web API」を作るところまでを 完全初心者向け に解説します。

先輩

この記事のゴール

「Spring Boot とは?」「プロジェクトを作る方法」「@RestController で Web API を作る方法」「アノテーションの意味」が理解できることを目指します。Web API の超基礎です!

Spring Boot とは?

Spring Boot は、Java で Web アプリケーションAPI サーバー を作るための フレームワーク(=既製の枠組み)です。

💡 フレームワークとは?: 「アプリの土台と基本機能が最初から用意されている枠組み」のこと。 自分でゼロから書く代わりに、用意された型に沿って書くだけで、Web サーバー・データベース連携などが動く仕組みです。

なぜ Spring Boot が選ばれている?

強み内容
設定がほぼ不要「Convention over Configuration」で、規約に沿えば設定ゼロ
巨大なエコシステムDB / セキュリティ / メッセージング / クラウド連携など何でも
業界標準日本国内の Java 案件は 8 割以上が Spring 系
学びやすい公式・書籍・記事の情報量が圧倒的
本番運用に強い大企業から個人開発まで幅広く採用

プロジェクトを作る(Spring Initializr)

Spring Boot プロジェクトは、ブラウザで Spring Initializr にアクセスするだけで作れます。

手順

  1. https://start.spring.io にアクセス
  2. 以下を選択:
    • Project: Maven
    • Language: Java
    • Spring Boot: 3.x の最新版
    • Project Metadata: お好みで(Group: com.example, Artifact: demo など)
    • Packaging: Jar
    • Java: 17 以上
  3. Dependencies「Spring Web」 を追加
  4. 右下の 「GENERATE」 ボタンで ZIP をダウンロード
  5. ZIP を解凍して IntelliJ IDEA や VS Code で開く

💡 IntelliJ IDEA Ultimate なら、上記をすべて IDE 内から実行できます。Community 版でも、ZIP を解凍して開けば OK です。

プロジェクトの構造

ZIP を解凍すると、以下のような構造になっています。

demo/
├── pom.xml                              ← Maven の設定ファイル(依存関係を書く)
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/example/demo/
│   │   │       └── DemoApplication.java ← エントリーポイント(main メソッドあり)
│   │   └── resources/
│   │       └── application.properties   ← 設定ファイル(ポート番号等)
│   └── test/
│       └── java/
│           └── com/example/demo/
│               └── DemoApplicationTests.java

起動してみる: Hello, Spring Boot!

最初から 「DemoApplication.java」 という起動ファイルがあります。

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

// このアノテーションが「Spring Boot アプリ」の目印
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        // Spring Boot を起動(これだけでサーバーが動く!)
        SpringApplication.run(DemoApplication.class, args);
    }
}

起動方法

起動すると、コンソールに以下のようなログが流れます。

:: Spring Boot ::                (v3.x.x)
...
Tomcat started on port(s): 8080 (http)
Started DemoApplication in 1.234 seconds

Tomcat started on port 8080 が出れば成功! Web サーバーが起動 しています。 ブラウザで http://localhost:8080 にアクセスすると、まだ何も作っていないので 「Whitelabel Error Page」 が出ます。これはエラーではなく、「URL に対応する処理がない」 という意味です。

最初の API を作る: @RestController

/hello にアクセスすると Hello, Spring Boot! を返す」 API を作ってみましょう。

DemoApplication.java と同じフォルダに、新しいファイル HelloController.java を作ります。

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

// このクラスは「REST API のコントローラー」と Spring に教える
@RestController
public class HelloController {

    // GET /hello にアクセスされたら、このメソッドが呼ばれる
    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}

たったこれだけ。もう一度サーバーを再起動 して、ブラウザで http://localhost:8080/hello にアクセスすると…

Hello, Spring Boot!

と表示されます! これがあなたの最初の Web API です 🎉

アノテーションの意味

アノテーション役割
@RestController「このクラスは REST API のコントローラーです」と Spring に伝える
@GetMapping("/hello")「HTTP の GET メソッド + URL /hello」を、このメソッドに紐付け
@SpringBootApplicationアプリの起点。3 つのアノテーションを 1 つにまとめた便利マーク

💡 アノテーション は「コードに付けるラベル」のこと。Spring はクラスやメソッドに付いたアノテーションを見て、「何をどう動かすか」を自動で配線 してくれます。

クエリパラメータを受け取る

/hello?name=佐藤 にアクセスすると Hello, 佐藤!」 を返す API を作ってみましょう。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    // クエリパラメータ name を受け取る
    @GetMapping("/hello")
    public String hello(
        // ?name= の値を String 型の引数 name に取り込む
        // defaultValue = パラメータがない場合のデフォルト値
        @RequestParam(defaultValue = "World") String name
    ) {
        return "Hello, " + name + "!";
    }
}

アクセスしてみる:

JSON を返す API

文字列ではなく、JSON 形式のデータを返したい場合は オブジェクトをそのまま return するだけ。Spring が自動で JSON に変換してくれます。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    // GET /user にアクセスされたら呼ばれる
    @GetMapping("/user")
    public User getUser() {
        // User オブジェクトを返すと、自動で JSON に変換される
        return new User("佐藤", 28, "sato@example.com");
    }
}

// データクラス(Java 14 以降の record 構文で簡潔に書ける)
record User(String name, int age, String email) {}

ブラウザで http://localhost:8080/user にアクセスすると…

{
  "name": "佐藤",
  "age": 28,
  "email": "sato@example.com"
}

Spring が自動で JSON 化 しています。これが Spring Boot の生産性の高さです。

POST で データを受け取る

ユーザーから データを送ってもらう API も簡単に作れます。

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetController {

    // POST /greet に JSON が送られてきたとき
    @PostMapping("/greet")
    public String greet(@RequestBody GreetRequest req) {
        // 送られてきた JSON が GreetRequest にマッピングされる
        return "Hello, " + req.name() + "! 年齢は " + req.age() + " ですね。";
    }
}

record GreetRequest(String name, int age) {}

curl などで POST してみる:

curl -X POST http://localhost:8080/greet \
  -H "Content-Type: application/json" \
  -d '{"name":"田中","age":35}'

応答:

Hello, 田中! 年齢は 35 ですね。

💡 @RequestBody が「HTTP リクエストのボディ(JSON)を、引数のオブジェクトにマッピングしてください」と Spring に指示しています。

Spring Boot の主要アノテーション早見表

アノテーション意味
@SpringBootApplicationアプリのエントリーポイント
@RestControllerREST API のクラスである
@ControllerWeb ページを返すクラス(Thymeleaf 等と併用)
@Serviceビジネスロジックのクラス
@RepositoryDB アクセスのクラス
@Component汎用の「Bean」として登録
@GetMapping(path)GET リクエストの紐付け
@PostMapping(path)POST リクエストの紐付け
@PutMapping(path)PUT リクエストの紐付け
@DeleteMapping(path)DELETE リクエストの紐付け
@RequestParamクエリパラメータの取得
@PathVariableURL パスからの値の取得(例: /users/123 の 123)
@RequestBodyリクエストボディ(JSON)を Java オブジェクトに
@Autowired他のクラスを自動でインジェクション(依存注入)

💡 覚えるのは「@RestController + @GetMapping + @RequestParam」だけで十分スタート可能。残りは必要になったときに調べれば OK です。

編集部より

編集部より

Spring Boot は 「最初の Hello World が動けば 90% の壁を超えた」と言われる世界です。難しい仕組みは 使いながら少しずつ理解すれば OK。まずは触ってみることが大切!

練習問題

以下の機能を持つ API を作ってみましょう。

/add?a=10&b=20 にアクセスすると、30(計算結果) を JSON で返す API。

解答例

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CalcController {

    // GET /add?a=10&b=20 にアクセスされる想定
    @GetMapping("/add")
    public AddResult add(
        @RequestParam int a,   // クエリパラメータ a を int で受け取る
        @RequestParam int b    // クエリパラメータ b を int で受け取る
    ) {
        return new AddResult(a, b, a + b);   // 結果を JSON で返す
    }
}

// レスポンスの形を定義(record 構文)
record AddResult(int a, int b, int result) {}

ブラウザで http://localhost:8080/add?a=10&b=20:

{
  "a": 10,
  "b": 20,
  "result": 30
}

次のステップ:何を学ぶ?

入門連載は本記事で完結ですが、Spring Boot の世界はまだまだ広いです。以下を順に学ぶのがおすすめです。

順番内容
1DB 連携(Spring Data JPA) — DB から取り出し・保存
2Validation@Valid で入力バリデーション
3例外ハンドリング@ControllerAdvice
4セキュリティ(Spring Security) — 認証・認可
5テスト(@SpringBootTest) — Spring 機能を含めたテスト
6デプロイ — Docker / クラウド(AWS, GCP, Azure)へ

連載完走おめでとうございます! 🎉

ここまで全 14 回、お疲れさまでした! 全体を振り返ると、こんなにたくさんのことを学びました:

  1. ✅ Hello, World! と環境構築
  2. ✅ 変数・データ型
  3. ✅ 条件分岐(if / switch)
  4. ✅ 繰り返し(for / while)
  5. ✅ 配列
  6. ✅ メソッド
  7. ✅ クラスとオブジェクト
  8. ✅ 例外処理
  9. ✅ ArrayList
  10. ✅ 継承・インターフェース
  11. ✅ ファイル入出力
  12. ✅ マルチスレッド
  13. ✅ JUnit テスト
  14. Spring Boot 入門 ← 今ココ!

これだけ学べば、Java エンジニアの入口 には間違いなく立っています。 あとは 「自分で何か作ってみる」 こと。簡単な API、ToDo アプリ、ブログシステムなど、動くものを作る経験が、何より成長を加速させます。

このシリーズが、あなたの Java エンジニアとしてのキャリアの最初の一歩になれば、編集部として幸せです。お疲れさまでした!

関連の技術記事