ちょっと話題の記事

書評「Spring Boot2 徹底活用」を読みました

私は普段から Spring Boot2 を使って仕事をしており、全てではないにせよそれなりにドキュメントやコードを読んでいるのですが、それでもこの本を読んでみて得た知見は大きかったなと思っています。「現場至上主義」という名に恥じない、現場のノウハウがたくさん詰まった本です。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

永遠の生魚おじさん、都元です。近年、自分の読書量が減ってしまったことに危機感を持ち、今年は本を読むぞ、という意気込みを持っています。ということを Facebook に投稿したところ、友達から Kindle Oasis を勧められてつい衝動買いしました。移動中や風呂では Kindle を活用し、家に居る時は溜まった紙の本を消化しようと思っています。

ということで本日は紙の本、実は昨年末から読んでいた「現場至上主義 Spring Boot2 徹底活用」を読み終えたのでご紹介したいと思います。

いきなり総評

私は普段から Spring Boot2 を使って仕事をしており、全てではないにせよそれなりにドキュメントやコードを読んでいるのですが、それでもこの本を読んでみて得た知見は大きかったなと思っています。「現場至上主義」という名に恥じない、現場のノウハウがたくさん詰まった本です。

自分自身、今までのいろいろな経験に基づいて、フレームワークやツールの使い方、アーキテクチャや構成管理などについて「こうすべき」という思想をそれなりに持っています。しかしそれはあくまでも自分が経験できたことだけに基づいているわけで、自分の関わっていない他所のプロジェクトは一体どんなやり方をしているのかな、というのは常に興味があります。恐らくこの本は、著者陣の属する株式会社ビッグツリーテクノロジー&コンサルティングさんが実際に活用している Spring Boot とその周辺に関する開発標準を整理して書籍化したものでしょう。とても興味深く拝見させていたきました。

Spring の機能だけではなく、Gradle, Flyway, Swagger などの周辺技術をはじめ、ソースコードの自動生成にまで触れた現場の開発ノウハウが詰まっていました。さらには Docker, Prometheus, Terraform にまで触れ、アプリケーション層のみならずインフラ (AWS) や運用を見据えた環境整備にも言及があるのが素晴らしいと思いました。

さすがに、この本を読めば「Spring Boot2 を使った開発完全に理解した」となるわけではなく、その他にも運用にはいろいろな工夫が必要なのは確かですが、Spring Boot2 でアプリケーションを作り、そして運用していく開発者には大きな助けになる一冊だと思います。

特によかったなと思う部分

サンプルアプリケーションの充実

本書で解説しているサンプルアプリケーションは、GitHub に上がっています。本文中では恐らく書面の都合で省略せざるを得なかった部分も、実際に動くコードとして確認できるようになっています。

このサンプルアプリケーションを見るだけでも、実は知らなかった機能や、参考にしたい事がいろいろありました。

Spring Security の追加レイヤー

個人的に Spring Security は特に深掘りしている分野です。本書では、その上にさらに柔軟な権限制御を行うようなレイヤーを乗せて工夫をこらしているのが印象的でした。まぁ、逆に言えばクセが強いwwとも言えますので、これをそのまま真似しようということにはならないと思います。が、ぜひ参考にはさせていただきたいと思いました。

コードジェネレーターの紹介

chapter 7 には、新規画面を追加する際に初期的に使うコードジェネレーターとその扱い方解説がありました。これについては、そこまで触れるか!すげー というのが素直な感想です。個人的にはコード生成というのはあまり好きではないのですが、やれば出来るということを示す意義は大きいと思います。

アプリケーション監視や無停止デプロイなどの運用解説

正直言えばもうぶっちゃけ Spring は関係ないんですけど、それでも開発したアプリケーションは運用することになります。結局実際どうすればいいんや、という部分がきっちりと解説してあるのは良いことです。

最新機能 WebFlux についての解説

ノンブロッキング IO 時代への対応として、最新の Spring WebFlux という機能を紹介しています。私自身、概要を押さえただけで実際に WebFlux のコードを書いたことはないので、この章は参考になりました。コレに基づいてすこしコードを書いてみたいと思っています。

その他 個人的に楽しんだ部分

  • 実は Developer tools や実行可能 Jar の機能を使ったことがないので、コレを機に少し試してみようと思っています。
  • Flyway のリピータブルマイグレーションという機能は知りませんでした。これも使いこなしたいですね。