Spring Boot でウェブアプリケーション "Hello World" やってみた (Windows11+Eclipse)

# はじめに
前から勉強しようと思っていたSpring、そしてSpringBootですが、生成AIに聞きながら HelloWorld してみました。読者の方が同じように試せるようにハンズオン記事にしましたので、ご活用ください。

### 対象読者
- Spring Bootでウェブアプリケーションを開発したい方
- 開発環境を構築するPCをお持ちの方
- 勉強より実践で手を動かしたい方

### この記事で学べる事
- Windows11でのJava開発環境(Eclipse)構築方法
- Spring Boot プロジェクト作成方法
- 簡単なWebアプリケーションのデプロイ方法

### この記事で学べない事
まずは理屈より動かすことを重視して、以下の解説はしていません！
- プログラムの解説はしていません
- ウェブアプリケーションの仕組みは解説していません
- Mavenなどビルドツールの解説はしていません

# 前提

環境構築可能なPCをお持ちの方を前提としています。
Windows11 での画面説明となりますが、EclipseはMac版もLinux版もありますので、同じように進められるかと思います。

以下のノートPCで動作を確認しています。
- プロセッサ 12th Gen Intel(R) Core(TM) i5-1245U、1600 Mhz
- インストール済みの物理メモリ (RAM) 16.0 GB
- SSDサイズ 256GB

# ハンズオンの開始
## 1. 環境の準備

IDEは[Eclipseのサイトから](https://www.eclipse.org/downloads/packages/)、"Eclipse IDE for Enterprise Java and Web Developers"をダウンロードしました。ファイル名は`eclipse-jee-2024-09-R-win32-x86_64.zip`です。2024-09-Rというバージョンのようですね。
このパッケージにはMavenとGradleが含まれているようです。

Eclipseは圧縮されているので解凍し、eclipse.exeを実行し、次のように作業用フォルダを設定しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281116/a702b86d-5555-3d6e-c994-2e426d5bad8b.png)

すると、次のようなメニュー画面が表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281116/cf7ebbf8-a904-a17f-6d29-3036306d5220.png)
右上の▶Hideを押下すると、次のような画面になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281116/649c1de6-5041-2a74-b6d2-50ec45014c79.png)

これで開発環境がインストールされました。

## 2. プロジェクトの作成
Spring Initializrを使うことで、プロジェクトのセットアップが簡単にできます。

[Spring Initializr](https://start.spring.io/)にアクセスします。
次の設定でプロジェクトを生成します。

- Project: Maven Project
- Language: Java
- Spring Boot: 規定値（3.3.4）
- Project Metadata:
    - Group: com.example
    - Artifact: hello-world
    - Name: Hello World
    - Package name: com.example.hello-world
    - Packaging: Jar
    - Java: 17
- Dependencies: [ADD]を押下し、Spring Webを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281116/7b285aa3-9682-bac7-295d-f27fc90022c6.png)

Generateボタンを押下すると、プロジェクトファイルがダウンロードされます。。

## 3. プロジェクトのセットアップ

[File]メニュー->[Open Projects from File System...]
->[Import Projects from File System or Archive]
先ほどダウンロードしたプロジェクトファイルはZIP圧縮されているので、[Archive...]を押下して選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281116/821c1920-7511-70f7-a5d9-a1fe77794aa1.png)

プロジェクトファイルを選択して[Finish]を押下すると、次のようにIDEに取り込まれました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281116/7ab3f091-139e-8adc-dd69-1abff9a91ec8.png)

## 4. アプリケーションの作成
### 4-1. メインアプリケーションの作成
Spring Bootプロジェクトの src/main/java/com/example/helloworld/HelloWorldApplication.java に以下のコードを追加します。このクラスは、Spring Bootアプリケーションを起動するメインエントリーポイントです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281116/58c047ae-ae4e-be81-e976-0250e7981742.png)

```java:HelloWorldApplication.java
package com.example.hello_world;

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

@SpringBootApplication
public class HelloWorldApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelloWorldApplication.class, args);
    }
}
```
### 4-2. コントローラーの作成
次に、HelloController という名前のコントローラークラスを作成し、HTTPリクエストを受け取って「Hello, World!」を返す処理を実装します。
1. `src/main/java/com/example/helloworld`を右クリックして、`New > Class`を選択します。
1. クラス名を`HelloController`と入力し、`Finish`ボタンをクリックします。
1. 以下のコードを追加します。

```java:HelloController.java
package com.example.hello_world;

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

@RestController
public class HelloController {

    @GetMapping("/")
    public String hello() {
        return "Hello, World!";
    }
}
```

## 5. アプリケーションの実行
ここまででアプリケーションは完成です。
`src/main/java/com/example/helloworld`を右クリックして、`Run As -> Java Application` としてみましょう。
Consoleウィンドウに何やら表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281116/68bd26bd-bd1d-6792-28c8-937ddaacd8a5.png)

ブラウザで  http://localhost:8080 にアクセスしてみましょう。
Hello, World! と表示されていれば成功です！お疲れさまでした！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281116/d1ee37ac-3cd6-f45f-0d6c-d35fdff2b030.png)

確認が終わったら、Consoleウィンドウの[Terminate]ボタンでサーバーを停止しておきましょう。

## 6. ちょっとアレンジ
ちょっとでもアレンジするのが結構重要かもしれません。できれば作りたいアプリケーションをイメージして、変更してみてください。

https://qiita.com/Sicut_study/items/cff86da10b8ee0809ccb

`HelloController.java` を少しアレンジしてみましょう。（コードは省略）
1. HTMLのタグを使えるか試す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281116/e3eaf503-a05f-742a-19f9-25a1633d72f4.png)
2. マッピングを増やしてみる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281116/3268ea84-8354-1f45-f84b-4ba9b6b7d1a9.png)

そのほかのアイディアとして、次のようなものはいかがでしょうか。
- 表示内容に日時を追加する
- パラメータを受け取って、挨拶文をカスタマイズする（例：/greet?name=John にアクセスすると「Hello, John!」と表示される）
- REST API形式でJSON形式のデータを返すエンドポイントを作成する
- 表示内容をHTMLファイルやCSSファイルで構成させる

# まとめ
この記事では、Spring Bootを使って簡単な「Hello World」アプリケーションを作成する方法を学びました。Spring Bootは、初学者でも簡単にWebアプリケーションを構築できるように設計されているようです。
次のテーマとして、TODOアプリかブログアプリあたりを作れるといいのかなと思います。

〇時間でできた！などコメントいただけると幸いです。
最後までお付き合いいただきありがとうございました。