自主的な勉強会として、Spring BootでWebアプリケーションを開発するYouTube動画を、数人の新人開発者と視聴しました。本記事は、その実施内容と私の感想をまとめたものです。
勉強会を企画した背景
ふだん、私はレガシーなWebアプリケーションの開発・保守をしています。一般に、そのようなアプリケーションを修正する際には、さまざまなところに気をつける必要があります。
たとえば、多くの処理を自前でコーディングする必要があります。また、何か問題にあたったときに、それをGoogle検索しても、解決のための情報はなかなか見つかりません。
そのようなアプリケーションを触ることに慣れてしまうと、それが普通の世界だと勘違いしてしまう可能性があると思いました。
そうではなく、世の中で広く使われているフレームワークを使っていれば、少なくわかりやすいコーディングで実装ができます。落とし穴にもはまりづらく、開発スピードを上げることができます。それは、結果として、プロダクトの競争力を高めることができるということを共有したかったです。
勉強会の流れ
1回あたり30分、5日間連続で開催をしました。
勉強会の流れは下記の通りです。
- みんなで動画を視聴する
- 疑問や不明点を質問する。それに対して、回答できる人が答える
- 時間が余っている場合は、主催者(一番理解している人)が確認のための質問を投げかける
- 終了後、各自が理解したことや感想をテキストにまとめ、ほかの人から見えるところに共有する
単に動画を視聴するだけでなく、その後に考えたり手を動かす時間を設けることで、できるだけ記憶に定着するようにしました。これは精緻化としての効果を狙ったものです。
視聴した動画について
ITを分かりやすく解説で公開されている、Spring Bootを使ったWebアプリケーションの解説動画を見ていきました。
1日目
Spring Boot, Thymeleaf, Spring Data JPAというフレームワークの基本についての動画です。
やはり、バックエンドとフロントエンドがちゃんと分離できていると保守性が高まりますね。また、テンプレートファイルを利用していると、XSS脆弱性などを埋め込みにくいというメリットがあります。
あとは、SQLやPreparedStatementを直接扱うのに比べ、Spring Data JPAの手軽さについて驚いた人が多かったのではないかな、と思います。
2日目
MyBatisというフレームワークの解説動画です。
Spring Data JPAはSQL文を書く必要がありませんでしたが、MyBatisではSQL文を直接書くようです。
どちらが好ましいかというのはあまりよくわかりませんでしたが、後から調べてみると一長一短のようですね。
3日目
これまで出てきた技術を使って、一覧画面を作成する動画です。
昨日と比べて新しい要素はあまり無かったので、復習としての位置付けになりました。
特に質問はありませんでしたが、派生して、動画中で使われていたCDN(Content Delivery Network)についての話をしました。
4日目
Bean Validationを使った入力値チェックの解説動画です。
入力値のチェックにif文を書かなくても良いというのは、新鮮味があるのではないでしょうか。
視聴後は、Validatedアノテーションについての補足をしました。また、正規表現の内容やJavaBeansの定義を確認しました。
5日目
これまでの総復習です。
動画中では、CrudRepository#findById(ID id)の返却値であるOptionalの扱い方がイマイチなように思いました。このため、「レコードが物理削除されている場合、詳細画面で適切なエラーメッセージを表示するにはどのように修正すればよいでしょうか?」という質問を投げかけました。
結果として、
- (ドキュメンテーションコメントに明記した上で、)nullを返す
- チェック例外を返す
-
Optional<User>
を返す
という3通りの解決策に触れることができました。
感想
まず、Spring Bootに関して、このような日本語の動画を製作された作者は素晴らしいと思いました。個人で運営されているようなのですが、短い動画にもかかわらず、とてもわかりやすかったです。
ただ、動画の存在を知っていても、一人だけだとなかなか重い腰が上がらないと思います。それを解決するために、勉強会という形式でみんなで視聴することで、楽しく学ぶことができました。
さらに、視聴後に疑問や不明点を確認し、メモをまとめることで、理解が深まったのではないかと思います。