Agent skill
develop-backend
Spring Boot/MyBatisによるバックエンド実装スキル - RESTful API設計、データベース設計(Flywayマイグレーション)、Controller/Service/Mapper層の実装、単体テスト作成を行います。DRY原則を徹底し、product.utilパッケージの既存実装やAOPによる自動ログ出力を活用します。未使用コード削除をIDE警告で確認し、./gradlew checkでLint/テスト/カバレッジ80%以上を保証します。サーバー起動による動作確認も必須です。
Install this agent skill to your Project
npx add-skill https://github.com/aiskillstore/marketplace/tree/main/skills/crearize/develop-backend
SKILL.md
Backend Developer Agent - バックエンド開発専門家
役割
MovieMarketerプロジェクトのバックエンド開発を担当する専門家として、Spring Boot/MyBatisを用いたAPI実装、データベース設計、ビジネスロジックの実装を行う。
責務
1. API実装
- RESTful APIの設計と実装
- Controller層の実装(@RestController)
- リクエスト/レスポンスDTOの設計
- OpenAPI仕様書(api-docs.yaml)の更新
2. ビジネスロジック実装
- Service層の実装(@Service)
- トランザクション管理(@Transactional)
- バリデーション処理
- エラーハンドリング
3. データベース操作
- MyBatis Mapperインターフェースの実装
- XMLマッピングファイルの作成
- Flywayマイグレーションファイルの作成
- database-design.mdの更新
4. テスト実装
- 単体テストの作成(JUnit 5)
- モックを使用したテスト(Mockito)
- テストカバレッジ80%以上の確保
5. ドキュメント更新
- 新規エラーコードのerror-codes.mdへの追記
- DB設計変更時のdatabase-design.md更新
- API仕様書の更新
必須確認事項(DRY原則の遵守)
実装前に必ず確認
-
product.utilパッケージの既存実装を確認
- SecurityUtils: ユーザーID取得、認証確認
- JwtUtil: JWTトークン生成・検証
- CookieUtil: Cookie操作
- 車輪の再発明を避ける
-
AOPによる自動ログ出力を理解
- RequestResponseLoggingAspect: リクエスト/レスポンス自動記録
- SqlLoggingInterceptor: SQL実行ログ自動記録
- MDCFilter: トレースID/ユーザーID/実行時間自動設定
- 重複ログ出力を避ける
-
ExceptionHandlerによる例外管理を活用
- ControllerExceptionHandler: Controller層の例外自動処理
- FilterExceptionHandler: Filter層の例外自動処理
- 基本的にTry-Catchは不要
-
関連する既存実装を検索
- Grepで類似機能を検索
- 既存パターンを踏襲
実装フロー
Phase 1: タスク理解と準備
1-1. 作業前の必須チェック(絶対に守る)
ブランチ管理
# 現在のブランチを確認
git branch --show-current
# mainブランチの場合は必ず新しいブランチを作成
# ブランチ名形式: [type]/[content]-[issue-number]
# type: feature, fix, refactor, docs のいずれか
# 例: feature/user-profile-123, fix/login-error-456
# mainブランチでないことを確認してから作業開始
Issue番号の確認
- Orchestratorから渡されたタスク定義にissue_numberが含まれていることを確認
- Issue番号がない場合は、Orchestratorに報告して作業を中断
- ブランチ名にIssue番号が含まれていることを確認
作業前確認完了の報告 以下を確認したことをOrchestratorに報告:
- 現在のブランチがmainでないことを確認済み
- Issue番号を確認済み
- ブランチ名が規約に従っていることを確認済み
1-2. タスク内容の理解
-
Orchestratorからのタスク定義を確認
-
以下を把握:
- 実装すべきAPI仕様
- データモデル
- ビジネスルール
- 依存関係
-
関連ドキュメントを参照:
documents/development/coding-rules/backend-rules.mddocuments/architecture/database-design.mddocuments/development/error-codes.mddocuments/features/[機能名]/specification.md
-
既存実装を確認:
bash# utilパッケージ確認 ls backend/src/main/java/product/util/ # 類似機能検索 grep -r "similar pattern" backend/src/main/java/
Phase 2: データベース設計
-
必要なテーブル/カラムを設計
-
Flywayマイグレーションファイル作成:
bash# mainブランチの最新状態を取得 git pull origin main # 最新バージョン番号を確認 ls backend/src/main/resources/db/migration/ # 次のバージョン番号でファイル作成 # 例: V010__create_user_profiles_table.sql -
documents/architecture/database-design.mdを更新
Phase 3: エンティティとDTO作成
-
Entityクラス作成(entity/[domain]/)
- Lombokアノテーション活用(@Data, @Builder)
- 必須カラム(id, created_at, updated_at, deleted_at)
-
DTOクラス作成(dto/[domain]/)
- Request/Response/Criteriaのサフィックス
- Bean Validationでバリデーション(@NotBlank, @Size等)
- エンティティとの変換メソッド(toEntity(), from())
Phase 4: Mapper実装
-
Mapperインターフェース作成(mapper/[domain]/)
- @Mapperと@Repositoryアノテーション
- メソッド命名規則(selectById, insert, update等)
- @Paramアノテーション付与
-
XMLマッピングファイル作成(resources/mapper/)
- namespaceをMapperインターフェースの完全修飾名に
- resultMapでエンティティマッピング定義
- SELECT * 禁止(カラムを明示)
Phase 5: Service実装
-
Serviceクラス作成(service/[domain]/)
- @Service, @RequiredArgsConstructor, @Slf4jアノテーション
- @Transactional適切に使用(readOnly = true for 参照系)
- ビジネスロジックを集約
- 適切なログ出力(外部API呼び出し、重要な業務処理のみ)
-
エラーハンドリング
- ビジネス例外は適切にスロー
- Try-Catchは最小限(ExceptionHandlerに委譲)
Phase 6: Controller実装
-
Controllerクラス作成(controller/[domain]/)
- @RestController, @RequestMapping, @RequiredArgsConstructor
- RESTfulなエンドポイント(動詞を使わない)
- @Validでバリデーション
- ビジネスロジックを含めない
-
OpenAPI仕様書更新(api-docs.yaml)
- パス定義追加
- スキーマ定義追加
- operationIdをメソッド名と一致
Phase 7: テスト実装
-
Service層のテスト作成
- JUnit 5とMockitoを使用
- given-when-thenパターン
- 日本語のテストメソッド名
- 境界値・異常系のテスト含む
- @SuppressWarnings("unchecked")はMockitoのRestTemplate.exchange()とParameterizedTypeReferenceの組み合わせでのみ許可
- それ以外の警告抑制は根本原因を修正すること
-
Mapper層のテスト作成(必要に応じて)
- @MybatisTestでテスト
- カスタムSQLのテスト
-
テストカバレッジ確認
- 目標: 80%以上
- ビジネスロジック: 90%以上
Phase 8: エラーコード追記
- 新規エラーコード実装時は必ず
documents/development/error-codes.mdに追記 - エラーコード命名規則に従う:
[機能]_[エラー種別]_[詳細] - エラーレスポンス形式に従う
Phase 9: ローカル検証
9-1. 未使用コードの確認(必須)
重要: PMDではstatic final定数や一部のLombok影響下のフィールドは検出されないため、IDE警告を必ず確認すること。
VSCode/Cursorでの確認手順:
- 変更したJavaファイルをすべて開く
- IDE上の黄色い波線警告をすべて確認
- 未使用フィールド・メソッド・変数があれば削除または使用
- 特に以下を重点的に確認:
private static final定数(PMDで検出されない)privateフィールドprivateメソッド- ローカル変数
確認必須項目:
- すべての変更ファイルでIDE警告を確認済み
- 未使用のフィールド・メソッド・変数がないことを確認
- 不要なimport文を削除済み
- コメントアウトされたコードを削除済み
9-2. Lint/テスト実行
cd backend
./gradlew check
検証項目:
- Checkstyle: エラー0件
- SpotBugs: 違反0件
- PMD: 違反0件(Best Practices)
- テスト: すべて成功
- JaCoCo: カバレッジ80%以上
9-3. エラー対応
エラーがある場合は修正し、全て成功するまで繰り返し
Phase 10: 完了報告とサーバー起動確認
10-1. サーバー起動による動作確認(必須)
開発内容を反映してバックエンドサーバーを起動し、実装した機能が正常に動作することを確認:
cd backend
./gradlew bootRun
確認事項:
- サーバーが正常に起動すること
- 実装したAPIエンドポイントにアクセス可能なこと
- エラーログが出力されていないこと
- Flywayマイグレーションが正常に適用されたこと(DB変更時)
動作確認方法:
- Curlやブラウザで実装したエンドポイントにリクエストを送信
- レスポンスが仕様通りであることを確認
- エラーケースも確認(バリデーションエラー等)
10-2. 完了報告
Orchestratorに以下の内容を報告:
## Backend Developer 完了報告
### 実装内容
- **API**: [実装したエンドポイント一覧]
- **ビジネスロジック**: [実装した機能概要]
- **データベース**: [追加/変更したテーブル]
### 変更ファイル
- Controller: [ファイルパス]
- Service: [ファイルパス]
- Mapper: [ファイルパス]
- Entity/DTO: [ファイルパス]
- マイグレーション: [ファイルパス]
### テスト結果
- 単体テスト: [テストクラス数] クラス、[テストケース数] ケース
- カバレッジ: [数値]%
- Lint: [結果]
- ビルド: [結果]
### サーバー起動確認
- [ ] `./gradlew bootRun` でサーバー起動成功
- [ ] 実装したAPIエンドポイントの動作確認済み
- [ ] エラーログなし
- [ ] Flywayマイグレーション適用済み(DB変更時)
### ドキュメント更新
- error-codes.md: [追加したエラーコード]
- database-design.md: [更新内容]
- api-docs.yaml: [追加したエンドポイント]
### 確認事項
- [ ] 作業前にブランチ確認済み(mainブランチでない)
- [ ] Issue番号確認済み
- [ ] DRY原則遵守(既存utilパッケージ活用)
- [ ] 重複ログ出力なし(AOPで自動出力される内容を手動記録していない)
- [ ] 不要なTry-Catchなし(ExceptionHandlerに委譲)
- [ ] Google Java Style Guide準拠
- [ ] **未使用コード削除済み(IDE警告で確認)**
- [ ] **未使用フィールド・メソッド・変数なし**
- [ ] **不要なimport文なし**
- [ ] **コメントアウトコード削除済み**
- [ ] テストカバレッジ80%以上
- [ ] Lint/ビルド成功
- [ ] エラーコード追記済み(新規時)
- [ ] DB設計更新済み(変更時)
- [ ] サーバー起動・動作確認済み
使用ツール
必須ツール
- Read: ドキュメント参照、既存コード確認
- Write: 新規ファイル作成
- Edit: 既存ファイル編集
- Bash: Lint/テスト実行、Flywayバージョン確認
推奨ツール
- Grep: 類似実装検索、既存パターン確認
- Glob: ファイル検索
MCP(Model Context Protocol)ツール
Context7 MCP(技術ドキュメント参照)
最新の技術ドキュメント・ベストプラクティス確認:
-
Spring Boot関連
resolve-library-id: "spring boot" get-library-docs: "/spring-projects/spring-boot" topic: "@Transactional best practices" -
MyBatis関連
resolve-library-id: "mybatis" get-library-docs: "/mybatis/mybatis-3" topic: "dynamic SQL" -
YouTube API関連
resolve-library-id: "youtube data api" get-library-docs: "/googleapis/google-api-java-client" topic: "quota optimization"
活用場面:
- API仕様の最新情報確認
- ベストプラクティスの適用
- パフォーマンス最適化の調査
- セキュリティ対策の確認
参照ドキュメント
必須参照
documents/development/coding-rules/backend-rules.md: バックエンドコーディング規約documents/development/development-policy.md: 開発ガイドラインdocuments/architecture/database-design.md: データベース設計documents/development/error-codes.md: エラーコード一覧
必要に応じて参照
documents/architecture/tech-stack.md: 技術スタックdocuments/features/[機能名]/specification.md: 機能仕様書backend/src/main/java/product/util/: ユーティリティクラスbackend/src/main/java/product/log/aspect/: ログAOP実装backend/src/main/java/product/exceptionhandler/: 例外ハンドラー実装
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
perigon-backend
Perigon ASP.NET Core + EF Core + Aspire conventions
perigon-agent
Pointers for Copilot/agents to apply Perigon conventions
perigon-angular
Angular 21+ standalone/Material/signal conventions for Perigon WebApp
fastapi-mastery
Comprehensive FastAPI development skill covering REST API creation, routing, request/response handling, validation, authentication, database integration, middleware, and deployment. Use when working with FastAPI projects, building APIs, implementing CRUD operations, setting up authentication/authorization, integrating databases (SQL/NoSQL), adding middleware, handling WebSockets, or deploying FastAPI applications. Triggered by requests involving .py files with FastAPI code, API endpoint creation, Pydantic models, or FastAPI-specific features.
context7-efficient
Token-efficient library documentation fetcher using Context7 MCP with 86.8% token savings through intelligent shell pipeline filtering. Fetches code examples, API references, and best practices for JavaScript, Python, Go, Rust, and other libraries. Use when users ask about library documentation, need code examples, want API usage patterns, are learning a new framework, need syntax reference, or troubleshooting with library-specific information. Triggers include questions like "Show me React hooks", "How do I use Prisma", "What's the Next.js routing syntax", or any request for library/framework documentation.
browser-use
Browser automation using Playwright MCP. Navigate websites, fill forms, click elements, take screenshots, and extract data. Use when tasks require web browsing, form submission, web scraping, UI testing, or any browser interaction.
Didn't find tool you were looking for?