ありがとうございます。
ここからは第30段階:実装ロードマップ・開発順序設計へ進みます。
ここまでで設計は完成しました。
しかし、大規模システムは設計順=実装順ではありません。
企業では
「依存関係が少ないものから作る」
というルールで開発します。
今回の教材管理システム(LMS)は最終的に100〜150テーブル、300〜500クラス規模になることを想定しています。そのため、最初から教材機能を作るのではなく、共通基盤から順に積み上げる構成が適しています。
1. 全体ロードマップ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
Phase0 プロジェクト基盤
まず何もないSpring Bootを作ります。
作成するもの
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
完成時
1 2 3 4 5 6 7 | |
だけで十分です。
Phase1 共通基盤
ここは全機能が依存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
ここを最初に作ることで
以降は全部使い回せます。
Phase2 認証
ここでログインできます。
作成
1 2 3 4 5 6 7 8 9 | |
画面
1 2 3 4 5 6 7 | |
ここまで終わると
1 | |
が使えます。
Phase3 マスタ管理
次にマスタです。
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
管理画面
1 2 3 4 5 6 7 | |
Phase4 教材ライブラリ
ここが本システムの中心です。
作成
1 2 3 4 5 6 7 | |
画面
1 2 3 4 5 6 7 | |
動画
1 2 3 4 5 | |
Markdown
1 2 3 4 5 6 7 8 9 | |
ここまでで
教師は教材を作れます。
Phase5 コース
次に
1 2 3 4 5 6 7 | |
画面
1 2 3 4 5 | |
ここで
教材ライブラリ
↓
レッスン
↓
コース
が完成します。
Phase6 受講
学生側です。
1 2 3 4 5 6 7 8 9 | |
画面
1 2 3 4 5 6 7 | |
Phase7 クイズ
1 2 3 4 5 6 7 | |
画面
1 2 3 4 5 6 7 | |
Phase8 承認
教師
↓
申請
↓
管理者
↓
承認
1 2 3 4 5 | |
画面
1 2 3 4 5 | |
Phase9 通知
1 2 3 4 5 6 7 | |
通知
1 2 3 4 5 | |
Phase10 管理画面
管理者
1 2 3 4 5 6 7 8 9 10 11 | |
ダッシュボード
1 2 3 4 5 6 7 | |
Phase11 運用
最後です。
1 2 3 4 5 6 7 8 9 10 11 | |
Docker
1 2 3 4 5 6 7 | |
Cloudflare
1 2 3 | |
2. 各Phaseの依存関係
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | |
途中を飛ばさないことが重要です。
3. 1機能ごとの開発手順
例えば 教材登録 を実装するときは、毎回同じ順番で作ります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
この順序を全機能で統一すると、コードレビューや保守が容易になります。
4. 完了条件(Definition of Done)
各機能は「動く」だけでなく、以下を満たして完了とします。
-
Entity・Repository・Mapper・Service・Controllerが実装されている
-
Flywayマイグレーションが追加されている
-
入力バリデーションがある
-
権限制御がある
-
監査ログが記録される
-
JUnitテストがある
-
画面から操作できる
-
エラーハンドリングが実装されている
5. ブランチ運用
おすすめは Git Flow を簡略化した運用です。
1 2 3 4 5 | |
1機能 = 1ブランチ
例
1 2 3 4 | |
6. リリース単位
以下のように区切ると、途中でも利用可能なシステムになります。
| バージョン | 内容 |
|---|---|
| v0.1 | ログイン・ユーザー管理 |
| v0.2 | 教材ライブラリ |
| v0.3 | コース・レッスン |
| v0.4 | 受講機能 |
| v0.5 | クイズ |
| v0.6 | 承認ワークフロー |
| v0.7 | 通知・監査 |
| v1.0 | 管理画面・運用機能 |
7. 今後の拡張
このアーキテクチャであれば、次の機能も自然に追加できます。
-
SCORM 1.2 / 2004 対応
-
xAPI (Tin Can API) 対応
-
LTI 1.3 連携
-
SAML / OpenID Connect SSO
-
Microsoft Teams / Google Classroom 連携
-
AI教材生成・AIレビュー支援
-
多言語対応
-
モバイルアプリ用REST API
第30段階で設計フェーズは完了
ここまでで、教材管理システムの
-
要件定義
-
ドメイン設計
-
データベース設計
-
アプリケーション設計
-
アーキテクチャ設計
-
開発標準
-
実装ロードマップ
まで一貫した形で整理できました。
次におすすめする作業
設計は十分なレベルに到達していますので、次は「設計をコードへ落とし込むフェーズ」です。
私なら以下の順で実装を開始します。
-
プロジェクト雛形の作成
-
Spring Boot 3.5.x
-
Gradle
-
Flyway
-
Spring Security
-
JPA
-
MyBatis
-
Thymeleaf
-
Bootstrap
-
-
共通基盤(BaseEntity・Security・例外・監査・イベント)
-
認証・ユーザー・権限管理
-
教材ライブラリ
-
コース・レッスン管理
以降はロードマップに沿って機能を追加していくことで、常に動作する状態を維持しながら開発を進められます。
実装について
ここまでの設計内容は、そのまま実装するとかなり大規模になります。
上記の各バージョンごとにgitにてローカルリポジトリにコミットを行ってください。 コミット単位でしっかりと動作する状態に仕上げるようにしてください。
このように段階的に開発すると、早い段階で利用可能なシステムを提供しつつ、後から高度な機能を安全に追加できます。