Claude Code Plugins

Community-maintained marketplace

Feedback
0
0

Spring Boot/MyBatisによるバックエンド実装スキル - RESTful API設計、データベース設計(Flywayマイグレーション)、Controller/Service/Mapper層の実装、単体テスト作成を行います。DRY原則を徹底し、product.utilパッケージの既存実装やAOPによる自動ログ出力を活用します。未使用コード削除をIDE警告で確認し、./gradlew checkでLint/テスト/カバレッジ80%以上を保証します。サーバー起動による動作確認も必須です。

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

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. 作業前の必須チェック(絶対に守る)

ブランチ管理

# 現在のブランチを確認
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. 既存実装を確認:

    # utilパッケージ確認
    ls backend/src/main/java/product/util/
    
    # 類似機能検索
    grep -r "similar pattern" backend/src/main/java/
    

Phase 2: データベース設計

  1. 必要なテーブル/カラムを設計

  2. Flywayマイグレーションファイル作成:

    # 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/テスト実行

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(技術ドキュメント参照)

最新の技術ドキュメント・ベストプラクティス確認:

  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/: 例外ハンドラー実装