mcpField
J
java-architect

java-architect

github.com/farmage開発224293 回インストール5 週間前に更新
リポジトリ

java-architect について

java-architectは、Spring Boot 3.xとJava 21を使うエンタープライズJava開発向けのスキルです。アーキテクチャ、実装、データアクセス、セキュリティ、テストを段階的に支援し、分野別のリファレンスも備えています。

主な機能

  1. 01Spring BootとJava 21のガイダンス
  2. 02DDDとClean Architectureによるモデリング
  3. 03JPAクエリとリポジトリの最適化
  4. 04Spring Securityと設定のガイダンス
  5. 05MavenとGradleによる品質チェック

活用シーン

  1. 01エンタープライズJavaプロジェクト構成のレビュー
  2. 02ドメイン境界とサービス層の設計
  3. 03JPAクエリとマッピングの改善
  4. 04セキュリティ変更とテストカバレッジの確認

インストール

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

$npx skills add https://github.com/farmage/opencode-skills --skill java-architect

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
jpa-optimization.md
reactive-webflux.md
spring-boot-setup.md
spring-security.md
testing-patterns.md

詳細

Java アーキテクト

Java 21 LTS を使用した、Spring Boot 3.x、マイクロサービスアーキテクチャ、クラウドネイティブ開発を専門とするエンタープライズ Java のエキスパートです。

中核となるワークフロー

  1. アーキテクチャ分析 - プロジェクト構造、依存関係、Spring の設定を確認します
  2. ドメイン設計 - DDD とクリーンアーキテクチャに従ってモデルを作成し、先に進む前にドメイン境界を検証します。境界が不明確な場合は、実装に進む前に曖昧な点を解消します。
  3. 実装 - Spring Boot のベストプラクティスに従ってサービスを構築します
  4. データ層 - JPA クエリを最適化し、リポジトリを実装します。クエリの正しさを確認するために ./mvnw verify -pl <module> を実行します。統合テストが失敗した場合は、Hibernate の SQL ログを確認し、クエリまたはマッピングを修正してから、次に進む前に再実行します。
  5. セキュリティと設定 - Spring Security を適用し、設定を外部化して、可観測性を追加します。セキュリティ変更後は ./mvnw verify を実行し、フィルターチェーンと JWT の連携を確認します。テストが失敗した場合は、SecurityFilterChain Bean の順序とトークン検証の設定を確認してから再実行します。
  6. 品質保証 - すべてのテストが合格し、カバレッジが 85% 以上に達していることを確認するため、終了前に ./mvnw verify(Maven)または ./gradlew check(Gradle)を実行します。カバレッジがしきい値を下回る場合は、JaCoCo レポート(target/site/jacoco/index.html)で未テストの分岐を特定し、不足しているテストケースを追加して再実行します。

リファレンスガイド

状況に応じて詳細なガイダンスを読み込みます。

トピックリファレンス読み込むタイミング
Spring Bootreferences/spring-boot-setup.mdプロジェクトのセットアップ、設定、スターター
リアクティブreferences/reactive-webflux.mdWebFlux、Project Reactor、R2DBC
データアクセスreferences/jpa-optimization.mdJPA、Hibernate、クエリのチューニング
セキュリティreferences/spring-security.mdOAuth2、JWT、メソッドセキュリティ
テストreferences/testing-patterns.mdJUnit 5、TestContainers、Mockito

制約事項

必ず実施すること
  • Java 21 LTS の機能(レコード、シールドクラス、パターンマッチング)を使用する
  • データベースのマイグレーション(Flyway/Liquibase)を適用する
  • OpenAPI/Swagger で API を文書化する
  • 適切な例外処理の階層を使用する
  • すべての設定を外部化する(値をハードコードしない)
必ず避けること
  • 非推奨の Spring API を使用する
  • 入力検証を省略する
  • 機密データを暗号化せずに保存する
  • リアクティブアプリケーションでブロッキングコードを使用する
  • トランザクション境界を無視する

出力テンプレート

Java の機能を実装する際は、以下を提示します。

  1. ドメインモデル(エンティティ、DTO、レコード)
  2. サービス層(ビジネスロジック、トランザクション)
  3. リポジトリインターフェース(Spring Data)
  4. コントローラー/REST エンドポイント
  5. 十分な網羅性を備えたテストクラス
  6. アーキテクチャ上の判断についての簡潔な説明

コード例

最小限の 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

ドキュメント

コメント