Spring Boot開発の第一歩!VS Codeで始めるSpring Boot 3.5.7 + Java25 Webアプリ開発環境構築ガイド

「開発環境の構築って、なんでこんなに大変なんだろう…」

そう感じたことはありませんか?

特に、新しい技術スタックに挑戦する際、環境構築の段階でつまずき、モチベーションが下がってしまう経験は、多くの開発者にとって「あるある」ではないでしょうか。

開発の現場では常に新しい技術が生まれ、進化を続けています。特にJavaの世界では、Spring BootがWebアプリケーション開発のデファクトスタンダードとしての地位を確立し、Java自体も半年ごとのリリースサイクルで着実に進化を遂げています。

今回注目するのは、最新のSpring Boot 3.5.7と、次世代のJavaを担うJava25の組み合わせです。
もし「VS Code」と「Spring Boot 3.5.7 + Java25」という強力な組み合わせで、スムーズに、そして効率的に開発環境を立ち上げられるとしたら?

この記事では、そんなあなたの悩みを解決し、最新の技術を最大限に活かしたWebアプリ開発の第一歩を、迷いなく踏み出せるようサポートします。

さあ、一緒に「開発の壁」を乗り越え、あなたのアイデアを形にする旅に出かけましょう!


目次


対象読者

  • JavaおよびSpring BootでのWebアプリケーション開発に興味がある初心者の方
  • VS Codeを使った開発環境構築の手順を知りたい方
  • Spring Bootの基本的な機能とWebアプリケーションの作成方法を学びたい方
  • 最新のJava(Java 25)とSpring Boot(3.5.7)の環境で開発を始めたい方

動作検証環境

この記事は、以下の環境で検証しています。

  • OS : macOS Tahoe Version 26.0
  • ハードウェア : MacBook Air 2024 M3 24GB
  • VS Code: 最新版 (記事執筆時点)
  • Java Extension Pack: 最新版 (記事執筆時点)
  • Spring Boot Extension Pack: 最新版 (記事執筆時点)
  • Java: OpenJDK 25.0.1 LTS (Temurin)
  • Spring Boot: 3.5.7
  • Maven: 3.9.6 (Spring Initializrで生成されるデフォルトバージョンを想定)

1. VS Code、Spring Boot 3.5.7、Java25を選ぶ理由

現代のWebアプリケーション開発において、スピードと効率は不可欠です。
Spring Bootは、その「設定より規約」の思想と豊富な機能で、Java開発の生産性を飛躍的に向上させてきました。
そして、VS Codeは軽量でありながら強力な拡張性を持つエディタとして、多くの開発者に愛用されています。

Spring Boot 3.5.7の新機能と改善点

  • Spring Bootは常に進化を続けており、バージョン3.5.7では、さらなるパフォーマンス向上、セキュリティ強化、そして開発者体験の改善が図られています。
  • 特に、最新のJavaバージョンとの連携が強化され、よりモダンな開発スタイルをサポートします。

Java21/25の主な特徴と開発メリット

  • Java21/25は、Project Loom(仮想スレッド)やPattern Matching for switchなど、画期的な新機能を多数導入しています。
  • これにより、並行処理の記述がよりシンプルになり、アプリケーションのパフォーマンスも向上します。
  • Spring Boot 3.5.7は、これらのJava21/25の新機能を最大限に活用できるよう設計されており、開発者はより効率的で堅牢なアプリケーションを構築できます。

VS CodeとSpring Bootの連携による開発効率

  • VS Codeは、Java Extension PackやSpring Boot Extension Packといった豊富な拡張機能により、Spring Boot開発においてIDEに匹敵する強力なサポートを提供します。
  • コード補完、デバッグ、テスト実行、そしてDev Containersによる開発環境の標準化など、VS Codeは開発者の生産性を向上させるツールです。

これらの要素が組み合わさることで、私たちは「最速で、最高の品質のWebアプリを開発する」ための強力な基盤を手に入れることができます。


OpenJDKの選択については、以下の記事で詳細に解説していますので、是非ご覧ください。


2. 必要なツールのインストール

Webアプリケーション開発を始めるには、いくつかの基本的なツールが必要です。これらのツールは、コードを書いたり、プログラムを動かしたり、プロジェクトを管理したりするために使われます。

ここでは、Spring Boot 3.5.7とJava25を使った開発に必要なツールを、インストールしていきます。


2-1. Java Development Kit (JDK 25) のインストールと設定

Java25は、最新のSpring Boot 3.5.7を動かすために必須です。ここでは、主要なOSでのインストール方法を解説します。

macOSの場合 (Homebrewを使用)

brew update
brew install openjdk@25 # または openjdk
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ~/.zshrc # または ~/.bash_profile
source ~/.zshrc # または ~/.bash_profile

Homebrewのインストールについては、以下の記事で詳細に解説していますので、是非ご覧ください。


Windowsの場合 (ScoopまたはSDKMAN!を使用)

  • Scoop:
scoop bucket add java
scoop install java/temurin25-jdk
  • SDKMAN!:
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 25-tem

インストール後、java -version を実行して、Java25が正しくインストールされていることを確認してください。

java -version
# 期待される出力例:
# openjdk 25.0.1 2025-10-21 LTS
# OpenJDK Runtime Environment Temurin-25.0.1+8 (build 25.0.1+8-LTS)
# OpenJDK 64-Bit Server VM Temurin-25.0.1+8 (build 25.0.1+8-LTS, mixed mode, sharing)

SDKMAN!、OpenJDKのインストールについては、以下の記事で詳細に解説していますので、是非ご覧ください。


2-2. VS Codeのインストールと基本設定

まだVS Codeをインストールしていない場合は、公式ウェブサイトからダウンロードしてインストールしてください。

インストール後、以下の基本設定を行うことをお勧めします。本記事では、VS Codeの詳細な手順までは解説しません。ご了承ください。

  • 日本語化:
    • Japanese Language Pack for VS Code 拡張機能をインストール。
  • テーマ:
    • お好みのテーマを設定(例: Dark+ (default dark))。
  • フォント:
    • 開発に適したフォント(例: Fira CodeJetBrains Mono)を設定し、リガチャを有効にする。
  • ファイル保存時の自動フォーマット:
    • コードの可読性を保つために、保存時に自動でフォーマットされるように設定することをお勧めします。
      • settings.json に以下を追加: "editor.formatOnSave": true

2-3. Extension Pack for Javaの導入

VS CodeでJava開発を行う上で必須となるのが「JExtension Pack for Java」です。
これには、Java開発に必要な主要な拡張機能(Language Support for Java™ by Red Hat, Debugger for Javaなど)がまとめて含まれています。

  1. VS Codeを開き、拡張機能ビュー(Ctrl+Shift+X または Cmd+Shift+X)を開きます。
  2. 「Extension Pack for Java」と検索し、インストールします。

2-4. Spring Boot Extension Packの導入

Spring Boot開発をさらに効率化するために、「Spring Boot Extension Pack」を導入しましょう。これには、Spring Boot ToolsやSpring Initializrなどの便利な拡張機能が含まれています。

  1. 拡張機能ビューで「Spring Boot Extension Pack」を検索し、インストールします。

3. Spring Bootプロジェクトの作成

環境が整ったところで、いよいよ最初のSpring Bootプロジェクトを作成します。


3-1. Spring Initializrを使ったプロジェクト生成

Spring Initializrは、Spring Bootプロジェクトのひな形を簡単に生成できるWebツールです。VS Codeの拡張機能を使えば、VS Code内から直接操作できます。

VS Code内から直接操作する方法

  1. VS Codeでコマンドパレット(Ctrl+Shift+P または Cmd+Shift+P)を開きます。
  2. 「Spring Initializr: Create a Maven Project」または「Spring Initializr: Create a Gradle Project」を選択します(ここではMavenを選択します)。
  3. プロンプトに従って、プロジェクトの情報を入力します。
    • Spring Boot Version: 3.5.7 (最新版を選択)
    • Language: Java
    • Group Id: com.example (任意)
    • Artifact Id: demo (任意)
    • Packaging: Jar
    • Java Version: 25
    • Dependencies: Spring Web を追加(REST API開発のため)
  4. プロジェクトを保存するディレクトリを選択します。

Webサイト (start.spring.io) を使った方法

VS Codeの拡張機能を使わずに、Webブラウザから直接 Spring Initializr にアクセスしてプロジェクトを生成することもできます。

  1. https://start.spring.io/ にアクセスします。
  2. 以下の項目を設定します。
    • Project: Maven Project
    • Language: Java
    • Spring Boot: 3.5.7
    • Project Metadata:
      • Group: com.example (任意)
      • Artifact: demo (任意)
      • Name: demo (任意)
      • Description: Demo project for Spring Boot
      • Package name: com.example.demo (任意)
      • Packaging: Jar
      • Java: 25
    • Dependencies: 「Add Dependencies…」をクリックし、「Spring Web」を検索して追加します。
  3. 「Generate」ボタンをクリックすると、プロジェクトのZIPファイルがダウンロードされます。
  4. ダウンロードしたZIPファイルを解凍し、VS Codeで開きます。

3-2. VS Codeでのプロジェクトオープンと構造理解

生成されたプロジェクトをVS Codeで開くと、Extension Pack for Javaが自動的にプロジェクトを認識し、必要な設定を行います。

プロジェクトの基本的な構造は以下のようになります。

demo/
├── .mvn/
├── src/
   ├── main/
      ├── java/com/example/demo/
         └── DemoApplication.java
      └── resources/
          ├── application.properties
          ├── static/
          └── templates/
   └── test/
       └── java/com/example/demo/
           └── DemoApplicationTests.java
├── .gitignore
├── mvnw
├── mvnw.cmd
└── pom.xml
  • src/main/java: アプリケーションのソースコード
  • src/main/resources: 設定ファイルや静的リソース、テンプレート
  • src/test/java: テストコード
  • pom.xml: Mavenのプロジェクト設定ファイル。プロジェクトの基本情報、依存関係(dependencies)、ビルド設定(build)などが定義されています。特に dependencies セクションには、Spring Bootが提供する様々な機能(Web、JPAなど)を利用するためのライブラリが記述されており、開発に必要な機能を簡単に追加・管理できます。

Mavanとpom.xmlについては、以下の記事で詳細に解説していますので、是非ご覧ください。


4. 最初のSpring Bootアプリケーションを動かす

いよいよ、作成したプロジェクトを動かしてみましょう。
ここでは、最低限の手間で動作確認するため、シンプルなWebページとREST APIを作成してみます。


4-1. シンプルなWebページの作成

まずは、ブラウザでアクセスできるシンプルなWebページを作成してみましょう。Spring Bootでは、HTMLファイルを配置するだけで簡単にWebページを表示できます。

  1. src/main/resources/templates ディレクトリに index.html ファイルを作成します。
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello Spring Boot!</title>
</head>
<body>
    <h1>Hello, Spring Boot!</h1>
    <p>これはSpring Bootで作成されたシンプルなWebページです。</p>
</body>
</html>
  1. src/main/java/com/example/demo/DemoApplication.java に、このHTMLを表示するためのコントローラを追加します。
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller; // Controllerアノテーションを追加
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; // @ResponseBodyアノテーションを追加

@SpringBootApplication
@Controller // @RestControllerから@Controllerに変更
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping("/") // ルートパスへのアクセスでindex.htmlを表示
    public String index() {
        return "index"; // src/main/resources/templates/index.html を表示
    }
}
  • @Controller: このクラスがWebコントローラであることを示します。Spring MVCにおいて、HTTPリクエストを処理し、ビュー(HTMLなど)を返す役割を担います。
  • @GetMapping("/"): ルートパス (/) へのGETリクエストをこのメソッドが処理することを示します。
  • return "index": src/main/resources/templates/index.html を表示することを意味します。Spring Bootは、src/main/resources/templates ディレクトリ内のHTMLファイルを自動的に探し、レンダリングしてくれます。
  1. src/main/java/com/example/demo/pom.xml に、このHTMLを表示するための依存関係を追加します。
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

SpringのアノテーションやDIについては、以下の記事で詳細に解説していますので、是非ご覧ください。


4-2. Webページの動作確認

VS CodeからSpring Bootアプリケーションを実行します。

  1. DemoApplication.java ファイルを開きます。
  2. main メソッドの上にある「Run」または「Debug」ボタンをクリックします。

アプリケーションを起動し、ブラウザで http://localhost:8080/ にアクセスしてみましょう。

「Hello, Spring Boot!」と表示されたシンプルなWebページが表示されれば成功です。


4-3. シンプルなREST APIの作成

次に、src/main/java/com/example/demo/DemoApplication.java を開き、簡単なRESTコントローラを追加します。

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController // @RestControllerから@Controllerに変更
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping("/") // ルートパスへのアクセスでindex.htmlを表示
    public String index() {
        return "index"; // src/main/resources/templates/index.html を表示
    }

    @GetMapping("/hello")
    public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
        return String.format("Hello, %s!", name);
    }
}
  • @RestController: このクラスがRESTコントローラであることを示します。@Controller と異なり、このアノテーションが付与されたクラス内のメソッドは、戻り値を直接HTTPレスポンスボディとして扱います。これにより、JSON形式のAPIなどを簡単に実装できます。
  • @GetMapping("/hello"): /hello パスへのGETリクエストをこのメソッドが処理することを示します。
  • @RequestParam: HTTPリクエストのクエリパラメータをメソッドの引数にバインドするために使用します。
    • value = "name": クエリパラメータの名前が name であることを指定します。
    • defaultValue = "World": name パラメータが指定されなかった場合に、デフォルト値として “World” を使用することを示します。これにより、パラメータが省略されてもエラーにならず、柔軟なAPIを提供できます。

4-4. アプリケーションの実行と動作確認

VS CodeからSpring Bootアプリケーションを実行します。

  1. DemoApplication.java ファイルを開きます。
  2. main メソッドの上にある「Run」または「Debug」ボタンをクリックします。

VS Codeを使ったデバッグの基本

Spring Bootアプリケーションのデバッグは、VS Codeの強力なデバッグ機能を使うと非常に効率的に行えます。

  1. ブレークポイントの設定:
    コードの実行を一時停止したい行の左側の余白をクリックすると、赤い丸が表示され、ブレークポイントが設定されます。
  2. デバッグ実行:
    DemoApplication.java ファイルを開き、main メソッドの上にある「Debug」ボタンをクリックするか、F5 キーを押します。
  3. ステップ実行: ブレークポイントで実行が停止したら、以下のデバッグコントロールを使ってコードをステップ実行できます。
    • 続行 (F5): 次のブレークポイントまで実行を続行します。
    • ステップオーバー (F10): 現在の行を実行し、次の行に進みます(メソッドの中には入らない)。
    • ステップイン (F11): 現在の行がメソッド呼び出しの場合、そのメソッドの内部に入ります。
    • ステップアウト (Shift+F11): 現在のメソッドから抜け出し、呼び出し元に戻ります。
  4. 変数の監視:
    デバッグ中に「変数」パネル(左側のサイドバー)を見ると、現在のスコープ内の変数の値を確認できます。これにより、プログラムの実行状態を詳細に把握できます。

アプリケーションが起動したら、ブラウザまたはcURLでアクセスしてみましょう。

curl 'http://localhost:8080/hello'
# 出力: Hello, World!

curl 'http://localhost:8080/hello?name=Gemini'
# 出力: Hello, Gemini!

これで、Spring Boot 3.5.7とJava25を使ったWebアプリケーションが正常に動作していることを確認できました。

cURLの使い方については、以下の記事で詳細に解説していますので、是非ご覧ください。


4-5. 簡単なテストコードの書き方

アプリケーションが期待通りに動作するかを確認するために、テストコードを書くことは非常に重要です。Spring Bootでは、JUnit 5とSpring Boot Testを組み合わせることで、簡単にテストを作成できます。

プロジェクト生成時に src/test/java/com/example/demo/DemoApplicationTests.java が自動的に作成されています。これを活用して、簡単なテストを追加してみましょう。

  1. src/test/java/com/example/demo/DemoApplicationTests.java を以下のように修正します。
package com.example.demo;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

    @SpringBootTest // Spring Bootアプリケーションのコンテキストをロードしてテストを実行することを示します
    @AutoConfigureMockMvc // MockMvcを自動設定します
    class DemoApplicationTests {

        @Autowired // MockMvcをDIします
        private MockMvc mockMvc;

        @Test // このメソッドがテストメソッドであることを示します
        void contextLoads() {
            // アプリケーションコンテキストが正常にロードされることを確認するテスト
        }

        @Test
        void helloEndpointReturnsDefaultMessage() throws Exception {
            mockMvc.perform(get("/hello")) // /hello エンドポイントにGETリクエストを実行
                    .andExpect(status().isOk()) // HTTPステータスが200 OKであることを検証
                    .andExpect(content().string("Hello, World!")); // レスポンスボディが期待通りであることを検証
        }

        @Test
        void helloEndpointReturnsCustomMessage() throws Exception {
            mockMvc.perform(get("/hello").param("name", "TestUser")) // name=TestUser パラメータ付きでGETリクエストを実行
                    .andExpect(status().isOk()) // HTTPステータスが200 OKであることを検証
                    .andExpect(content().string("Hello, TestUser!")); // レスポンスボディが期待通りであることを検証
        }

    }
  1. テストの実行: VS Codeのテストエクスプローラー(左側のサイドバーにあるフラスコアイコン)を開くと、上記のテストが表示されます。各テストの横にある再生ボタンをクリックするか、上部の「すべてのテストを実行」ボタンをクリックすることでテストを実行できます。
    • または、ターミナルで mvnw test コマンドを実行することでもテストを実行できます。

テストは、コードの変更が既存の機能に影響を与えないことを保証し、品質の高いアプリケーションを開発するために不可欠です。


4-6. よくあるエラーとトラブルシューティング

環境構築やアプリケーション実行時のエラー以外にも、開発中に遭遇しやすい一般的なエラーとその解決策をいくつか紹介します。

  • NullPointerException:
    • 原因: オブジェクトが null の状態で、そのオブジェクトのメソッドを呼び出そうとした場合に発生します。DIが正しく行われていない、または初期化が不足している場合によく見られます。
    • 解決策:
      1. @Autowired が正しく付与されているか確認します。
      2. 注入対象のBeanがSpringコンテナに正しく登録されているか確認します(@Component などのアノテーションが付与されているか)。
      3. デバッグモードで変数の値を確認し、null になっているオブジェクトを特定します。
  • BeanCreationException:
    • 原因: SpringコンテナがBeanを生成する際にエラーが発生した場合に発生します。依存関係の循環、コンストラクタの引数不足、設定ミスなどが考えられます。
    • 解決策:
      1. エラーメッセージを詳しく読み、どのBeanの生成で問題が発生しているか、具体的な原因(No qualifying bean of type 'X' available など)を特定します。
      2. 依存関係に循環がないか確認します。
      3. コンストラクタインジェクションを使用している場合、必要な引数がすべて提供されているか確認します。
  • HTTP 404 (Not Found):
    • 原因: クライアントがリクエストしたURLに対応するエンドポイントが見つからない場合に発生します。
    • 解決策:
      1. URLが正しいか、タイプミスがないか確認します。
      2. コントローラクラスに @Controller または @RestController が付与されているか確認します。
      3. メソッドに @GetMapping, @PostMapping などのマッピングアノテーションが正しく付与されているか、パスが正しいか確認します。
      4. アプリケーションが正しく起動しているか確認します。
  • HTTP 500 (Internal Server Error):
    • 原因: サーバー内部で予期せぬエラーが発生した場合に発生します。アプリケーションコード内の例外、データベース接続エラーなどが考えられます。
    • 解決策:
      1. アプリケーションのログを確認し、スタックトレースから具体的なエラーの原因を特定します。
      2. デバッグモードでエラーが発生する箇所を特定し、変数の値などを確認します。
      3. データベース接続設定や外部サービスとの連携設定が正しいか確認します。

トラブルシューティング: アプリケーション起動時のよくあるエラー

  • ポート競合 (Port already in use):
    Spring Bootアプリケーションはデフォルトで8080ポートを使用します。もし他のアプリケーションが既に8080ポートを使用している場合、起動時にエラーが発生します。
    • 解決策:
      1. 他のアプリケーションを停止するか、Spring Bootアプリケーションのポートを変更します。ポートを変更するには、src/main/resources/application.properties ファイルに以下の行を追加します。
        server.port=8081
        これにより、アプリケーションは8081ポートで起動するようになります。
  • 依存関係の解決失敗 (Dependency resolution failed):
    pom.xml に記述された依存関係が正しくダウンロードできない場合などに発生します。
    • 解決策:
      1. インターネット接続を確認します。
      2. Mavenリポジトリが正しく設定されているか確認します。
      3. 依存関係を再解決します。

まとめと次のステップ

この記事では、VS CodeとSpring Boot 3.5.7、そしてJava25を組み合わせたWebアプリケーション開発環境の構築方法を、ステップバイステップで解説しました。

  • Java25のインストールと設定
  • VS Codeの基本設定とJava/Spring Boot拡張機能の導入
  • Spring Initializrを使ったプロジェクト生成
  • シンプルなWebページとREST APIの実装とアプリケーションの実行

これで、あなたは最新の技術スタックでWebアプリ開発を始めるための強固な基盤を手に入れました。

次の記事では、Spring Boot 3.5.7の基本的なコンポーネント、そしてJava25の新機能をさらに深く掘り下げ、より実践的なWebアプリケーション開発の基礎を築いていきます。お楽しみに!

この記事に関するご意見、ご質問、または共有したい知見があれば、コメント欄にご記入ください。


免責事項

本記事は、特定の環境下での動作検証に基づいた情報を提供しています。記載された手順やコードは、読者の環境や状況によっては異なる結果を招く可能性があります。本記事の内容を実践する際は、ご自身の責任において実施してください。本記事によって生じたいかなる損害についても、筆者および公開元は一切の責任を負いません。


SNSでもご購読できます。

コメントを残す

*