42.7K Views
November 26, 24
スライド概要
Javaの入門書なり新人研修なりが終わった後に、現場でSpring Bootを使ってWebアプリが作れるようになるにはどうすればいいか? そこから更にステップアップして、チームを牽引するアーキテクトになるにはどうすればいいか? 研修講師や現場のリーダーをやってきた僕の経験を踏まえて、お伝えしていきます。
Java、Spring、IntelliJ IDEA
ゼロからSpringヒーローに なるまでの道筋 関ジャバ'24 11月度 2024年11月26日 多田真敏 1
このセッションについて ◆新人研修や入門書での学習が終わった段階から Springのあらゆる問題を解決できるSpringヒーローに なるためにはどのようレベルアップすればいいのか、 僕自身の経験も踏まえて解説します 2
自己紹介 出身は大阪ですが、 今日は関東から来ました! ◆多田真敏(@suke_masa) ◆JJUG・JSUGスタッフ ◆金融事業会社で 社内システムの内製化+AWS化 (ちょっとお休み中) ◆OSSドキュメントの和訳 ◆Thymeleaf・Resilience4j 3
弊社、JJUG CCCに出たってよ https://speakerdeck.com/lalha/20241027-dot-jjug-ccc-creditsaison 4
Springヒーローとは ◆Springを利用したフレームワーク設計ができる人 ◆Springに関するどんなトラブルも解決できる人 そのためには ◆Springの広範かつ深い知識が必要 ◆Springの公式ドキュメントやソースコードを読んで 調査できる能力が必要 5
Springヒーローへの道筋 ① レベル1: 指示通りに画面とクラスを作成できる ② レベル2: 要件から画面とクラスを作成できる 大半の人はここで終わる ③ レベル3: Springのアーキテクチャをざっくり説明できる ④ レベル4: Springのドキュメントを読んで説明できる ⑤ レベル5: Springのソースコードを読んで説明できる ⑥ レベル6: Springヒーロー! 6
Springヒーローへの道筋 ① レベル1: 指示通りに画面とクラスを作成できる ② レベル2: 要件から画面とクラスを作成できる ③ レベル3: Springのアーキテクチャをざっくり説明できる ④ レベル4: Springのドキュメントを読んで説明できる ⑤ レベル5: Springのソースコードを読んで説明できる ⑥ レベル6: Springヒーロー! 7
これができたらレベル1 ◆渡された設計書を基に実装できる ◆設計書には、作るべきクラスやメソッドが明記されている 8
レベル1になるには ◆新人研修の内容をしっかり復習する 大半の人は読み返すだけで終わる ◆テキストを読み返すだけでは不十分 ◆テキストを読まずに、全部の演習問題が解けるようになろう ◆学んだキーワードを1〜2文で説明できるようになろう ◆例:「Beanとは何ですか?」「コントローラーとは何ですか?」 9
宣伝 ◆レベル1になるための本を今書いてます! ◆来年春に出版予定 10
Springヒーローへの道筋 ① レベル1: 指示通りに画面とクラスを作成できる ② レベル2: 要件から画面とクラスを作成できる ③ レベル3: Springのアーキテクチャをざっくり説明できる ④ レベル4: Springのドキュメントを読んで説明できる ⑤ レベル5: Springのソースコードを読んで説明できる ⑥ レベル6: Springヒーロー! 11
これができたらレベル2 ◆ユーザーからの要件を読んで 「こんな画面・こんなクラス・こんなメソッドを作ればできる な」 とイメージする→設計書を書く ◆レベル1の段階では、これを他の誰かにやってもらっていた 12
レベル2になるには ◆小さなアプリをゼロから作ってみる ◆例:TODO管理、ブログ、社員管理、など ◆Spring Initializrで雛形作成 →その他の必要なライブラリを追加 →各ファイルの作成 を全部やる ◆これにより画面・コントローラー・サービス・リポジトリーを 作成する感覚を掴める 13
レベル2になるには ◆OCJ-P Silverを取得する ◆新人研修では学ばないレベルのJava文法を 身につけられる ◆現場での開発だけでなく、 後のレベルでSpringのソースコードを 読むのにも役立つ ※2024年11月現在では、Java 17 Goldに対 応する日本語書籍がなかったため、 あえてJava 11の書籍を紹介しています 14
Springヒーローへの道筋 ① レベル1: 指示通りに画面とクラスを作成できる ② レベル2: 要件から画面とクラスを作成できる ③ レベル3: Springのアーキテクチャをざっくり説明できる ④ レベル4: Springのドキュメントを読んで説明できる ⑤ レベル5: Springのソースコードを読んで説明できる ⑥ レベル6: Springヒーロー! 15
これができたらレベル3 ◆以下のプロダクトのアーキテクチャをざっくり説明できる ◆Spring DI ◆Spring AOP + トランザクション ◆Spring Test ◆Spring MVC ◆Spring Security 16
レベル3になるには ◆『プロになるためのSpring入門』 を読む ◆ハンズオンも必ずやる ◆Springヒーローを目指すなら、 この本の内容は全て理解しましょう 17
レベル3になるには ◆サーブレットを体験する ◆Spring MVC・Spring Security はサーブレットベース → これらの理解には サーブレットの知識が必須 ◆一通り手を動かしながらやってみましょ う 18
レベル3になるには ◆OCJ-P Goldを取得する ◆新人研修では学ばないレベルの Java標準APIを身につけられる ◆現場での開発だけでなく、 後のレベルでSpringのソースコードを 読むのにも役立つ ◆JDBCも学べる 19
Springヒーローへの道筋 ① レベル1: 指示通りに画面とクラスを作成できる ② レベル2: 要件から画面とクラスを作成できる ③ レベル3: Springのアーキテクチャをざっくり説明できる ④ レベル4: Springのドキュメントを読んで説明できる ⑤ レベル5: Springのソースコードを読んで説明できる ⑥ レベル6: Springヒーロー! 20
これができたらレベル4 ◆各Springプロダクトの公式ドキュメント+Javadocを 必要に応じて読んで、自分で活用したり人に説明したりできる 21
レベル4になるには ◆前提となる技術知識を学ぶ ◆公式ドキュメントやJavadocは、 これらの知識が前提として書かれてい る ◆HTTPとセキュリティは特に重要 ◆IT一般知識は、基本情報技術者試験の 科目Aで全単元80%以上正解を目指す 22
レベル4になるには ◆まずは知っているクラスのJavadocを読むのがおすすめ ◆英語版(公式) ◆https://docs.spring.io/spring-framework/docs/current/javadoc-api/ ◆日本語版(非公式) ◆https://spring.pleiades.io/spring-framework/docs/current/javadoc-api/ ◆上記から読んでいって、徐々に知らない範囲も読んでいく 23
Springヒーローへの道筋 ① レベル1: 指示通りに画面とクラスを作成できる ② レベル2: 要件から画面とクラスを作成できる ③ レベル3: Springのアーキテクチャをざっくり説明できる ④ レベル4: Springのドキュメントを読んで説明できる ⑤ レベル5: Springのソースコードを読んで説明できる ⑥ レベル6: Springヒーロー! 24
これができたらレベル5 ◆Springのソースコードを読んで理解し、説明できる 25
まず読むべきソースコード ◆Spring Bootの各種Auto Configurationクラス ◆spring-boot-autoconfigure.jar内 ◆Spring MVCのDispatcherServletクラス ◆Spring Securityの UsernamePasswordAuthenticationFilterクラスと AuthorizationFilterクラス 26
ソースコードを読むテクニック ◆デバッガで処理の流れを追う ◆読んだ部分はクラス図やシーケンス図に まとめる ◆手書き・パワポ・PlantUML・Mermaidなど、 ツールは何でもOK ◆書き残さないと忘れるw ◆SpringではGoFデザインパターンが ちょいちょい使われているので、 あらかじめ知っておくと読みやすい 27
リフレクション ◆クラスなどを扱うためのJava標準API ◆OCJ-Pでは範囲外 ◆Springでは多用されているので、 Springのソースコードを読むために 必須の知識 ◆Zennにまとめました ◆https://zenn.dev/masatoshi_tada/article s/7d18bdd0d84990 28
Springヒーローへの道筋 ① レベル1: 指示通りに画面とクラスを作成できる ② レベル2: 要件から画面とクラスを作成できる ③ レベル3: Springのアーキテクチャをざっくり説明できる ④ レベル4: Springのドキュメントを読んで説明できる ⑤ レベル5: Springのソースコードを読んで説明できる ⑥ レベル6: Springヒーロー! 29
Springヒーローになるには ◆あとは現場での実践あるのみ! ◆要件を実現するには、Springの機能をどう組み合わせたりカスタマイ ズしたりすればいいか、とにかく考えて実践する ◆一生懸命、数をこなす 30
持っておいてほしい習慣 ◆学んだ知識をアウトプットする ◆ブログを書く(非公開でOK)、社内研修やOJTを担当する、 コミュニティの勉強会で発表する、本を執筆する、など何でもOK ◆低レイヤー(ハードウェア・OS・ネットワーク)を学ぶ ◆Springに限らず、公式ドキュメントは低レイヤー知識が前提で書かれています ◆RDBを学ぶ ◆RDB設計とアプリケーション設計は表裏一体 ◆アプリをインフラに乗せる体験しておく ◆クラウドでもオンプレでもOK ◆ユーザーと話す ◆要件を引き出したり、改善案を出すのもプログラマーの仕事 31
最後のまとめ ◆Springヒーローになるには、Springの知識に加えて JavaやIT一般の知識も必要 ◆設計の素となる要件を引き出す・提案するのも仕事の1つ 32