SpringでWebアプリを開発できるようになるまでの勉強内容を振り返ってみた

# はじめに

こんにちは。がじぇ（@shogidemo）と申します。

Springフレームワーク（以降、Spring）によるWebアプリ開発を学び始めて約8ヶ月、独力でWebアプリを開発することができるまでになり、学習も一区切りが付きました。
この記事では、私が学んだこと、使った教材、そして学びの過程での気づきを共有します。
同じようにSpringを学ぼうとしている方の参考になったら嬉しいです。

:::note
私が学んできたのはReactやVue.jsなどSPA（シングルページアプリケーション）のいわゆるモダンなWeb技術ではなく、JSPやThymeleaf等のMPA（マルチページアプリケーション）と呼ばれる比較的古いWeb技術です。
モダンな技術も魅力的ですが、世の中のシステムはモダンな技術だけで動いているわけではないため、まだまだ学ぶ価値があると考えています。
:::

# 学んできた技術スタック

学んできた技術スタックを分類すると下記の３つです。

・Web（HTMLやCSS、HTTP等）
・Java（プログラミング言語）
・Spring（Webアプリのバックエンドを開発するためのフレームワーク）

それぞれの技術スタックで下記の書籍やサイトを参考にしました。
| 技術スタック | 教材 |
|---|---|
| Web  | ・[とほほのWWW入門の「Webページ作成入門」](https://www.tohoho-web.com/wwwbeg.htm) <br> ・[プロになるためのWeb技術徹底入門]()  |
| Java | ・[スッキリわかるJava入門 第4版](https://amzn.asia/d/17f7Rv0)  |
| Spring  | ・[プロになるためのSpring入門ーーゼロからの開発力養成講座](https://amzn.asia/d/4ScNH3j) <br> ・[TERASOLUNA Server Framework for Java (5.x) Development Guideline](https://terasolunaorg.github.io/guideline/current/ja/)|

## Web
Webアプリとは何かもよくわかっていなかった状態からのスタートだったので、まずは基礎的な部分から学ばなければいきたいと考え、下記のサイトでHTMLやCSSについて学びました。

### とほほのWWW入門の「Webページ作成入門」
[とほほのWWW入門の「Webページ作成入門」](https://www.tohoho-web.com/wwwbeg.htm)
<img width="600" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576568/ec5d32e4-ba1c-dfdd-96fd-00a4ced4ee2e.png">


ホームページを作りながらHTMLやCSSについて学ぶことができるサイトです。
Webページの基本構造とスタイリングの重要性を学ぶことができました。
こういったサイトが無料で公開されているってありがたいですね。

続けて読んだのがこちらの書籍です。

### 「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか

[「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか](https://amzn.asia/d/91pW3vI)
<img width="400" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576568/ca1188b9-ec6f-8dcb-6a2c-631c8c665952.png">

HTTP、Cookie、Webサーバなど、Web技術に関する基本的な用語・技術がわかりやすく説明されています。
2010年初版の書籍で内容は少し古いのですが、10年以上たった今でも有用な良書だと感じました。


## Java

続いてJavaです。Javaといえばこの書籍。

### スッキリわかるJava入門 第4版

[スッキリわかるJava入門 第4版](https://amzn.asia/d/17f7Rv0)
<img width="400" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576568/a08f0edc-f274-e67a-08f3-ff2e28749487.png">

Javaの言語仕様についての理解が深まりました。
文字列比較は「==」ではなく「String.equal()」を使う必要があるなど、知らなければ痛い目に合いそうなことがたくさんありました。

また、難しいイメージのオブジェクト指向についても、ゲームを題材にとてもわかりやすく学ぶことができました。

続いてがその実践編の書籍です。

### スッキリわかるJava入門 実践編 第3版
[スッキリわかるJava入門 実践編 第3版](https://amzn.asia/d/3IREqeh)
<img width="400" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576568/138acf24-e44b-73a6-8cd9-54544e5cb715.png">

Javaからファイルやデータベースにアクセスする方法など、タイトル通りの実践的な内容を学ぶことができました。

## Spring
最後にSpringです。
JavaでWebアプリを開発するためのフレームワークとして最も広く普及しているものだと思い、Springについて学ぶことにしました。

Spring関連の書籍は３冊読んだのですが、個人的には下記の書籍は一番よかったです。
### プロになるためのSpring入門ーーゼロからの開発力養成講座
[プロになるためのSpring入門ーーゼロからの開発力養成講座](https://amzn.asia/d/4ScNH3j)
<img width="400" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576568/66433872-ab19-7135-0fcc-98529c07327a.png">

Springを学ぶ上でDIなどの難しい概念がたくさん出てくるのですが、この書籍では初心者にもわかりやすいよう丁寧に解説されている印象を受けました。
また、2023年7月に出版されたばかりの書籍で、取り挙げているJavaやOSSのバージョンが新しい点も良かったです。

### TERASOLUNA Server

Springについて学ぶ上で「TERASOLUNA Server」も非常に参考になりました。（テラソルナと読みます）
[TERASOLUNA Server Framework for Java (5.x) Development Guideline](https://terasolunaorg.github.io/guideline/current/ja/)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576568/e1983da2-4b2a-0e9b-6d62-2c147418cfc9.png)

一見、Springとは無関係に見えますが、こちらはSpringをベースとしたOSSで、ほぼSpringと言っても過言ではないと思います。

ここのチュートリアルの難易度が丁度よく、取り組んで良かったと感じました。

# 最後に
Webアプリと一口に言っても学ぶべきことがたくさんあり、いざ勉強しようと思っても何から手を付けていいかわかりませんでしたが、基礎的なことから順番に学んでいくことで着実に力を付けてこれたと思います。
これからSpringやWebアプリについて学ぼうとしている人にとってこの記事が学びの一助になれば嬉しいです。
ここまで読んでいただきありがとうございました。