java-spring-development について
Java 開発者向けに、Spring Boot によるアプリケーション開発の指針をまとめたスキルです。API、データアクセス、セキュリティに加え、テストや運用の実践も扱います。
主な機能
- 01Spring Boot 3.x と Java 17+ の指針
- 02レイヤー型プロジェクト構成
- 03REST API の設計と検証
- 04JPA とデータベース移行の実践
- 05セキュリティとテストの指針
- 06キャッシュ、監視、ドキュメント
活用シーン
- 01Spring Boot サービス構成の計画
- 02REST エンドポイントと DTO の設計
- 03データアクセスと移行方法の確認
- 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 を使用します
- すべてのエンドポイントに説明を記載します
- リクエスト/レスポンスの例を含めます
- コードに合わせてドキュメントを最新の状態に保ちます
コメント
Markdown 対応