mcpField
J
java-spring-development

java-spring-development

github.com/mindrally開発287937 回インストール3 週間前に更新
リポジトリ

java-spring-development について

Java 開発者向けに、Spring Boot によるアプリケーション開発の指針をまとめたスキルです。API、データアクセス、セキュリティに加え、テストや運用の実践も扱います。

主な機能

  1. 01Spring Boot 3.x と Java 17+ の指針
  2. 02レイヤー型プロジェクト構成
  3. 03REST API の設計と検証
  4. 04JPA とデータベース移行の実践
  5. 05セキュリティとテストの指針
  6. 06キャッシュ、監視、ドキュメント

活用シーン

  1. 01Spring Boot サービス構成の計画
  2. 02REST エンドポイントと DTO の設計
  3. 03データアクセスと移行方法の確認
  4. 04テスト、セキュリティ、監視の追加

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mindrally/skills --skill java-spring-development

インストール後、Claude Code で/java-spring-developmentを入力して読み込まれたか確認します。

詳細

Java Spring 開発のベストプラクティス

基本原則

  • 正確な Spring Boot の例を用いて、クリーンで効率的、かつ十分に文書化された Java コードを書きます
  • Java 17 以降の機能(レコード、シールドクラス、パターンマッチング)を備えた Spring Boot 3.x を使用します
  • テスト容易性を高めるため、フィールドインジェクションよりコンストラクターインジェクションを優先します
  • SOLID 原則と RESTful API 設計パターンに従います
  • マイクロサービスアーキテクチャへの適合性を考慮して設計します

プロジェクト構造

標準的なレイヤードパターンを使ってコードを整理します。

project/
├── controllers/     # REST controllers
├── services/        # Business logic
├── repositories/    # Data access layer
├── models/          # Domain entities and DTOs
└── configurations/  # Spring configurations

依存性注入

  • 必須の依存関係にはコンストラクターインジェクションを使用します
  • Lombok の @RequiredArgsConstructor を活用して、コードを簡潔にします
  • コンストラクターはシンプルに保ち、ロジックを含めないようにします
  • 複数の実装が存在する場合は @Qualifier を使用します

REST API の設計

  • 適切な HTTP メソッド(GET、POST、PUT、DELETE、PATCH)を使用します
  • 適切な HTTP ステータスコードを返します
  • 一貫したエラーレスポンス形式を実装します
  • API コントラクトを制御するために DTO を使用します
  • 必要に応じて API にバージョンを付けます

データアクセス

Spring Data JPA
  • 適切なエンティティのリレーションシップ(@OneToMany、@ManyToOne など)を定義します
  • N+1 クエリを避けるため、遅延読み込みを適切に使用します
  • 大規模な結果セットにはページネーションを実装します
  • カスタムクエリにはクエリメソッドと @Query を使用します
データベースのマイグレーション
  • スキーママイグレーションには Flyway または Liquibase を使用します
  • マイグレーションスクリプトを適切にバージョン管理します
  • 既存のマイグレーションは決して変更しません
  • 本番環境に適用する前に、開発環境でマイグレーションをテストします

セキュリティ

Spring Security
  • 認証と認可を適切に実装します
  • パスワードのエンコードには BCrypt を使用します
  • CORS を適切に設定します
  • ロール/権限に基づいてエンドポイントを保護します
  • 本番環境では HTTPS を使用します
セキュアコーディング
  • すべてのユーザー入力を検証します
  • インジェクション攻撃を防ぐためにデータをサニタイズします
  • レスポンスに機密情報を含めないようにします
  • パラメーター化クエリを使用します

テスト

単体テスト
  • 単体テストには JUnit 5 を使用します
  • Mockito で依存関係をモックします
  • ビジネスロジックを十分にテストします
  • Given-When-Then パターンに従います
統合テスト
  • 統合テストには @SpringBootTest を使用します
  • Web レイヤーのテストには MockMvc を使用します
  • テストコンテナーでデータベース操作をテストします
  • セキュリティ設定をテストします

パフォーマンス

キャッシュ
  • Spring Cache 抽象化を使用します
  • 適切なキャッシュプロバイダー(Redis、Caffeine)を設定します
  • キャッシュデータに適切な TTL を設定します
  • キャッシュの無効化戦略を実装します
非同期処理
  • ノンブロッキング操作には @Async を使用します
  • スレッドプールを適切に設定します
  • 非同期メソッド内の例外を処理します
  • 高い並行性が必要な場合は、リアクティブパターンの使用を検討します

ロギングとモニタリング

ロギング
  • Logback とともに SLF4J を使用します
  • 適切なログレベルで記録します
  • トレース用の相関 ID を含めます
  • 機密データをログに記録しないようにします
モニタリング
  • ヘルス情報とメトリクスには Spring Boot Actuator を使用します
  • メトリクスをモニタリングシステムにエクスポートします
  • 適切なヘルスチェックを設定します
  • アプリケーションのパフォーマンスをモニタリングします

API ドキュメント

  • API ドキュメントには Springdoc OpenAPI を使用します
  • すべてのエンドポイントに説明を記載します
  • リクエスト/レスポンスの例を含めます
  • コードに合わせてドキュメントを最新の状態に保ちます

コメント