諸事情で Spring Framework を学ぼうと思い始めてみた。1日目。
これまでのプログラミング経験が
- Python, Django: 2年ぐらい
- Salesforce: トータルで5年ぐらい
- JavaScript, React, Redux: 直近1年半ほど
みたいな感じだったので、Java については基本的な構文は知ってるもののビルドツールなどのエコシステムすらよくわからない状態からスタート。
やったこと
Spring Framework の全体像を知る
まずは公式ドキュメントを読んでみる。
https://spring.io/
Projects のページを見るとわかるが、Framework といいつつ Spring ○○ と名のつくプロジェクトが大量にあり、関係性やどれから学ぶべきなのかさっぱりわからない。
またこういうのはたいてい Getting Started なるチュートリアルが提供されているものだが、
Guides を見ても一番最初に読むべきものがわからない。困った。
というわけで日本語の解説サイトを検索し、このあたりに目を通す。
どちらも最初の方しか読んでないが、テックスコアの
およびクラスメソッドさんの連載記事の 第1回、第2回 あたりを読むと、おおよそ以下のようなことがわかる。
- Spring Framework は多数のモジュール(プロジェクト)からなるフレームワークであり、コアとなる機能は DI コンテナ
- DI: Dependency Injection。依存性の注入
- DI コンテナ機能のイメージ
- Spring を用いた DI の実現方法にはいくつかの種類がある。XML の設定ファイルを使う/アノテーションを使う など
Spring Boot の概要を知る
上に挙げたサイトではまだ、Spring Boot というプロジェクトが何を指しているのか見えてこない。
その割に公式サイトでは一番に出てくるので気になる。
というわけで今度は Spring Boot について調べ、以下のスライドにたどり着く。
これ見て Spring Boot が何たるかをなんとなく理解する。
特に
この図を見て Spring Framework 本体との関係を理解。
後半の Spring Boot の構成要素については一旦スキップ。
Gradle を学ぶ
次は Spring 公式サイトの Guides にある一番基本っぽいチュートリアル
Getting Started · Building an Application with Spring Boot
をやろうと思ったんだけど、冒頭で Gradle に詳しくなければこのモジュールを参考にするよう促されたのでまずはこっち。
Gradle や Ant, Maven などの名前は聞いたことがあって、ビルドツールということは知っていた。
のでフロントエンドで言う webpack とか gulp 的な位置づけかなと思ってたんだけど、どうやら依存パッケージの管理もやるみたいなので npm/yarn ぽい役割も兼ねているのかな、ぐらいの理解。
公式ガイドの Getting Started · Building an Application with Spring Boot をやる
ようやく Spring Framework のサンプルコードを書いてみる。
このモジュールも別に「まずこれからやるべき」と明記されてるわけではなく、 https://spring.io/guides に並んでいる膨大なモジュールの中から一番基本っぽいものを選んだ。
結果、たしかに Spring を使って簡単なアプリケーションを作ることはできたが、おまじない的に出てくる各種アノテーションが何をやっているのかはさっぱりわからなかった。
一度 Spring Boot を使わずに素の Spring Framework を使ったコードも書いてみないと感覚がつかめないのかな...と感じる。
今回の学び
- Spring Framework の概要を学んだ
- Spring Framework は単一のフレームワークではなく、たくさんのモジュールで構成されている
- Spring Framework のコアとなる機能は DI コンテナ
- Spring Boot は従来の Spring Framework を使った開発に比べ、設定の簡略化やアプリケーション起動などよしなにやってくれる
- Gradle の基礎的な内容を学んだ
- Gradle はビルドツール。似たようなものに Ant, Maven がある
- 依存パッケージの管理もやってくれる
- Spring Boot を使ったアプリケーション構築チュートリアルを試した
次回やろうと思っているもの
Spring Guides の中ではタイトル的に一番とっつきやすそう&面白そうなので。ただし
- 冒頭の Spring Data REST が Spring Framework 全体の中でどういう位置づけなのかわかっていない
- Spring Boot を使うぽいので、結局またコアの仕組みの部分はブラックボックス化された状態から変わらなさそう
という懸念はある。
今回は見送った参考サイト
https://github.com/zaki-yama/spring-framework-study
の README にリンクをまとめている。
参考になりそうな書籍
Spring Framework の日本語書籍、調べるといくつか出てくるがどれも Amazon のレビューがイマイチで買うの躊躇している。。。
おすすめがあれば教えてください。
なるべく出版年が新しめのもので探した。
この3冊の中だと、最初に挙げたものがやや難解だけど内容としては良さげ。
また最近の WEB+DB PRESS で Spring Boot 特集があったらしい。
会社にあるはずだから読んでみよう。