Why Use This
This skill provides specialized capabilities for aiskillstore's codebase.
Use Cases
- Developing new features in the aiskillstore repository
- Refactoring existing code to follow aiskillstore standards
- Understanding and working with aiskillstore's codebase structure
Install Guide
2 steps - 1
- 2
Install inside Ananke
Click Install Skill, paste the link below, then press Install.
https://github.com/aiskillstore/marketplace/tree/main/skills/crearize/develop-backend
Skill Snapshot
Auto scan of skill assets. Informational only.
Valid SKILL.md
Checks against SKILL.md specification
Source & Community
Updated At Jan 19, 2026, 04:39 AM
Skill Stats
SKILL.md 370 Lines
Total Files 1
Total Size 0 B
License NOASSERTION
---
name: develop-backend
description: Spring Boot/MyBatisによるバックエンド実装スキル - RESTful API設計、データベース設計(Flywayマイグレーション)、Controller/Service/Mapper層の実装、単体テスト作成を行います。DRY原則を徹底し、product.utilパッケージの既存実装やAOPによる自動ログ出力を活用します。未使用コード削除をIDE警告で確認し、./gradlew checkでLint/テスト/カバレッジ80%以上を保証します。サーバー起動による動作確認も必須です。
---
# 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原則の遵守)
### 実装前に必ず確認
1. **product.utilパッケージの既存実装を確認**
- SecurityUtils: ユーザーID取得、認証確認
- JwtUtil: JWTトークン生成・検証
- CookieUtil: Cookie操作
- **車輪の再発明を避ける**
2. **AOPによる自動ログ出力を理解**
- RequestResponseLoggingAspect: リクエスト/レスポンス自動記録
- SqlLoggingInterceptor: SQL実行ログ自動記録
- MDCFilter: トレースID/ユーザーID/実行時間自動設定
- **重複ログ出力を避ける**
3. **ExceptionHandlerによる例外管理を活用**
- ControllerExceptionHandler: Controller層の例外自動処理
- FilterExceptionHandler: Filter層の例外自動処理
- **基本的にTry-Catchは不要**
4. **関連する既存実装を検索**
- Grepで類似機能を検索
- 既存パターンを踏襲
## 実装フロー
### Phase 1: タスク理解と準備
#### 1-1. 作業前の必須チェック(絶対に守る)
**ブランチ管理**
```bash
# 現在のブランチを確認
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. タスク内容の理解
1. Orchestratorからのタスク定義を確認
2. 以下を把握:
- 実装すべきAPI仕様
- データモデル
- ビジネスルール
- 依存関係
3. 関連ドキュメントを参照:
- `documents/development/coding-rules/backend-rules.md`
- `documents/architecture/database-design.md`
- `documents/development/error-codes.md`
- `documents/features/[機能名]/specification.md`
4. 既存実装を確認:
```bash
# utilパッケージ確認
ls backend/src/main/java/product/util/
# 類似機能検索
grep -r "similar pattern" backend/src/main/java/
```
### Phase 2: データベース設計
1. 必要なテーブル/カラムを設計
2. Flywayマイグレーションファイル作成:
```bash
# mainブランチの最新状態を取得
git pull origin main
# 最新バージョン番号を確認
ls backend/src/main/resources/db/migration/
# 次のバージョン番号でファイル作成
# 例: V010__create_user_profiles_table.sql
```
3. `documents/architecture/database-design.md`を更新
### Phase 3: エンティティとDTO作成
1. Entityクラス作成(entity/[domain]/)
- Lombokアノテーション活用(@Data, @Builder)
- 必須カラム(id, created_at, updated_at, deleted_at)
2. DTOクラス作成(dto/[domain]/)
- Request/Response/Criteriaのサフィックス
- Bean Validationでバリデーション(@NotBlank, @Size等)
- エンティティとの変換メソッド(toEntity(), from())
### Phase 4: Mapper実装
1. Mapperインターフェース作成(mapper/[domain]/)
- @Mapperと@Repositoryアノテーション
- メソッド命名規則(selectById, insert, update等)
- @Paramアノテーション付与
2. XMLマッピングファイル作成(resources/mapper/)
- namespaceをMapperインターフェースの完全修飾名に
- resultMapでエンティティマッピング定義
- SELECT * 禁止(カラムを明示)
### Phase 5: Service実装
1. Serviceクラス作成(service/[domain]/)
- @Service, @RequiredArgsConstructor, @Slf4jアノテーション
- @Transactional適切に使用(readOnly = true for 参照系)
- ビジネスロジックを集約
- 適切なログ出力(外部API呼び出し、重要な業務処理のみ)
2. エラーハンドリング
- ビジネス例外は適切にスロー
- Try-Catchは最小限(ExceptionHandlerに委譲)
### Phase 6: Controller実装
1. Controllerクラス作成(controller/[domain]/)
- @RestController, @RequestMapping, @RequiredArgsConstructor
- RESTfulなエンドポイント(動詞を使わない)
- @Validでバリデーション
- ビジネスロジックを含めない
2. OpenAPI仕様書更新(api-docs.yaml)
- パス定義追加
- スキーマ定義追加
- operationIdをメソッド名と一致
### Phase 7: テスト実装
1. Service層のテスト作成
- JUnit 5とMockitoを使用
- given-when-thenパターン
- 日本語のテストメソッド名
- 境界値・異常系のテスト含む
- **@SuppressWarnings("unchecked")はMockitoのRestTemplate.exchange()とParameterizedTypeReferenceの組み合わせでのみ許可**
- それ以外の警告抑制は根本原因を修正すること
2. Mapper層のテスト作成(必要に応じて)
- @MybatisTestでテスト
- カスタムSQLのテスト
3. テストカバレッジ確認
- 目標: 80%以上
- ビジネスロジック: 90%以上
### Phase 8: エラーコード追記
1. 新規エラーコード実装時は必ず`documents/development/error-codes.md`に追記
2. エラーコード命名規則に従う: `[機能]_[エラー種別]_[詳細]`
3. エラーレスポンス形式に従う
### Phase 9: ローカル検証
#### 9-1. 未使用コードの確認(必須)
**重要**: PMDでは`static final`定数や一部のLombok影響下のフィールドは検出されないため、**IDE警告**を必ず確認すること。
**VSCode/Cursorでの確認手順**:
1. 変更したJavaファイルをすべて開く
2. IDE上の**黄色い波線警告**をすべて確認
3. 未使用フィールド・メソッド・変数があれば削除または使用
4. 特に以下を重点的に確認:
- `private static final` 定数(PMDで検出されない)
- `private` フィールド
- `private` メソッド
- ローカル変数
**確認必須項目**:
- [ ] すべての変更ファイルでIDE警告を確認済み
- [ ] 未使用のフィールド・メソッド・変数がないことを確認
- [ ] 不要なimport文を削除済み
- [ ] コメントアウトされたコードを削除済み
#### 9-2. Lint/テスト実行
```bash
cd backend
./gradlew check
```
**検証項目**:
- [ ] Checkstyle: エラー0件
- [ ] SpotBugs: 違反0件
- [ ] PMD: 違反0件(Best Practices)
- [ ] テスト: すべて成功
- [ ] JaCoCo: カバレッジ80%以上
#### 9-3. エラー対応
エラーがある場合は修正し、全て成功するまで繰り返し
### Phase 10: 完了報告とサーバー起動確認
#### 10-1. サーバー起動による動作確認(必須)
開発内容を反映してバックエンドサーバーを起動し、実装した機能が正常に動作することを確認:
```bash
cd backend
./gradlew bootRun
```
**確認事項:**
- [ ] サーバーが正常に起動すること
- [ ] 実装したAPIエンドポイントにアクセス可能なこと
- [ ] エラーログが出力されていないこと
- [ ] Flywayマイグレーションが正常に適用されたこと(DB変更時)
**動作確認方法:**
- Curlやブラウザで実装したエンドポイントにリクエストを送信
- レスポンスが仕様通りであることを確認
- エラーケースも確認(バリデーションエラー等)
#### 10-2. 完了報告
Orchestratorに以下の内容を報告:
```markdown
## 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(技術ドキュメント参照)
最新の技術ドキュメント・ベストプラクティス確認:
1. **Spring Boot関連**
```
resolve-library-id: "spring boot"
get-library-docs: "/spring-projects/spring-boot"
topic: "@Transactional best practices"
```
2. **MyBatis関連**
```
resolve-library-id: "mybatis"
get-library-docs: "/mybatis/mybatis-3"
topic: "dynamic SQL"
```
3. **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/`: 例外ハンドラー実装