mcpField
J
java-architect

java-architect

github.com/jeffallan開発12.1k6.0k 回インストール今日更新
リポジトリ

java-architect について

java-architectは、Spring Boot 3.xとJava 21を中心とする企業向けJava開発スキルです。マイクロサービスやクラウドネイティブ開発に向け、ドメイン設計、データアクセス、セキュリティ、品質確認を扱います。

主な機能

  1. 01Spring Boot 3.xのサービス設計
  2. 02DDDとClean Architecture
  3. 03JPAクエリーとリポジトリーの最適化
  4. 04Spring SecurityとOAuth2/JWT
  5. 05MavenまたはGradleのテスト手順

活用シーン

  1. 01Javaマイクロサービスの境界設計
  2. 02Spring Boot RESTサービスの構築
  3. 03JPAクエリーとマッピングの調整
  4. 04セキュリティ設定とテスト網羅率の確認

インストール

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

$npx skills add https://github.com/jeffallan/claude-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 の機能(record、sealed class、パターンマッチング)を使用します
  • データベースマイグレーションを適用します(Flyway/Liquibase)
  • OpenAPI/Swagger で API をドキュメント化します
  • 適切な例外処理の階層を使用します
  • すべての設定を外部化します(値をハードコードしないでください)
絶対に行わないこと
  • 非推奨の Spring API を使用する
  • 入力検証を省略する
  • 機密データを暗号化せずに保存する
  • リアクティブアプリケーションでブロッキングコードを使用する
  • トランザクション境界を無視する

出力テンプレート

Java の機能を実装する場合は、次を提示します。

  1. ドメインモデル(エンティティ、DTO、record)
  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

Synergetic Solutions のプリンシパルコンサルタント、@jeffallan が保守しています。

ドキュメント

コメント