Control Plane Track(管理API実装者向け)
🎯 このトラックの目標
管理API(Control Plane)の実装ができるようになる。
- システムレベルAPI実装(CRUD操作)
- Handler-Serviceパターンの理解
- Repository実装(Query/Command分離)
- ContextBuilder作成
- 組織レベルAPI実装(4ステップアクセス制御)
所要期間: 2-4週間
前提: 初級ラーニングパス完了
📚 学習内容
Week 1-2: システムレベルAPI
読むべきドキュメント
実装の参考
実際のコードを読んで理解:
チェックリスト
- Handler-Serviceパターンを理解している
- ContextBuilderを使える(withBefore/withAfter/build)
- Audit Logを記録できる
- Dry Run対応を実装できる
- Request/Response DTO(Map<String, Object>ベース)を作成できる
- Repository(Query/Command分 離)を実装できる
Week 3-4: 組織レベルAPI
読むべきドキュメント
実装の参考
チェックリスト
- システムレベルとの差分を理解している
- Serviceは再利用(二重開発不要)
- OrgXxxManagementHandlerを実装できる
- 4ステップアクセス制御を理解している
- OrganizationAccessVerifierを使える
✅ 完了判定基準
以下をすべて達成したらControl Plane Trackクリア:
知識面
- Handler-Serviceパターン(EntryService/Handler/Service/Repositoryの責務分担)を説明できる
- ContextBuilderの役割を説明できる
- Repository第一引数がTenantである理由を説明できる
- RLS(Row Level Security)の仕組みを説明できる
- 4ステップアクセス制御を説明できる
実践面
- 新しいシステムレベルAPIをゼロから実装できる
- Repository(PostgreSQL + MySQL両対応)を実装できる
- 組織レベルAPIに拡張できる(Handlerのみ追加)
- E2Eテストを作成できる
- PRを出してレビューを受けられる
コード品質
- Tenant第一引数を守れる
- Context Builderを必ず使う(TODOコメント禁止)
- Validator/Verifierは void + throw
- コードレビューチェックリストを完全遵守
💡 Control Plane実装のヒント
よくあるミス
1. defaultメソッドをオーバーライド
// ❌ 間違い: 不要なオーバーライド
@Override
public AdminPermissions getRequiredPermissions(String method) {
// defaultメソッドで自動計算されるため実装不要
}
// ✅ 正しい: オーバーライドしない
// (インターフェースのdefaultメソッドが自動実行される)
2. EntryServiceに複雑な処理を書く
// ❌ 間違い: EntryServiceに全部書く
@Override
public XxxManagementResponse create(...) {
Tenant tenant = tenantQueryRepository.get(...);
// 権限チェック
// Validation
// 永続化
// ...
}
// ✅ 正しい: Handlerに委譲
@Override
public XxxManagementResponse create(...) {
XxxManagementResult result = handler.handle(...);
AuditLog auditLog = AuditLogCreator.create(result.context());
auditLogPublisher.publish(auditLog);
return result.toResponse(dryRun);
}
3. Audit Logを忘れる
// ❌ 間違い: Audit Log記録なし
@Override
public XxxManagementResponse create(...) {
XxxManagementResult result = handler.handle(...);
return result.toResponse(dryRun);
}
// ✅ 正しい: 必ずAudit Log記録
@Override
public XxxManagementResponse create(...) {
XxxManagementResult result = handler.handle(...);
AuditLog auditLog = AuditLogCreator.create(result.context());
auditLogPublisher.publish(auditLog); // ← 必須
return result.toResponse(dryRun);
}
🚀 次のステップ
Control Plane Track完了後の進路:
Application Planeも学ぶ
→ Application Plane Track - OAuth/OIDC認証フロー実装
こんな人におすすめ:
- 認証フロー実装も担当する
- OAuth/OIDCを深く理解したい
Full Stack開発者へ
→ Full Stack Track - Control Plane + Application Plane 完全習得
こんな人におすすめ:
- 技術リーダーを目指す
- システム全体を理解したい
最終更新: 2025-12-18 対象: Control Plane実装者(2-4週間) 習得スキル: 管理API実装、Handler-Serviceパターン、Repository実装、4ステップアクセス制御