【Spring Boot】Webアプリケーション作成の流れ(開発環境準備編)

# はじめに
　今回は、Spring Bootを使ってWebアプリケーションを作成する際の開発環境の準備について説明します。

# 開発環境の準備
### Spring Initializr
　Spring Initializrを使って、プロジェクトの雛形を作成します。これはSpring Bootでプロジェクトを始める際、ビルドツールや開発言語、依存性の設定などをGUIで設定できるサービスです。作成されたフォルダをIDEで開けばすぐに開発を始められるので便利ですね。
 
![スクリーンショット (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774406/8622cb6c-679f-320c-650f-8a11b88041f0.png)

https://start.spring.io/

　ビルドツールはMaven、Javaは最新の22を使用します。Javaのインストールについては割愛します。
　また、今回は簡易的な家計簿アプリを作成します。

　依存性は右上のDependenciesで設定します。(後からpop.xmlを編集すれば追加可能です。)今回は以下の5つを追加するので、軽く説明します。
+ Spring Web
　Webアプリケーションを作成する際に必要となるAPIを利用できます。Tomcatも内包していますので、Webアプリケーションの開発をする際には入れましょう。
+ Thymeleaf
　HTMLファイルをベースとしたテンプレートエンジンで、動的なWebページを効率的に生成することができます。JSPと違って、htmlファイルなのでフロントエンドの開発者で完結するため、チーム開発における利点が大きいです。

+ MySQL Driver
　データベースのドライバーを追加できます。今回は無料で利用できるMySQLを選択しました。他にもSQLServerやOracle、PostgreSQLなど一般的なデータベースのドライバーは選択できるようです。
+ JDBC API
　JDBCは、Javaでデータベースにアクセスするための標準APIです。データベースとの接続、データの操作、トランザクション処理などを行うことができます。
+ Lombok
LombokはJavaで煩雑なコードを解消してくれるライブラリです。getter/setterなどを省略できるのでコード整理と時短できる点で非常に便利です。今回紹介という形で一応入れましたが、なくても開発自体は可能です。

　以上でGENERATEボタンを押せば、ダウンロードフォルダにzipファイルが作成されます。

### IDEで開いてみる


　先ほどDLしたzipファイルを解凍してIDEで開いてみると、プロジェクトのひな形が作成されていることが確認できます。

![スクリーンショット (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774406/f2ed58c2-582b-89a7-48d4-da068869e08d.png)

　IDEは今回、InteliJ IDEAを指定しました。普段はEclipseで開発することが多いのですが、今回は経験のため普段使わないIDEを使用することにしました。

pop.xmlを開いてみると、Dependenciesで設定した項目がdependenciesタグ内に記述されていることがわかります。

```pop.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.2.5</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.test</groupId>
	<artifactId>houseHoldAccountBook</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>HouseHoldAccountBook</name>
	<description>家計簿アプリケーションデモ</description>
	<properties>
		<java.version>22</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</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-web</artifactId>
		</dependency>

		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>
```

### 実行環境の準備
　プログラムを実行するための実行環境の設定を行います。
 
　ファイル→プロジェクト構造からSDKと言語レベルを設定します。SDKは22,言語レベルは18までしかなかったので18に設定しました。

 ![スクリーンショット (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774406/81231041-5228-b720-f8cc-ad26c90ca5e9.png)


　次に、実行環境の設定をします。右上の環境の追加を押すと表示されるダイアログの左側から、アプリケーションを指定します。
　名前には任意の名前、ビルドと実行の下の欄はjavaのバージョンと、mainが記述された実行クラスを指定します。 今回はSpring Initializrを使用しているため、src/main/配下の指定したパッケージ内に、プロジェクト名Application.javaというファイルが作成されていますので、そちらのクラスを指定します。

 ![スクリーンショット (18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774406/34551125-9c1a-95f9-27f1-755fe4b08eca.png)

この状態で一度実行してみると以下のエラーが出ました。

``` 
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
```

これはデータソースの設定ができていないことを示すメッセージです。src/main/resources/application.propertiesを設定します。この設定は以下の記事を参考にさせていただきました。

https://qiita.com/niwasawa/items/024a01c502962eb90b1d



# まとめ
以上で開発環境の準備が整いました。次回は実際に機能を実装していきたいと思います。