はい、承知いたしました。STS(Spring Tool Suite)を使用してSpring Bootの開発環境を構築し、サンプルアプリケーションを作成するまでの詳細な手順を解説する記事を作成します。
STSで始めるSpring Boot:開発環境構築からサンプルアプリ作成まで
Spring Bootは、スタンドアロンで実行可能な、プロダクションレベルのSpringアプリケーションを最小限の設定で容易に作成できるフレームワークです。STS(Spring Tool Suite)は、Spring Boot開発を支援するために設計されたEclipseベースのIDEです。この記事では、STSのインストールから環境構築、そして簡単なサンプルアプリケーションの作成までをステップバイステップで解説します。
1. STSのインストール
まず、Spring Boot開発の強力な味方であるSTSをインストールしましょう。STSはEclipseをベースにしているため、Java Development Kit (JDK) が事前にインストールされている必要があります。
1.1 JDKのインストール
JDKがインストールされていない場合は、以下の手順でインストールしてください。
- Java SE Development Kitのダウンロード: OracleのウェブサイトからJDKをダウンロードします。https://www.oracle.com/java/technologies/javase-downloads.html
- JDKのインストール: ダウンロードしたインストーラを実行し、指示に従ってJDKをインストールします。
-
環境変数の設定:
JAVA_HOME
環境変数をJDKのインストールディレクトリに設定します。また、PATH
環境変数に%JAVA_HOME%\bin
を追加します。- Windowsの場合: システム環境変数の設定画面で、
JAVA_HOME
を作成し、JDKのインストールディレクトリ(例:C:\Program Files\Java\jdk1.8.0_291
)を設定します。PATH
変数に;%JAVA_HOME%\bin
を追加します。 -
macOS/Linuxの場合:
.bash_profile
または.zshrc
ファイルに以下の行を追加します。bash
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME/bin(JDKのバージョンとインストールディレクトリは、実際にインストールしたものに合わせてください。)
- Windowsの場合: システム環境変数の設定画面で、
-
動作確認: コマンドプロンプトまたはターミナルで
java -version
と入力し、JDKのバージョン情報が表示されることを確認します。
1.2 STSのダウンロードとインストール
STSは以下の手順でダウンロードし、インストールします。
- STSのダウンロード: SpringのウェブサイトからSTSをダウンロードします。https://spring.io/tools STSは、プラットフォーム(Windows、macOS、Linux)に合わせて提供されています。
- STSの解凍: ダウンロードしたZIPファイルを任意のディレクトリに解凍します。インストールは不要で、解凍したディレクトリがそのままSTSのインストールディレクトリとなります。
- STSの起動: 解凍したディレクトリ内の
STS.exe
(Windows) またはSTS
(macOS/Linux) を実行します。
1.3 STSの初期設定
STSを初めて起動すると、ワークスペースの選択画面が表示されます。ワークスペースは、プロジェクトのソースコードや設定ファイルなどを保存する場所です。
- ワークスペースの選択: デフォルトのワークスペースを使用するか、新しいワークスペースを作成して選択します。
- Welcome画面: STSのWelcome画面が表示されます。この画面から、新しいプロジェクトの作成や既存プロジェクトのインポートなどが行えます。
2. Spring Bootプロジェクトの作成
STSが起動したら、いよいよSpring Bootプロジェクトを作成します。
2.1 新規Spring Starterプロジェクトの作成
- File > New > Spring Starter Project: メニューから
File > New > Spring Starter Project
を選択します。 -
New Spring Starter Projectウィザード: 次のウィザード画面で、プロジェクトの設定を行います。
- Name: プロジェクト名を入力します (例:
hello-spring-boot
)。 - Type:
Maven Project
またはGradle Project
を選択します。MavenはApacheによって提供されるプロジェクト管理ツールであり、Gradleはより柔軟で強力なビルドツールです。どちらを選択しても構いませんが、この記事ではMavenを前提とします。 - Packaging:
Jar
を選択します。Spring Bootアプリケーションは通常、実行可能なJARファイルとしてパッケージングされます。 - Java Version: 使用するJavaのバージョンを選択します。
- Group: グループIDを入力します (例:
com.example
)。 - Artifact: アーティファクトIDを入力します (プロジェクト名と同じでも構いません)。
- Version: バージョンを指定します (デフォルトのままで構いません)。
- Description: プロジェクトの説明を入力します。
- Package: パッケージ名を入力します (例:
com.example.hello
)。
- Name: プロジェクト名を入力します (例:
-
Dependenciesの選択: 次の画面で、プロジェクトに必要な依存関係を選択します。ここでは、以下の依存関係を選択します。
- Web: Spring Web
- Thymeleaf: Thymeleaf (テンプレートエンジン)
- Spring Data JPA: Spring Data JPA (データベースアクセスを簡素化)
- H2 Database: H2 Database (インメモリデータベース)
- Spring Boot DevTools: Spring Boot DevTools (開発支援ツール)
Dependenciesの説明:
- Spring Web: RESTful Webサービスを構築するための基本的な依存関係です。
- Thymeleaf: サーバーサイドJavaテンプレートエンジンです。Webアプリケーションのビュー層を構築するために使用されます。
- Spring Data JPA: Java Persistence API(JPA)を使用してデータベースアクセスを簡素化します。
- H2 Database: 組み込み可能なインメモリデータベースです。開発やテストに便利です。
- Spring Boot DevTools: 開発時のライブリロードや自動再起動など、開発を効率化するためのツールを提供します。
-
Finish: 設定が完了したら、
Finish
ボタンをクリックします。STSがプロジェクトを自動的に生成し、必要な依存関係をダウンロードします。
3. サンプルアプリケーションの作成
Spring Bootプロジェクトが作成されたら、簡単なWebアプリケーションを作成してみましょう。
3.1 コントローラの作成
- ソースフォルダの作成:
src/main/java
フォルダの下に、コントローラクラスを格納するパッケージを作成します (例:com.example.hello.controller
)。 - コントローラクラスの作成: 作成したパッケージに、新しいJavaクラスを作成します (例:
HelloController.java
)。 -
コントローラクラスの記述: 作成したクラスに、以下のコードを追加します。
“`java
package com.example.hello.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;@Controller
public class HelloController {@GetMapping("/hello") public String hello(@RequestParam(name="name", required=false, defaultValue="World") String name, Model model) { model.addAttribute("name", name); return "hello"; }
}
“`コードの説明:
@Controller
: このクラスがSpring MVCのコントローラであることを示します。@GetMapping("/hello")
:/hello
というURLへのGETリクエストをこのメソッドで処理することを示します。@RequestParam(name="name", required=false, defaultValue="World") String name
: リクエストパラメータname
を取得します。required=false
はパラメータが必須でないことを、defaultValue="World"
はパラメータが指定されなかった場合のデフォルト値を指定します。Model model
: ビューにデータを渡すためのオブジェクトです。model.addAttribute("name", name)
:name
という名前で、name
変数の値をビューに渡します。return "hello"
:hello.html
という名前のビューを返します。Thymeleafがこのビューを処理し、HTMLを生成します。
3.2 ビューの作成
- テンプレートフォルダの作成:
src/main/resources/templates
フォルダを作成します。 - ビューファイルの作成: 作成したフォルダに、新しいHTMLファイルを作成します (例:
hello.html
)。 -
ビューファイルの記述: 作成したファイルに、以下のコードを追加します。
html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello Spring Boot</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>コードの説明:
<html xmlns:th="http://www.thymeleaf.org">
: Thymeleafを使用することを示します。<p th:text="'Hello, ' + ${name} + '!'" />
:name
変数の値をHTMLに埋め込みます。${name}
は、コントローラから渡されたname
の値を参照します。
3.3 アプリケーションの実行
- アプリケーションの実行: STSの
Project Explorer
ビューで、プロジェクトを右クリックし、Run As > Spring Boot App
を選択します。 - アプリケーションの確認: ブラウザで
http://localhost:8080/hello
にアクセスします。”Hello, World!” と表示されるはずです。 - パラメータの指定: ブラウザで
http://localhost:8080/hello?name=YourName
にアクセスします。”Hello, YourName!” と表示されるはずです。
4. データベース連携
次に、データベースと連携する簡単な例を見てみましょう。ここでは、H2 Databaseを使用します。
4.1 Entityの作成
- パッケージの作成:
src/main/java
フォルダの下に、エンティティクラスを格納するパッケージを作成します (例:com.example.hello.entity
)。 - エンティティクラスの作成: 作成したパッケージに、新しいJavaクラスを作成します (例:
Message.java
)。 -
エンティティクラスの記述: 作成したクラスに、以下のコードを追加します。
“`java
package com.example.hello.entity;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;@Entity
public class Message {@Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id; private String text; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getText() { return text; } public void setText(String text) { this.text = text; }
}
“`コードの説明:
@Entity
: このクラスがJPAのエンティティであることを示します。@Id
:id
フィールドが主キーであることを示します。@GeneratedValue(strategy=GenerationType.AUTO)
: 主キーの自動生成戦略を指定します。
4.2 Repositoryの作成
- パッケージの作成:
src/main/java
フォルダの下に、リポジトリインタフェースを格納するパッケージを作成します (例:com.example.hello.repository
)。 - リポジトリインタフェースの作成: 作成したパッケージに、新しいインタフェースを作成します (例:
MessageRepository.java
)。 -
リポジトリインタフェースの記述: 作成したインタフェースに、以下のコードを追加します。
“`java
package com.example.hello.repository;import com.example.hello.entity.Message;
import org.springframework.data.jpa.repository.JpaRepository;public interface MessageRepository extends JpaRepository
{
}
“`コードの説明:
JpaRepository<Message, Long>
: Spring Data JPAが提供するリポジトリインタフェースを継承します。これにより、基本的なCRUD操作が自動的に利用できるようになります。
4.3 コントローラの修正
-
コントローラクラスの修正:
HelloController.java
を以下のように修正します。“`java
package com.example.hello.controller;import com.example.hello.entity.Message;
import com.example.hello.repository.MessageRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;import java.util.List;
@Controller
public class HelloController {@Autowired private MessageRepository messageRepository; @GetMapping("/hello") public String hello(@RequestParam(name="name", required=false, defaultValue="World") String name, Model model) { model.addAttribute("name", name); return "hello"; } @GetMapping("/messages") public String messages(Model model) { List<Message> messages = messageRepository.findAll(); model.addAttribute("messages", messages); return "messages"; } @PostMapping("/messages") public String addMessage(@RequestParam("text") String text) { Message message = new Message(); message.setText(text); messageRepository.save(message); return "redirect:/messages"; }
}
“`コードの説明:
@Autowired private MessageRepository messageRepository
:MessageRepository
をDI(Dependency Injection)します。Springが自動的にMessageRepository
のインスタンスを注入します。@GetMapping("/messages")
:/messages
というURLへのGETリクエストをこのメソッドで処理します。データベースからすべてのメッセージを取得し、ビューに渡します。@PostMapping("/messages")
:/messages
というURLへのPOSTリクエストをこのメソッドで処理します。新しいメッセージをデータベースに保存し、/messages
にリダイレクトします。
4.4 ビューの作成
- ビューファイルの作成:
src/main/resources/templates
フォルダに、新しいHTMLファイルを作成します (例:messages.html
)。 -
ビューファイルの記述: 作成したファイルに、以下のコードを追加します。
html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Messages</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Messages</h1>
<ul>
<li th:each="message : ${messages}" th:text="${message.text}" />
</ul>
<form action="/messages" method="post">
<input type="text" name="text" />
<button type="submit">Add Message</button>
</form>
</body>
</html>コードの説明:
th:each="message : ${messages}"
:messages
リストの各要素を順番にmessage
変数に格納します。th:text="${message.text}"
:message
オブジェクトのtext
フィールドの値を表示します。<form action="/messages" method="post">
: 新しいメッセージを送信するためのフォームを作成します。
4.5 アプリケーションの再実行
- アプリケーションの再実行: STSでアプリケーションを再実行します。
- アプリケーションの確認: ブラウザで
http://localhost:8080/messages
にアクセスします。メッセージが表示され、フォームから新しいメッセージを追加できるはずです。
5. Spring Boot DevTools の活用
Spring Boot DevTools は、開発時に便利な機能を提供します。
- 自動再起動: ソースコードを変更すると、自動的にアプリケーションが再起動されます。
- ライブリロード: Thymeleafテンプレートなどの静的リソースを変更すると、ブラウザが自動的にリロードされます。
- データベースの自動設定: H2 Database などの組み込みデータベースを使用する場合、自動的にデータベースが設定されます。
これらの機能を活用することで、開発効率を大幅に向上させることができます。
6. まとめ
この記事では、STSを使用してSpring Bootの開発環境を構築し、簡単なサンプルアプリケーションを作成する方法を解説しました。
- STSのインストール
- Spring Bootプロジェクトの作成
- コントローラとビューの作成
- データベース連携
- Spring Boot DevToolsの活用
これらのステップに従うことで、Spring Bootアプリケーション開発の基礎を習得することができます。さらに、Spring Bootのドキュメントやサンプルコードを参照して、より高度な機能や技術を学ぶことをお勧めします。Spring Bootは非常に強力で柔軟なフレームワークであり、Webアプリケーション開発を効率化するための多くの機能を提供しています。
さらなる学習:
- Spring Boot ドキュメント: https://spring.io/projects/spring-boot
- Spring Initializr: https://start.spring.io/ Spring Bootプロジェクトの初期設定をWeb上で簡単に作成できます。
- Spring Guides: https://spring.io/guides 様々なSpring技術に関するガイドが提供されています。