
悩んでいるのはあなただけではありません
TODO アプリを作り終わったあなたは、次に何をすればいいのか途方にくれていませんか?
提案です。現実のアプリケーションで必ず実装される典型的な要件について、設計と実装ができるようになりましょう。
そのためのトレーニングを用意しました。

仕事はストリートファイトです
仕事では成果が求められます。ソフトウェアエンジニアであれば、ユーザーの要求をみたすバグのないアプリケーションをどれだけ早く開発できるか、そしてどれだけ安定的に運用できるかで成果が測られます。
仕事はストリートファイトです。とにかくビジネス課題をやっつける。技術課題に体当たりで取り組む。事前準備や練習とは無縁の世界です。今の実力で殴り合う世界です。

道場で型を学んでください
仕事を一生懸命やるだけではたして人は強くなれるでしょうか。ストリートファイト ―その場その場で殴り合い― だけで強くなれますか?体系的に知識を学んだり、実装の練習をしてみる場が必要だと思いませんか?
だからわたしたちは「道場」を作ることにしました。そこは、ストリートファイトで勝つために修行を積む場所です。仕事で活躍するための練習をする場所です。初心者が中級者に成長するための場所です。精密に計画されたトレーニングメニューに取り組むことで、ストリートファイトへ出掛けていくための自信を付ける場所です。

Spring 道場では、Spring 開発中級者を目指します。
実際のアプリケーション開発で必ずといっていいほど発生する典型的な要件を設計/実装できるようになるためのトレーニングをしましょう。
Spring 道場で学ぶことは..

Spring から MySQL に接続する
ローカル環境に Docker をインストールして MySQL Official Image を使って MySQL を用意します。その MySQL に Spring Boot アプリケーションから接続し、データベースから取得したデータを返すエンドポイントを実装しましょう。

セッションベース認証
API の認証を実装しましょう。JWT 認証は即時ログアウトに対応できないことを知っていますか? JWT認証は鍵管理に難しさがあることを知っていますか?この講座では、JWT 認証ではなく、セッションベース認証を実装します。

API 設計とスキーマ駆動開発
APIの設計でどのようなリソースを定義するべきか、どのようなエンドポイントを用意するべきかを学びます。HTTP のレスポンスステータスコードを適切に使ってどのようなエラーが発生したかを表現しましょう。

JUnit を使ったテスト
JUnit を使って単体テストを書きましょう。@MockMvc を使って Controller のテストを書きます。データベースに接続するテストも実装します。

機能開発演習
実際の開発で発生する機能開発の演習をしてみます。2テーブルを JOIN する機能を作ります。ファイルアップロードAPIを実装します。一覧取得のエンドポイントにカーソルベースページネーションとオフセットベースページネーションを実装します。

不具合修正演習
不具合修正の手順を学びます。エラーログから不具合コードを発見する方法を説明します。git のログから最近の変更箇所を調べて不具合原因を発見する方法を説明します。不具合を埋め込んだアプリケーションで対応の練習をしてみましょう。
必ず確認してください
このコースは 【未完成】 です
参加者数によってはコースをオープンしない場合があります。その場合、参加を宣言された方には全額返金します。
現時点で公開しているカリキュラムは変更になる可能性があります。(減らすことはありませんが増える可能性があります)
先行販売終了後、下記のスケジュールでコースをご提供します
- (先行販売期間:2024/02/22 19:00 ~ 2024/02/29 23:59)
- Module 1 の提供:2024/03/14 17:00
- Module 2 の提供:購入日から30日後
- Module 3 の提供:購入日から60日後
- ︙
※ 先行販売での購入者が少なかったときはコースの制作を取りやめます。その場合は、購入者の方には全額返金いたします。

カリキュラム
精密に計算されたカリキュラムと Slack 上で展開されるコミュニティーがあなたを待っています。
30日ごとに1つのModule が公開されます。必ず手を動かしてコーディングをしてください。
Module 1
Spring アプリケーションから MySQL に接続する
✅ Spring Initializr で Spring Boot プロジェクトを作成する
✅ ローカル開発環境に Docker をインストールして、MySQL Official Image を使って MySQL を用意する
✅ Spring アプリケーションから MySQL に接続する
Module 2
API にセッションベース認証を実装する
✅ API の認証方式について理解する。JWT/セッションベース
✅ JWT 認証の弱点を理解する(即時ログアウト/鍵管理)
✅ セッションベース認証の実装をする
Module 3
ユーザー情報の更新機能を実装する
✅ ユーザープロフィールの更新機能を実装する
✅ メールアドレス更新を実装する
✅ パスワード更新を実装する
Module 4
API 設計入門とスキーマ駆動開発
✅ API のリソース設計/エンドポイント設計を学ぶ
✅ スキーマ駆動開発のメリットを学ぶ
✅ OpenAPI Specification に従って API 仕様を記述する
✅ OpenAPI Generator を使って API 仕様から Spring フレームワークのコントローラー/モデルを自動生成する
Module 5
CRUD を実装する
✅ OpenAPI で記述した仕様をみたす API を実装する
Module 6
Integration Test を実装する
✅ RestTemplate を使って Integration Test を実装する
✅ Integration Test で OpenAPI で定義した仕様を満たすかどうかを確かめる
Module 7
Unit Test を実装する
✅ JUnit を使って Unit Test を実装する
✅ MockMvc を使う
✅ データベースのに接続するテストを書く
Module 8
機能開発:テーブル結合が必要な機能を実装する
✅ N + 1 問題について理解する
✅ 2テーブルを JOIN するクエリを書く
✅ 子テーブルの取得方式について知る:Eager Load / Lazy Load
Module 9
機能開発:ファイルアップロード API を実装する
✅ ファイルアップロードAPI の設計をする
✅ Docker を使ってローカルに MinIO を用意する(MinIO = AWS S3 互換のオブジェクトストレージ)
Module 10
機能開発:ページングを実装する
✅ ページングの必要性を理解する
✅ ページングの方式を理解する:オフセットベース/カーソルベース
✅ オフセットベースページネーションを実装する
✅ カーソルベースページネーションを実装する
Module 11
不具合修正の手順を理解する
✅ エラーログから不具合の原因を探る方法
✅ コミットログから不具合の原因を探る方法
✅ 不具合の修正前に不具合を再現させるテストを書く
✅ 不具合修正の影響範囲を調べる
✅ 不具合修正リリース前のテストを計画する
Module 12
不具合修正の練習
✅ 不具合修正の手順を習得するために例題1を解く
✅ 不具合修正の手順を習得するために例題2を解く
※ 各Module は1ヶ月に1つの Module ずつ公開されます。必ず手を動かしてコーディングをしてください。
もちろん質問はいつでもウェルカムです!でも..
15分ルールを守ってください
ルール1
分からないところは必ず自分で15分間試行錯誤する
ルール2
15分試行錯誤してもわからにときはすぐに Slack で質問する
ルール1を破らないでください
エラーの原因を自分で考え、仮説検証ができることは、中級者に必須のスキルです。エラーやわからないことをいつでも自力で論理的に解決する気概を持って普段から取り組んでください。逃げちゃだめです。
ルール2を破らないでください
成長には本人の努力が必要です。一方であなたの時間が有限であるということも事実です。私たちはあなたの時間が限られているという事実も尊重します。もし15分試行錯誤しても分からないときはすぐに Slack で相談してください。サポートチームが解決のお手伝いをします。ただ答えを教えるのではなく、あなたのケースでどのように仮説検証をするべきだったのかを伝えます。中級者としてどのようにトラブルシュートするべきだったのかを知り、強くなってください。


Spring 道場であなたが手に入れるもの
✅ 全12のモジュールからなる中級者へのコーディング動画
✅ 購入者限定 Slack コミュニティへの参加権
✅ 疑問があればいつでも質問できます
必ず確認してください
このコースは 【未完成】 です
参加者数によってはコースをオープンしない場合があります。その場合、参加を宣言された方には全額返金します。
現時点で公開しているカリキュラムは変更になる可能性があります。(減らすことはありませんが増える可能性があります)
先行販売終了後、下記のスケジュールでコースをご提供します
- (先行販売期間:2024/02/22 19:00 ~ 2024/02/29 23:59)
- Module 1 の提供:2024/03/14 17:00
- Module 2 の提供:購入日から30日後
- Module 3 の提供:購入日から60日後
- ︙
※ 先行販売での購入者が少なかったときはコースの制作を取りやめます。その場合は、購入者の方には全額返金いたします。