今年に入ってから、技術書の読書メモはブクログに残すようにしているのですが、本書については、よい意味で書きたいことが多く、ブクログの文字数では収まりそうになかったため、こちらに読書メモとして残しておこうと思います。
一応Javaエンジニアを生業にしていることもあり、Javaそのものや関連技術のキャッチアップはなるべく継続しています。とくにSpring関連は進歩が速いため、新しく出版される入門書には可能な限り目を通すようにしています。
また、最近の仕事ではJavaに関わる機会はあまりないのですが、新入社員教育に携わる中でSpringを扱う場面があり、最新事情をキャッチアップしておく必要がありました。
ここ数年で読んだSpring Bootの入門書では、『プロになるためのSpring入門』がかなりよかったのですが、出版が2023年ということもあり、少し情報が古くなってきています。そこで、何かよい本はないかと探していて見つけたのが本書です。
結論から言うと、ここ数年で読んだSpring関連書籍の中ではベストの一冊でした。Spring Bootにこれから入門したい人はもちろん、知識をアップデートしたい人にも、自信をもっておすすめできます。
補足しておくと、『プロになるためのSpring入門』も非常によい本です。とくにDI(依存性注入)など、Springを構成する基礎概念の解説については、これほど分かりやすい本も珍しいと思います。多少古くなったことを考慮しても、今なお読む価値のある一冊だと考えています。
本書のよいところは挙げ始めるときりがないのですが、手元のメモからいくつか紹介します。
まず印象的だったのが、開発環境としてPleiades All in One Eclipseを紹介している点です。Javaの環境構築は以前よりずいぶん簡単になったとはいえ、JAVA_HOMEやPATHなど、初心者がつまずきやすいポイントはまだ残っています。その点、Pleiades All in One Eclipseであれば、ダウンロードしてZIPファイルを展開するだけでSpring Bootの開発を始められるため、初心者にとても寄り添った選択だと感じました。
流行ということで、VS Codeを採用する選択肢もありますが、環境構築の段階でつまずき、肝心のSpring Bootを動かすところまでたどり着けない可能性もあります。その意味でも、この選択はとても好印象でした。
また、Spring Bootの入門書ではJPAを採用するケースが多いのですが、本書ではJPAをあえて扱わず、Spring JDBCのみを採用している点も個人的には高く評価しています。
もちろんJPAも優れた技術であり、いかにもフレームワークらしい便利さを味わえる技術だと思います。しかし、これは少し個人的な思想も入りますが、業務アプリケーションではSQLをきちんと書いたほうがよい場面も少なくありません。そのため、本書はかなり実務を意識して構成されているように感じました。
もちろん、ServiceクラスへJdbcClientを直接@Autowiredするような実装にはなっておらず、きちんとリポジトリパターンを採用しています。現代的なレイヤードアーキテクチャを意識した構成になっている点も好印象でした。
テストコードが充実している点も素晴らしいと思います。Springの入門書は、この部分が意外と省略されているものが少なくありません。しかし、実務でテストコードを書かないことはほとんどありませんから、しっかりページ数を割いて解説されているのは非常に好感が持てました。
また、学習の過程ではいくつかのWebアプリケーションを作成しますが、その中でREST APIの実装にもかなりのページ数が割かれています。この点も個人的には高く評価しています。
この手の入門書は、Thymeleafを使ったサーバーサイドレンダリングのWebアプリケーションを作って終わり、という構成が少なくありません。しかし実務では、Spring BootでREST APIを実装し、フロントエンドはVueやReact、あるいはモバイルアプリが担当するケースも多いため、REST APIをしっかり扱っている本書は非常に実践的だと感じました。
さらに、個人的にはSpring Securityについて知識をアップデートできたのも収穫でした。Spring Securityは設定方法や書き方が比較的よく変わる印象があるため、定期的に学び直す必要があると感じています。
ここまでよかった点をたくさん挙げてきましたが、不満があるとすれば、アプリケーションログについての解説が少しあってもよかったかな、という程度でしょうか。
また、Spring Batchについても触れられていればなおよかったとは思いますが、これは本書のコンセプトから少し外れてしまうので、ないものねだりかもしれません。
もう一つ細かい点を挙げると、falseの判定に== falseを使っている箇所がありました。これは単純に私の流儀との違いなのですが、例えば存在チェックで本書ではif (exists() == false) { ... }のような書き方が散見されます。個人的にはif (!exists()) { ... }と書きたい派です。もしかすると前者が最近のスタイルなのかもしれませんが、そのあたりは少し気になりました。
とはいえ、不満らしい不満はその程度です。
Spring Bootの機能を実践的な観点から一通り学びたい人、とくに実際に手を動かしながら写経形式で学習したい人にとって、本書は間違いなくおすすめできます。
今後、Spring Bootの入門書の定番の一冊になってもまったく不思議ではありません。それくらい完成度が高く、自信をもっておすすめできる一冊です。
