Spring Framework / Spring Bootに入門する人はまずこの資料を読もう！ #jsug

昨日2019年8月29日、日本Springユーザ会（JSUG）でSpring初心者向けの勉強会を開催しました。

https://jsug.doorkeeper.jp/events/95750

Springのコンテナ・DIからMVC・Security・Bootまで2時間で一気に学べる勉強会で、手前味噌ながらとても良い勉強会になったと思います。

勉強会の動画はYouTubeにアップされています -> https://www.youtube.com/watch?v=szqIWhPnzjM

# コンテナから紐解く本当のSpring入門（by @suke_masa）
スライド→https://speakerdeck.com/masatoshitada/understanding-spring-container

最初は僕の発表で、Springの根幹の機能である「コンテナ」について解説しています。Spring MVCをはじめ、他のSpringプロダクトのほとんどはこのコンテナの機能を活用して作られています。

僕もそうだったんですが、どの資料でもコンテナは「DI」と一緒に説明されることがほとんどです。しかし、「Springの根幹はコンテナであり、DIはそのイチ機能として解説したほうが分かりやすいのでは」と思い、今回新しく作ったのがこの資料です。

当日の発表では時間の関係上「③Dependency Injection」までしか解説していませんが、上記の資料にはそれより後の内容もすべて掲載しています。

特に最後の「⑤プロキシ」は知らない方も多い内容と思いますので、必読です！

# 図解で学ぶSpring MVC（by @otty_375）
スライド→https://speakerdeck.com/otty375/architecture-of-spring-mvc

次はいけさんによるSpring MVCのアーキテクチャ解説です。タイトル通り図が多く取り入れられていて、とても分かりやすい資料になっています。

アーキテクチャだけでなく、コントローラーやビューの作り方も解説されているので、本当に初心者におすすめです。

Spring MVCのアーキテクチャは、普通に機能を作る（＝コントローラーとビューのみ作る）だけなら、理解する必要はありません。しかし、何か共通的な処理を作りたいという場合は、しっかり理解しておく必要があります。

ぜひアーキテクチャを理解して、ワンランク上のエンジニアを目指しましょう！

# FORM認証で学ぶSpring Security（by @b1a9idps）
スライド→https://www.slideshare.net/RyosukeUchitate/formspring-security

次は内立さんによるSpring Securityの解説。ログイン画面からログインするFORM認証を例に、Spring Securityを使ったサンプルや、アーキテクチャの解説です。正直、やや難易度高めの資料になっています。

というのも、そもそもSpring Security自体が難しいんですよね・・・。アーキテクチャの複雑さは、数あるSpringプロダクトの中でも随一だと思います。

まずはアーキテクチャの部分は置いておいて、表面的な作り方だけでも押さえておくと良いでしょう。ソースコードも公開されていますので、ぜひ参考になさってください。→https://github.com/b1a9id/spring-security-sample-jsug-201908

アーキテクチャの理解にチャレンジするのは、後回しでも問題ありません。というか、Spring Securityのアーキテクチャを完全に理解している人ってどんだけいるのかな・・・😅

# 開発者のためのSpring Boot Actuator入門（by @shindo_ryo）
スライド→https://speakerdeck.com/rshindo/jsug-2019-08

最後に、進藤さんによるSpring Boot Actuatorの解説です。Actuatorは基本的には運用・監視のための機能なのですが、開発者にとっても役立つよ！という内容でした。

Actuatorは本当に多機能なので、単なる死活監視だけに使うのはもったいないです！アプリの再起動なしでログレベルを変更したり、コントローラーメソッドとURLの対応関係を一覧で見ることが出来たりします。

また、Spring Boot AdminというActuatorの結果をGUIで表示できるアプリもあります（進藤さん曰く、本番の運用ではなく開発時のみ使っているそうです）。

Actuatorを使いこなすと、色々と良いことがあるかもしれません！

# その他
今回の勉強会で紹介が無かった内容で、ぜひ初心者の方に読んでおいて資料をまとめておきます。

- データアクセス
    - [Java ORマッパー選定のポイント](https://www.slideshare.net/masatoshitada7/java-or-jsug)
    - [mybatis-spring-boot-starterの使い方](https://qiita.com/kazuki43zoo/items/ea79e206d7c2e990e478)
- Spring Bootそのもの
    - [Spring for Spring Boot](https://speakerdeck.com/masatoshitada/spring-for-spring-boot-number-jsug)
    - [Spring Boot 本当の理解ポイント](https://www.slideshare.net/masatoshitada7/spring-boot-jjug)
- Spring Framework 4と5の違い
    -  [ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説](https://www.slideshare.net/masatoshitada7/reactivespring-5-spring-boot-2)

# 市販書籍
前出の僕の資料にも載せてありますが、下記の2冊をおすすめします。

- 改訂新版Spring入門
    - https://gihyo.jp/book/2016/978-4-7741-8217-9
    - 最初に読むならこちら
- Spring徹底入門
    - https://www.shoeisha.co.jp/book/detail/9784798142470
    - リファレンス的な本

この2冊はとても良い本なのですがSpring 4.2時代のものなので、下記の記事で変更点などを把握しながら読んでいただいた方がいいと思います。

[令和時代に「Spring入門」「Spring徹底入門」を読むとき気をつけるべきN個のこと](https://qiita.com/suke_masa/items/392976749fce94a8ef1f)

他の本は、内容が古かったり品質的に問題があったりするので、おすすめしません。

# ブログ
- @makingさん
    - https://blog.ik.am
    - Pivotalの方。僕の師匠です。Spring徹底入門の著者の1人。
- @kazuki43zooさん
    - https://qiita.com/kazuki43zoo
    - Spring徹底入門の著者の1人。