今年、弊社「株式会社こだわり」では初めてとなる新卒採用を実施いたしました。 それに伴い、採用した新人にどのような研修を行うか?が大きな課題となりました。
自分たちでゼロから全て作成するという方法もありますが、世の中には既に初学者向けの評価が高い書籍が沢山存在します。 良い本が沢山あるのだから、活用しない手はない!!ということで評価の高い初学者向けの技術書を活用する方針を取りました。
弊社に引き合いが多い分野が「Webアプリケーションのバックエンドエンジニア」となるためその方向性で書籍を選定しました。 そのうちの1冊がこちらになります。
書籍紹介
弊社に引き合いがある「Webアプリケーションのバックエンド」で案件が豊富にある技術スタックは「Java + Spring Boot」になります。
そのため、新人研修で教える技術を以下に定めて書籍を探していました。
これらの技術に合致する初学者向けの書籍として本書は非常にお勧めできます。
本書のお勧めしたい点
- サンプルコードを中心とした実装ベースの書籍であり研修とマッチする。
- 実装に対して詳細な解説があり分かりやすい。
- 説明の裏付けとして公式ドキュメントを重視している。
- 実装に複数の方法がある場合どれが良いか理由と合わせて記載されている。
- Spring Boot 3に対応している。本書以外はSpring Boot 2対応の書籍が多い。
- Spring Web MVCとThymeleafを学ぶことができMVCの概念を理解できる。
- Spring Data JPAの基本的な知識とCRUD操作を取り扱っている。
- Spring Testを用いたJUnitによる単体テスト、MockMvcによるE2Eテストを取り扱っている。
新人エンジニアが身に付けると良い技術や概念が本書にギュッと詰まっています。 これからSpring Bootを触る方は経験年数に関係なく全員が本書を読んだ方が良いと感じるほどに素晴らしい書籍です。
ただし、本書ではWebアプリケーションには付き物である「Session」と「Cookie」に関する説明がありません。 そのため「Session」と「Cookie」に関しては別途資料を作成して研修を行いました。
本書の応用編に当たる以下の書籍では「RestAPI」を取り扱っています。 最近はWebアプリケーションも「SPA + RestAPI」が増えておりますので、入門書で「Session」を取り扱わないのも時代の流れなのかもしれませんね。
注意点
とても良い書籍ですが注意点もありまして、本書は「Java、HTML、CSS、HTTP」の基本的な技術を抑えていることが前提となっています。 そのため、未経験で本当に何も知らない人が本書から学習を始めるのはかなり難しいでしょう。
弊社の新人研修でも、「Java、HTML、CSS、HTTP、Webブラウザ、Webアプリケーション」の研修を行ってから本書を用いたバックエンドの研修に入りました。
本書の構成
このうち、実際に研修で利用したのは「3章、5章、6章、7章、10章」になります。
取り扱った内容
3章 Spring Bootとは
Spring Bootで起動したWebアプリで「Hello World!」
Spring Bootを利用したプロジェクトの作り方、Spring Bootを利用して起動したWebアプリケーションで「Hello World」の表示を行います。 新しい技術を身に付ける際には「Hello World」から!!これはもうお約束中のお約束ですね!!
5章 Spring MVC
Spring Web MVCを用いたWebアプリケーション
本章ではデータをモデルクラスの形で取り扱う方法を学びます。 リクエストで送信されたパラメータをモデルで受け取り、サーバサイド処理の結果レスポンスとして返すデータのモデルをViewに渡します。 このように、Model、View、Controllerを自分で実装してMVCアーキテクチャに則ったWebアプリを実装します。
6章 Spring Data JPA
Spring Data JPAを利用したDBアクセス
DBのテーブルに対応するモデルを作成して「@Entityアノテーション」や、エンティティに指定するアノテーションを利用してエンティティクラスからテーブルを作成します。 また、併せてバリデーションを指定するアノテーションを利用することで、エンティティの定義を制御する方法や、入力値のバリデーションチェックを行う方法を学びます。 本書ではJPAを利用した基本的なCRUD操作を一通り実装します。
しかし、実務で利用する「ロングトランザクションにおける楽観ロック」や、「入力値による動的SQLの作成」は取り扱っていません。 そのため、これらに関しては本書が終わった後に別途研修を追加で行いました。
7章 IoCコンテナとは
IoCコンテナの概念と「@Scopeアノテーション」を利用したBeanの生存期間
スコープを設定することでDIされたインスタンスがどのタイミングで生成されるかを制御できます。 明示的にスコープを指定しない場合、スコープがsingletonになり単一のインスタンスとなります。 このようなBeanには状態を持たせない!というのは大事ですね。
10章 Spring Test
JUnitを利用した単体テストとMockMvcを利用したE2Eテスト
CI/CDをちゃんと回して品質を維持するためにも、JUnitとMockMvcを利用したテストは非常に役に立ちます。 最近はテストコードを作らない現場はほぼないと思いますので新人研修でもテストコードに関する研修は大事だと思います。
割愛した章
4章 Spring Initializrとは
Spring Initializrは実務であれば環境構築手順書があることが殆どで、自分で考えて実施することはほぼ無いため飛ばしました。
8章 AOPとは
AOPはトランザクション管理、ロギングなど利用することが多い技術です。 しかし、本当にAOPと向き合う必要があるのはフレームワークをどのように利用していくかというコードベースを考えるタイミングです。 そう考えると、既にあるコードベースの上で実装を行う新人にはちょっと過剰な詰め込みになるかな?と思い割愛しました。
9章 Spring Security
Spring Securityを利用した認証、認可の実装方法を取り扱います。 しかし、新人が認証、認可というセキュリティに直結する部分をいきなり任されることは考えにくいでしょう。 また、認証済みユーザを利用する実装は参考となる既存コードが豊富にあることが予想できます。 であれば、それ以外の部分に時間を割いた方が良いと判断しました。
総括
Spring Bootを始めたい、触りたいと思っている人全員にお勧めできる良書です!!
これだけ内容が良いにも関わらず、「Amazon Kindle版の値段はたったの980円」ですし、「Kindle unlimitedで無料」です。
読んでいて特に良いと思った点は「公式ドキュメントをとても重視している」ことです。
調べ物で検索をした際、現在の検索エンジンの仕様では、何度も閲覧されてきた古いやり方が上位に出てくることが多いです。 こんな時、ちゃんと公式ドキュメントを読んで情報の裏取りをすれば、古くて非推奨となっている方法をそのまま踏襲してしまうことを予防できます。
同様に、公式ではない有用なハックの方法が世の中には沢山あり、ハックしなくては実現できないことも多々あります。 しかし、まずは公式が提示する方法の中で解決策を探ることがとても大事だと思います。 せっかく公式が方法を用意していても、それを利用せず安易にハックしてしまうとバージョンアップが大変になってしまいます。
公式が作成しているドキュメントが、この世界で最も信頼できるドキュメントであるはずです。 だから、公式ドキュメントを重視している本書は非常に信頼できます。