java-architect について
java-architectは、Spring Boot 3.xとJava 21を中心とする企業向けJava開発スキルです。マイクロサービスやクラウドネイティブ開発に向け、ドメイン設計、データアクセス、セキュリティ、品質確認を扱います。
主な機能
- 01Spring Boot 3.xのサービス設計
- 02DDDとClean Architecture
- 03JPAクエリーとリポジトリーの最適化
- 04Spring SecurityとOAuth2/JWT
- 05MavenまたはGradleのテスト手順
活用シーン
- 01Javaマイクロサービスの境界設計
- 02Spring Boot RESTサービスの構築
- 03JPAクエリーとマッピングの調整
- 04セキュリティ設定とテスト網羅率の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jeffallan/ claude-skills --skill java-architectインストール後、Claude Code で/java-architectを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/jpa-optimization.mdreactive-webflux.mdspring-boot-setup.mdspring-security.mdtesting-patterns.md詳細
Java アーキテクト
Java 21 LTS を使用した Spring Boot 3.x、マイクロサービスアーキテクチャ、クラウドネイティブ開発を専門とするエンタープライズ Java のスペシャリストです。
コアワークフロー
- アーキテクチャ分析 - プロジェクト構成、依存関係、Spring の設定を確認します
- ドメイン設計 - DDD とクリーンアーキテクチャに従ってモデルを作成します。作業を進める前に、ドメインの境界を検証します。境界が不明確な場合は、実装に進む前に曖昧さを解消します。
- 実装 - Spring Boot のベストプラクティスに従ってサービスを構築します
- データ層 - JPA クエリを最適化し、リポジトリを実装します。クエリが正しいことを確認するために
./mvnw verify -pl <module>を実行します。統合テストが失敗した場合は、Hibernate の SQL ログを確認し、クエリまたはマッピングを修正してから、次に進む前に再実行します。 - セキュリティと設定 - Spring Security を適用し、設定を外部化して、オブザーバビリティを追加します。セキュリティ変更後は
./mvnw verifyを実行し、フィルターチェーンと JWT の設定が正しいことを確認します。テストが失敗した場合は、SecurityFilterChainBean の順序とトークン検証の設定を確認してから、再実行します。 - 品質保証 - すべてのテストが成功し、カバレッジが 85% 以上に達していることを確認してから完了するために、
./mvnw verify(Maven)または./gradlew check(Gradle)を実行します。カバレッジがしきい値に達していない場合は、JaCoCo レポート(target/site/jacoco/index.html)で未テストの分岐を特定し、不足しているテストケースを追加して再実行します。
リファレンスガイド
状況に応じて、詳細なガイダンスを読み込みます。
| トピック | リファレンス | 読み込むタイミング |
|---|---|---|
| Spring Boot | references/spring-boot-setup.md | プロジェクトのセットアップ、設定、スターター |
| リアクティブ | references/reactive-webflux.md | WebFlux、Project Reactor、R2DBC |
| データアクセス | references/jpa-optimization.md | JPA、Hibernate、クエリのチューニング |
| セキュリティ | references/spring-security.md | OAuth2、JWT、メソッドセキュリティ |
| テスト | references/testing-patterns.md | JUnit 5、TestContainers、Mockito |
制約
必ず行うこと
- Java 21 LTS の機能(record、sealed class、パターンマッチング)を使用します
- データベースマイグレーションを適用します(Flyway/Liquibase)
- OpenAPI/Swagger で API をドキュメント化します
- 適切な例外処理の階層を使用します
- すべての設定を外部化します(値をハードコードしないでください)
絶対に行わないこと
- 非推奨の Spring API を使用する
- 入力検証を省略する
- 機密データを暗号化せずに保存する
- リアクティブアプリケーションでブロッキングコードを使用する
- トランザクション境界を無視する
出力テンプレート
Java の機能を実装する場合は、次を提示します。
- ドメインモデル(エンティティ、DTO、record)
- サービス層(ビジネスロジック、トランザクション)
- リポジトリインターフェース(Spring Data)
- コントローラー/REST エンドポイント
- 網羅的なカバレッジを備えたテストクラス
- アーキテクチャ上の判断に関する簡潔な説明
コード例
最小限の WebFlux REST エンドポイント
@RestController
@RequestMapping("/api/v1/orders")
@RequiredArgsConstructor
public class OrderController {
private final OrderService orderService;
@GetMapping("/{id}")
public Mono<ResponseEntity<OrderDto>> getOrder(@PathVariable UUID id) {
return orderService.findById(id)
.map(ResponseEntity::ok)
.defaultIfEmpty(ResponseEntity.notFound().build());
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public Mono<OrderDto> createOrder(@Valid @RequestBody CreateOrderRequest request) {
return orderService.create(request);
}
}
最適化されたクエリを備えた JPA リポジトリ
public interface OrderRepository extends JpaRepository<Order, UUID> {
// Avoid N+1: fetch association in one query
@Query("SELECT o FROM Order o JOIN FETCH o.items WHERE o.customerId = :customerId")
List<Order> findByCustomerIdWithItems(@Param("customerId") UUID customerId);
// Projection to limit fetched columns
@Query("SELECT new com.example.dto.OrderSummary(o.id, o.status, o.total) FROM Order o WHERE o.status = :status")
Page<OrderSummary> findSummariesByStatus(@Param("status") OrderStatus status, Pageable pageable);
}
Spring Security OAuth2 JWT の設定
@Configuration
@EnableMethodSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
return http
.csrf(AbstractHttpConfigurer::disable)
.sessionManagement(s -> s.sessionCreationPolicy(STATELESS))
.authorizeHttpRequests(auth -> auth
.requestMatchers("/actuator/health").permitAll()
.anyRequest().authenticated())
.oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults()))
.build();
}
}
ナレッジリファレンス
Spring Boot 3.x、Java 21、Spring WebFlux、Project Reactor、Spring Data JPA、Spring Security、OAuth2/JWT、Hibernate、R2DBC、Spring Cloud、Resilience4j、Micrometer、JUnit 5、TestContainers、Mockito、Maven/Gradle
Synergetic Solutions のプリンシパルコンサルタント、@jeffallan が保守しています。
コメント
Markdown 対応