【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-①イントロダクション-

JavaのフレームワークであるSpring Bootを使ってToDoアプリケーションを作成していきます。ToDoアプリケーションの作成を通じて、Javaアプリケーション全体で使う基本知識を整理していきます。

「Javaやhtml、SQLの基礎学習を1周終え、小規模なアプリケーションを作ってみたい人」や「Javaを扱うエンジニアとして少し経験を積んできたが知識の抜け漏れを確認したい人」が本稿をみたときに基本知識を理解できるような記載を意識し、必要な知識の言語化を図っていきます。

画面が遷移したり、登録してみたり動くものを作成してわくわくした体験をかけたらいいなと思います。さらに、動いたものを作って終わりでなく、例外処理や楽観ロックなどエラーを想定したコードも書いていきます。

# 何をするのか/しないのか
Todoアプリケーションの作成を行い、主にJavaを書くところに注力します。設計から実装までを対象範囲とします。ただしJunitの実装はスキップします。

また、webやJavaの基礎知識は触れません（基礎知識から記述すると膨大な量になってしまうので）。あくまでも、Todoアプリケーションを作成するのに、Javaと周辺知識で必要な知識を記載していきます。

そして、Javaの実装をメインで扱いたいため、素のhtmlやbooststrapの詳しい解説は省略します。ただ、Javaの記載に関連してthymeleafの記述は必要なので、扱っていきます。SQLについても、基本的な範囲でしか使わないので詳しくは扱いません。認証機能も見送ります。

## 作成するもの
TODOアプリケーションを作成します。TODOアプリケーションはタスク管理ツールのことなので、以下のようなことができるアプリケーションを作成します。

- タスクの登録
- タスクを一覧表示
- タスクやステータスを変更
- タスクの削除

一覧画面と登録画面のスクショを抜粋（今後のブログに他の画面のスクショを掲載します。）

一覧画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/605915/ca7ea567-0d1e-31ce-4ea4-e8970e4e4842.png)

登録画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/605915/9fd71984-95a1-6453-a472-04d9c8fba908.png)


# アーキテクト
続いて、TODOアプリケーションで使用するアーキテクトの紹介です。以下の構成で作成していきます。

| 項目 | 使用アーキテクト |解説|
|:-:|:-:|:-:|
| 言語  |  Java 17 |オブジェクト指向プログラミング言語であり、広く使用される。Javaは安定性と信頼性が高く、多くのプロジェクトで採用される。|
| フレームワーク  | Spring Boot  |Spring Frameworkを基盤としたフレームワーク。特徴は設定の簡素化と開発効率の向上です。簡潔な設定とデフォルトの設定を持つため、開発者はアプリケーションのビジネスロジックに集中できる。|
| ビルドツール  | Maven  |Mavenは、Javaプロジェクトのビルド、テスト、デプロイメントを自動化するツール。プロジェクト管理と依存関係管理が容易になる。pom.xmlという設定ファイルを使用し、プロジェクトの設定やライブラリの依存関係を管理する。|
| テンプレートエンジン  | Thymeleaf  |Thymeleafは、HTMLテンプレートを使用して動的なWebページを生成するためのJavaテンプレートエンジン。HTMLの構造と同じくらいシンプルであり、自然な感覚でテンプレートを記述できることが特徴。|
| ORM  |  MyBatis |MyBatisは、JavaアプリケーションとSQLデータベースの間でオブジェクトとSQL文のマッピングを行うORMフレームワーク。SQL文をXMLまたはアノテーションで定義し、Javaオブジェクトとデータベースの間の変換を自動化します。シンプルな設定と柔軟性があり、複雑なSQLクエリを扱うことができる。|
| SQL  |  Mysql |MySQLは、オープンソースのリレーショナルデータベース管理システム。高速で信頼性があり、柔軟なデータベース管理が可能。|

※本稿では、エディタはEclipseを使います。

# ブログの全体構成
TODOアプリケーションのブログの全体像です。この構成に沿って記載していきます。

1. イントロダクション
2. 設計
3. 実装方針と環境構築
4. テーブル作成と一覧機能の作成
5. 新規登録機能の作成
6. 変更機能の作成
7. 削除機能の実装
8. 戻る機能の実装
9. 例外処理の実装

＊

次の投稿では、設計をしていきましょう。

[【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-①イントロダクション-](https://qiita.com/aki_number16/items/4ce2c61297e6754928ce "【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-①イントロダクション-")
[【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-②設計-](https://qiita.com/aki_number16/items/9507e7f9477725e722cd "【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-②設計-")
[【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-③実装方針と環境構築-](https://qiita.com/aki_number16/items/79a514c5b8a70fbc41ac "【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-③実装方針と環境構築-")
[【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-④一覧機能の作成-](https://qiita.com/aki_number16/items/7cc7d4b522fd9a3d6dc8 "【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-④一覧機能の作成-")
[【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑤新規登録機能の作成-](https://qiita.com/aki_number16/items/bd4a559db587a502100e "【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑤新規登録機能の作成-")
[【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑥変更機能の作成-](https://qiita.com/aki_number16/items/554ed617fa1b314e794c "【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑥変更機能の作成-")
[【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑦削除機能の実装-](https://qiita.com/aki_number16/items/648cff45366445135000 "【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑦削除機能の実装-")
[【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑧戻る機能の実装-](https://qiita.com/aki_number16/items/548f1918830024df7de8 "【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑧戻る機能の実装-")
[【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑨例外処理の実装-](https://qiita.com/aki_number16/items/7ccad8e9805d58942eba "【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑨例外処理の実装-")

# 参考文献

Qiita Qiita(202③)「新人プログラマ応援特集！歴代いいね数TOP100」https://qiita.com/Qiita/items/1bd1a4c97bc390fa7cc5 2024年07月15日アクセス.

Qiita haruto167(2018)「新私からあなたへ 一人前のJavaエンジニアになるためのロードマップを送ろう」https://qiita.com/haruto167/items/5a784df032518277f4a0 2024年07月15日アクセス.

Developer Roadmaps「Java Developer」https://roadmap.sh/java　 2024年07月15日アクセス.

Spring Boot Reference Documentation
https://docs.spring.io/spring-boot/docs/3.2.0/reference/htmlsingle/#getting-started

spring initializr
https://start.spring.io/

mybatis REFERENCE DOCUMENTATION
https://mybatis.org/spring/ja/getting-started.html

ITを分かりやすく解説（2022）「MyBatis + SpringでWebアプリ（CRUD）を作成する」https://medium-company.com/mybatis-spring/　2024年07月15日アクセス.

hypertextcandy（2019）「Vue + Vue Router + Vuex + Laravelで写真共有アプリを作ろう (1) イントロダクション」https://www.hypertextcandy.com/vue-laravel-tutorial-introduction　2024年07月15日アクセス.

＊