Spring BootでHello World APIを作成する

# Spring BootでHello World APIを作成する

## はじめに

この記事では、Spring Bootを使用してHello World APIを作成する方法を説明します。開発環境のセットアップから、簡単なREST APIの実装まで、ステップバイステップで解説します。

## 1. 開発環境のセットアップ

### 必要なツール

- Java Development Kit (JDK) 17以上
- IDE（IntelliJ IDEA, Eclipse, VS Codeなど）
- Gradle（ビルドツール）

### JDKのインストール

macOSの場合：
```bash
# Homebrewを使用してインストール
brew install openjdk@17
```

### IDEのセットアップ

IntelliJ IDEAの場合：
1. [IntelliJ IDEA](https://www.jetbrains.com/idea/download/)をダウンロードしてインストール
2. Spring Bootプラグインをインストール

## 2. プロジェクトの作成

### Spring Initializrを使用する方法

1. [Spring Initializr](https://start.spring.io/)にアクセス
2. 以下の設定を選択：
   - Project: Gradle
   - Language: Java
   - Spring Boot: 3.2.x
   - Group: com.example
   - Artifact: hello-world
   - Dependencies: Spring Web

### 手動でプロジェクトを作成する場合

`build.gradle`の内容：

```gradle
plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.3'
    id 'io.spring.dependency-management' version '1.1.4'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '17'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
    useJUnitPlatform()
}
```

`settings.gradle`の内容：

```gradle
rootProject.name = 'hello-world'
```

## 3. アプリケーションの実装

### メインアプリケーションクラス

```java
package com.example.helloworld;

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);
    }
}
```

### Hello Worldコントローラーの実装

```java
package com.example.helloworld.controller;

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

@RestController
public class HelloController {
    
    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
    
    @GetMapping("/hello/{name}")
    public String helloWithName(@PathVariable String name) {
        return String.format("Hello, %s!", name);
    }
}
```

### アプリケーション設定

`src/main/resources/application.yml`：

```yaml
server:
  port: 8080

spring:
  application:
    name: hello-world
```

## 4. アプリケーションの実行

### コマンドラインから実行

```bash
# Gradleの場合
./gradlew bootRun
```

### IDEから実行

1. `HelloWorldApplication`クラスを開く
2. メインメソッドの横にある実行ボタンをクリック

## 5. APIのテスト

### curlを使用したテスト

```bash
# 基本的なHello World
curl http://localhost:8080/hello

# 名前付きのHello World
curl http://localhost:8080/hello/Spring
```

### ブラウザでテスト

1. ブラウザを開く
2. 以下のURLにアクセス：
   - http://localhost:8080/hello
   - http://localhost:8080/hello/Spring

## 6. テストの実装

```java
package com.example.helloworld.controller;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
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
@AutoConfigureMockMvc
public class HelloControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void shouldReturnHelloWorld() throws Exception {
        mockMvc.perform(get("/hello"))
                .andExpect(status().isOk())
                .andExpect(content().string("Hello, World!"));
    }

    @Test
    public void shouldReturnHelloWithName() throws Exception {
        mockMvc.perform(get("/hello/Spring"))
                .andExpect(status().isOk())
                .andExpect(content().string("Hello, Spring!"));
    }
}
```

## まとめ

この記事では、以下の内容について説明しました：

1. 開発環境のセットアップ
2. Spring Bootプロジェクトの作成
3. Hello World APIの実装
4. アプリケーションの実行
5. APIのテスト
6. テストの実装

これで基本的なSpring Bootアプリケーションの作成と実行ができるようになりました。次のステップとして、データベースの利用やセキュリティの実装など、より高度な機能を追加することができます。

## 参考資料

- [Spring Boot公式ドキュメント](https://spring.io/projects/spring-boot)
- [Spring Initializr](https://start.spring.io/)
- [Spring Boot Reference Guide](https://docs.spring.io/spring-boot/docs/current/reference/html/)
- [Gradle公式ドキュメント](https://gradle.org/documentation/)