日々常々

ふつうのプログラマがあたりまえにしたいこと。

「はじめてのSpring Boot」の感想とか #hajiboot

大晦日に家族のひんしゅくを買いながらはじめてのSpring Bootを読んでました。

2014年秋のJJUG CCC*1のハンズオンは気になりつつ参加しなかったわけですが、よく話も聞くし一度触っておかないとなーと思ってた。で、渡りに船のような本も出されてたりするので、よしこれは買うかーと。

買おうとしたら在庫切れになってたけど。

なんだかんだあって、届いたのが12/2。でも年末はほら、いろいろあるじゃない?で、読めてなくて。 でもなんか気になるし、気合い入れれば1日で行けるかなって思って実家に持って帰って読むことにしました。

進め方は、さらっと一通り読んだあと、再度頭から写経する感じでやりました。 本ではMavenを推奨している形でしたが、最初はGradleでやろうとしてみたんです。とりあえず公式のGettingStartedをやってみたりして。

一通り動かして満足、まぁいけるかな?と思ったけど……本ではMavenの機能(parentでmanagementとか、pluginとか)をもろに使ってた。この辺りってMavenからGradleに乗り換える時の鬼門だと思ってるところなので、素直にMavenでやることにしました。STSも紹介されてたけど、こっちはIDEAでいけないと困るのでそのまま突き進んだ感じです。

だいたい料理下手な人とか、最初からレシピ通りにやらずに変なアレンジして失敗するんですよね。アレと同じ感じで、とりあえず素振りするなら大筋は従っておいた方が良いですやね。

感想とか

良かったところをピックアップすると三点。

  • ページ数が少ない
  • Springをはじめもろもろの導入として
  • GitHubでのサポート

ページ数はこの薄い本によくここまで詰め込んだなーと。詰め込めるのがSpring Bootの力の証左でもあるんですが。 紹介しているものののバリエーションの多さ、それぞれ1つ1つステップを踏んで紹介しているにもかかわらず、175ページ。 にもかかわらず説明不足は感じなかった。……のは使われてる要素のそれぞれを触ったことがあるからだろうか?これは判断つかない。

Springなどの導入としては、ApplicationContext から getBean する非DIスタイルからinjectionに繋げ、 @Configuration の非XMLスタイルとcomponent-scanなどでだいたいDIコンテナのコアを紹介し、さらにSpring MVCやSpring Securityなどのキラーコンテンツに繋げる感じで一通り。 流れの中でSpringだけでなくH2 DatabaseやLombok、Thymeleaf、Flywayなどを使うなど盛りだくさんです。 これらのプロダクトは触ったことが無い人は是非触って貰いたいと思うものなのだけど、それぞれ単独で使うものでもないし、なかなか軽く試してもらうのも面倒なところがある。 それをこのページ数でできるようにしているあたりにSpring Bootの強みが見えますね。

サポートはGitHubで行われていて、全てのコードを手元で動作確認できるし、質問とかもissueに残る感じ。 サンプルコードがダウンロードできる技術書は珍しく無いけれど、GitHubでやるのは良いなーと。 お陰で今年の初プルリクエストがマージされて嬉しいです(コラ

あと、しれっとJava SE 8のlambdaとかを紹介してるところとかもニクいなと思いました。 ここは面倒で、最初からlambdaで写経しちゃったけど。

対して、あと一歩なところも無くは無いです。二点だけ挙げておきます。

1つ目が、ステップを踏んでいるのは良いのですが、途中、特にSpringSecurityが入るところとかは大きいステップになっていて、しばらく動かせないあたりは少々気になりました。小さく確認しながら進めるのが好きなので。

2つ目は、いくつかのタイミングで新しくプロジェクトを作る前提で進められているわけですが、どのタイミングでかわかりづらい点。拡張していく形なので、コマンドラインとWebとか明らかに分かれているのは別としても一続きに同じプロジェクトでやる前提にしたほうが良いのかなーと思ったりもしました。 本を読んでるだけじゃ気付き難いですが、実際動かしてみると首を傾げる場面もしばしば無くは無かったです。

でもこの辺りこそ写経の醍醐味であり、スタックトレースを読むのは理解も深まるし、実際使った時の耐障害性も上がるので、個人的にはマイナスでもないかな。どのクラスや設定が要るかとか考えるのも良い訓練ですし。

まとめ

一日で読める本です。各要素をある程度知っていれば一日で写経しきることもできます。 あまり知らなくても三日くらいじゃないかなー。

Spring Bootの強力さはSpringに馴染みがあればわかるのですが、強力すぎて何をしてくれるのかわかり辛そうとも思いました。 Spring知らない人にこの本を紹介して「ほらSpring Boot凄いっしょ!!」と言っても……たぶん伝わらない。まぁ単独でどうにかなるプロダクトでもないですしね。

個人的に一番インパクトあったのは、mainメソッドを実行すればオーケーってところ。 途中まで mvn spring-boot:run してたけど、気付いてからはもっぱらmain叩いてた。とても楽。

めっさ興味ある。

脈絡のないリンク