コンテンツにスキップ

ありがとうございます。

ここからは第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  プロジェクト基盤
    ↓
Phase1  共通基盤
    ↓
Phase2  認証・認可
    ↓
Phase3  マスタ管理
    ↓
Phase4  教材ライブラリ
    ↓
Phase5  コース管理
    ↓
Phase6  受講機能
    ↓
Phase7  クイズ
    ↓
Phase8  承認ワークフロー
    ↓
Phase9  通知・監査
    ↓
Phase10 管理画面
    ↓
Phase11 運用・監視

Phase0 プロジェクト基盤

まず何もないSpring Bootを作ります。

作成するもの

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
Gradle

Spring Boot

MySQL

Flyway

Spring Security

JPA

MyBatis

Thymeleaf

Bootstrap

完成時

1
2
3
4
5
6
7
Hello World

ログイン画面

DB接続

Migration成功

だけで十分です。


Phase1 共通基盤

ここは全機能が依存します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
BaseEntity

Exception

ControllerAdvice

Validation

Audit

Event

Mail

Cache

Util

ここを最初に作ることで

以降は全部使い回せます。


Phase2 認証

ここでログインできます。

作成

1
2
3
4
5
6
7
8
9
User

Role

Permission

Organization

LoginHistory

画面

1
2
3
4
5
6
7
ログイン

ログアウト

パスワード変更

プロフィール

ここまで終わると

1
ログイン済ユーザー

が使えます。


Phase3 マスタ管理

次にマスタです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
ContentType

VideoType

FileType

QuizCategory

Tag

Category

Settings

管理画面

1
2
3
4
5
6
7
一覧

追加

編集

削除

Phase4 教材ライブラリ

ここが本システムの中心です。

作成

1
2
3
4
5
6
7
Content

ContentVersion

Attachment

ContentTag

画面

1
2
3
4
5
6
7
教材一覧

教材登録

教材編集

Version一覧

動画

1
2
3
4
5
YouTube

Vimeo

Cloudflare R2

Markdown

1
2
3
4
5
6
7
8
9
入力

↓

HTML変換

↓

表示

ここまでで

教師は教材を作れます。


Phase5 コース

次に

1
2
3
4
5
6
7
Course

Section

Lesson

LessonContent

画面

1
2
3
4
5
コース

セクション

レッスン

ここで

教材ライブラリ

レッスン

コース

が完成します。


Phase6 受講

学生側です。

1
2
3
4
5
6
7
8
9
Enrollment

LessonProgress

ContentProgress

Bookmark

Favorite

画面

1
2
3
4
5
6
7
受講開始

進捗

続きから

修了

Phase7 クイズ

1
2
3
4
5
6
7
Quiz

Question

Choice

AnswerHistory

画面

1
2
3
4
5
6
7
受験

採点

履歴

解説

Phase8 承認

教師

申請

管理者

承認

1
2
3
4
5
ApprovalHistory

Comment

Workflow

画面

1
2
3
4
5
審査一覧

レビュー

コメント

Phase9 通知

1
2
3
4
5
6
7
Notification

Mail

Event

WebSocket

通知

1
2
3
4
5
教材承認

修正依頼

公開

Phase10 管理画面

管理者

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
User

Role

Permission

Master

Audit

Settings

ダッシュボード

1
2
3
4
5
6
7
利用者数

教材数

受講数

公開数

Phase11 運用

最後です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Scheduler

Redis

Actuator

Micrometer

Prometheus

Grafana

Docker

1
2
3
4
5
6
7
Nginx

Spring

MySQL

Redis

Cloudflare

1
2
3
R2

CDN

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
Phase0
    │
    ▼
Phase1
    │
    ▼
Phase2
    │
    ▼
Phase3
    │
    ▼
Phase4
    │
    ▼
Phase5
    │
    ▼
Phase6
    │
    ▼
Phase7
    │
    ▼
Phase8
    │
    ▼
Phase9
    │
    ▼
Phase10
    │
    ▼
Phase11

途中を飛ばさないことが重要です。


3. 1機能ごとの開発手順

例えば 教材登録 を実装するときは、毎回同じ順番で作ります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
Entity
    ↓
Repository
    ↓
Flyway
    ↓
DTO
    ↓
Form
    ↓
Mapper
    ↓
Service
    ↓
Controller
    ↓
HTML
    ↓
Test

この順序を全機能で統一すると、コードレビューや保守が容易になります。


4. 完了条件(Definition of Done)

各機能は「動く」だけでなく、以下を満たして完了とします。

  • Entity・Repository・Mapper・Service・Controllerが実装されている

  • Flywayマイグレーションが追加されている

  • 入力バリデーションがある

  • 権限制御がある

  • 監査ログが記録される

  • JUnitテストがある

  • 画面から操作できる

  • エラーハンドリングが実装されている


5. ブランチ運用

おすすめは Git Flow を簡略化した運用です。

1
2
3
4
5
main
develop
feature/*
release/*
hotfix/*

1機能 = 1ブランチ

1
2
3
4
feature/content-library
feature/course
feature/approval
feature/quiz

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段階で設計フェーズは完了

ここまでで、教材管理システムの

  • 要件定義

  • ドメイン設計

  • データベース設計

  • アプリケーション設計

  • アーキテクチャ設計

  • 開発標準

  • 実装ロードマップ

まで一貫した形で整理できました。

次におすすめする作業

設計は十分なレベルに到達していますので、次は「設計をコードへ落とし込むフェーズ」です。

私なら以下の順で実装を開始します。

  1. プロジェクト雛形の作成

    • Spring Boot 3.5.x

    • Gradle

    • Flyway

    • Spring Security

    • JPA

    • MyBatis

    • Thymeleaf

    • Bootstrap

  2. 共通基盤(BaseEntity・Security・例外・監査・イベント)

  3. 認証・ユーザー・権限管理

  4. 教材ライブラリ

  5. コース・レッスン管理

以降はロードマップに沿って機能を追加していくことで、常に動作する状態を維持しながら開発を進められます。


実装について

ここまでの設計内容は、そのまま実装するとかなり大規模になります。

上記の各バージョンごとにgitにてローカルリポジトリにコミットを行ってください。 コミット単位でしっかりと動作する状態に仕上げるようにしてください。

このように段階的に開発すると、早い段階で利用可能なシステムを提供しつつ、後から高度な機能を安全に追加できます。