mcpField
S
spring-boot-project-creator

spring-boot-project-creator

github.com/giuseppe-trisciuoglio開発3653.5k 回インストール7 週間前に更新
リポジトリ

spring-boot-project-creator について

Spring Initializrを使ってSpring Bootプロジェクトを作成するスキルです。設定やアーキテクチャ、ローカルサービスを選び、DDDまたはレイヤード構成のビルド可能なプロジェクトを生成します。

主な機能

  1. 01Spring Initializrによるプロジェクト生成
  2. 02DDDまたはレイヤード構成の設定
  3. 03PostgreSQL、Redis、MongoDBの追加
  4. 04Docker Composeのローカルサービス設定
  5. 05Mavenによるビルド検証

活用シーン

  1. 01新しいSpring Bootバックエンドの開始
  2. 02PostgreSQLを使うREST APIの作成
  3. 03Redisを含むDDDマイクロサービスの作成
  4. 04ローカル開発サービスの設定

インストール

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

$npx skills add https://github.com/giuseppe-trisciuoglio/developer-kit --skill spring-boot-project-creator

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

詳細

Spring Boot プロジェクト作成ツール

概要

Spring Initializr API を使用して、設定済みの Spring Boot プロジェクトをゼロから生成します。このスキルでは、プロジェクトのパラメーター選択、アーキテクチャスタイル(DDD または Layered)の選択、データストアの設定、ローカル開発用の Docker Compose のセットアップをユーザーに案内します。標準化された構造、依存関係管理、設定を備えた、ビルド可能なプロジェクトが作成されます。

使用する場面

  • 標準的な構造で Spring Boot 3.x または 4.x の新規プロジェクトを立ち上げる場合。
  • JPA、SpringDoc OpenAPI、Docker Compose を備えたバックエンドマイクロサービスを初期化する場合。
  • DDD(ドメイン駆動設計)または Layered(Controller/Service/Repository/Model)アーキテクチャに沿ってプロジェクトをスキャフォールドする場合。
  • Docker Compose を使用して PostgreSQL、Redis、MongoDB によるローカル開発インフラストラクチャをセットアップする場合。
  • トリガーフレーズ:"create spring boot project"、"new spring boot app"、"bootstrap java project"、"scaffold spring boot microservice"、"initialize spring boot backend"、"generate spring boot project"。

前提条件

開始する前に、以下のツールがインストールされていることを確認してください。

  • Java Development Kit (JDK):バージョン 17 以降(Spring Boot 3.x/4.x では Java 21 を推奨)
  • Apache Maven:ビルドツール(Spring Initializr はデフォルトで Maven プロジェクトを生成します)
  • Docker および Docker Compose:ローカルインフラストラクチャサービスの実行用
  • curl および unzip:Spring Initializr からのプロジェクトのダウンロードと展開用

手順

以下の手順に従って、新しい Spring Boot プロジェクトを作成します。

1. プロジェクト設定の収集

AskUserQuestion を使用して、以下のプロジェクトパラメーターをユーザーに尋ねます。適切なデフォルト値を提示してください。

パラメーターデフォルト選択肢
Group IDcom.example有効な Java パッケージ名
Artifact IDdemoケバブケースの識別子
Package NameGroup ID と同じ有効な Java パッケージ
Spring Boot Version3.4.53.4.x、4.0.x(最新バージョンは start.spring.io で確認)
Java Version2117、21
Architectureユーザーが選択DDD または Layered
Docker Servicesユーザーが選択PostgreSQL、Redis、MongoDB(複数選択可)
Build Toolmavenmaven、gradle
2. Spring Initializr でプロジェクトを生成

curl を使用して、start.spring.io からプロジェクトのスキャフォールドをダウンロードします。

基本依存関係(常に含める):

  • web — Spring Web MVC
  • validation — Jakarta Bean Validation
  • data-jpa — Spring Data JPA
  • testcontainers — Testcontainers サポート

条件付き依存関係(Docker Services の選択に基づく):

  • PostgreSQL を選択 → postgresql を追加
  • Redis を選択 → data-redis を追加
  • MongoDB を選択 → data-mongodb を追加
# Example for Spring Boot 3.4.5 with PostgreSQL only
curl -s https://start.spring.io/starter.zip \
  -d type=maven-project \
  -d language=java \
  -d bootVersion=3.4.5 \
  -d groupId=com.example \
  -d artifactId=demo \
  -d packageName=com.example \
  -d javaVersion=21 \
  -d packaging=jar \
  -d dependencies=web,data-jpa,postgresql,validation,testcontainers \
  -o starter.zip

unzip -o starter.zip -d ./demo
rm starter.zip
cd demo
3. 追加の依存関係を追加

pom.xml を編集して、SpringDoc OpenAPI とアーキテクチャテスト用の ArchUnit を追加します。


<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.8.15</version>
</dependency>


<dependency>
    <groupId>com.tngtech.archunit</groupId>
    <artifactId>archunit-junit5</artifactId>
    <version>1.4.1</version>
    <scope>test</scope>
</dependency>
4. アーキテクチャ構造の作成

ユーザーの選択に基づいて、src/main/java/<packagePath>/ の下にパッケージ構造を作成します。

オプション A:Layered アーキテクチャ
src/main/java/com/example/
├── controller/        # REST controllers (@RestController)
├── service/           # Business logic (@Service)
├── repository/        # Data access (@Repository, Spring Data interfaces)
├── model/             # JPA entities (@Entity)
│   └── dto/           # Request/Response DTOs (Java records)
├── config/            # Configuration classes (@Configuration)
└── exception/         # Custom exceptions and @ControllerAdvice

各レイヤーのプレースホルダークラスを作成します。

  • config/OpenApiConfig.java — SpringDoc OpenAPI の設定 Bean
  • exception/GlobalExceptionHandler.java — 標準的なエラー処理を備えた @RestControllerAdvice
  • model/dto/ErrorResponse.java — 標準エラーレスポンスの record
オプション B:DDD(ドメイン駆動設計)アーキテクチャ
src/main/java/com/example/
├── domain/                 # Core domain (framework-free)
│   ├── model/              # Entities, Value Objects, Aggregates
│   ├── repository/         # Repository interfaces (ports)
│   └── exception/          # Domain exceptions
├── application/            # Use cases / Application services
│   ├── service/            # @Service orchestration
│   └── dto/                # Input/Output DTOs (records)
├── infrastructure/         # External adapters
│   ├── persistence/        # JPA entities, Spring Data repos
│   └── config/             # Spring @Configuration
└── presentation/           # REST API layer
    ├── controller/         # @RestController
    └── exception/          # @RestControllerAdvice

各レイヤーのプレースホルダークラスを作成します。

  • infrastructure/config/OpenApiConfig.java — SpringDoc OpenAPI の設定 Bean
  • presentation/exception/GlobalExceptionHandler.java — 標準的なエラー処理を備えた @RestControllerAdvice
  • application/dto/ErrorResponse.java — 標準エラーレスポンスの record
5. アプリケーションプロパティを設定する

選択したサービスを含む src/main/resources/application.properties を作成します。

必ず含めてください:

# Application
spring.application.name=${artifactId}

# SpringDoc OpenAPI
springdoc.swagger-ui.doc-expansion=none
springdoc.swagger-ui.operations-sorter=alpha
springdoc.swagger-ui.tags-sorter=alpha

PostgreSQL を選択した場合:

# PostgreSQL / JPA
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/${POSTGRES_DB:postgres}
spring.datasource.username=${POSTGRES_USER:postgres}
spring.datasource.password=${POSTGRES_PASSWORD:changeme}
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

Redis を選択した場合:

# Redis
spring.data.redis.host=localhost
spring.data.redis.port=6379
spring.data.redis.password=${REDIS_PASSWORD:changeme}

MongoDB を選択した場合:

# MongoDB
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=${MONGO_USER:root}
spring.data.mongodb.password=${MONGO_PASSWORD:changeme}
spring.data.mongodb.database=${MONGO_DB:test}
6. Docker Compose をセットアップする

プロジェクトのルートに、ユーザーが選択したサービスのみを含む docker-compose.yaml を作成します。

services:
  # Include if PostgreSQL selected
  postgresql:
    image: postgres:17
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: ${POSTGRES_USER:-postgres}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme}
      POSTGRES_DB: ${POSTGRES_DB:-postgres}
    volumes:
      - ./postgres_data:/var/lib/postgresql/data

  # Include if Redis selected
  redis:
    image: redis:7
    ports:
      - "6379:6379"
    command: redis-server --requirepass ${REDIS_PASSWORD:-changeme}
    volumes:
      - ./redis_data:/data

  # Include if MongoDB selected
  mongodb:
    image: mongo:8
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_USER:-root}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD:-changeme}
    volumes:
      - ./mongo_data:/data/db
7. Docker Compose 用の .env ファイルを作成する

ローカル開発用のデフォルト認証情報を含む .env ファイルをプロジェクトのルートに作成します。

# PostgreSQL
POSTGRES_USER=postgres
POSTGRES_PASSWORD=changeme
POSTGRES_DB=postgres

# Redis
REDIS_PASSWORD=changeme

# MongoDB
MONGO_USER=root
MONGO_PASSWORD=changeme
MONGO_DB=test

ユーザーが選択したサービスの変数のみを含めます。Docker Compose はこのファイルを自動的に読み込みます。

8. .gitignore を更新する

Docker Compose のボリュームディレクトリと .env ファイルを .gitignore に追加します。

# Docker Compose
.env
postgres_data/
redis_data/
mongo_data/
9. ビルドを検証する

Maven ビルドを実行して、プロジェクトがコンパイルされ、テストに合格することを確認します。

./mvnw clean verify

ビルドが成功した場合は、ユーザーに知らせます。失敗した場合は、続行する前に原因を特定して修正します。

10. ユーザーに概要を提示する

作成したプロジェクトの概要を表示します。

Project Created Successfully

  Artifact:      <artifactId>
  Spring Boot:   <version>
  Java:          <javaVersion>
  Architecture:  <DDD | Layered>
  Build Tool:    Maven
  Docker:        <services list>

  Directory:     ./<artifactId>/

  Next Steps:
    1. cd <artifactId>
    2. docker compose up -d
    3. ./mvnw spring-boot:run
    4. Open http://localhost:8080/swagger-ui.html

アーキテクチャパターン

レイヤードアーキテクチャ

関心事を明確に分離した、従来型の3層アーキテクチャです。

レイヤーパッケージ責務
プレゼンテーションcontroller/HTTP エンドポイント、リクエスト/レスポンスのマッピング
ビジネスservice/ビジネスロジック、トランザクション管理
データアクセスrepository/Spring Data によるデータベース操作
ドメインmodel/JPA エンティティと DTO

適している用途: シンプルな CRUD アプリケーション、小規模から中規模のサービス、Spring Boot を初めて使用するチーム。

DDD アーキテクチャ

ヘキサゴナルな境界を持つドメイン駆動設計です。

レイヤーパッケージ責務
ドメインdomain/エンティティ、値オブジェクト、ドメインサービス(フレームワークに依存しない)
アプリケーションapplication/ユースケース、オーケストレーション、DTO マッピング
インフラストラクチャinfrastructure/JPA アダプター、外部連携、設定
プレゼンテーションpresentation/REST コントローラー、エラー処理

適している用途: 複雑なビジネスドメイン、豊富なロジックを持つマイクロサービス、長期間運用するプロジェクト。

例

例 1:PostgreSQL を使用したシンプルな REST API(レイヤード)

ユーザーのリクエスト:「PostgreSQL を使った REST API 用の Spring Boot プロジェクトを作成してください」

curl -s https://start.spring.io/starter.zip \
  -d type=maven-project \
  -d bootVersion=3.4.5 \
  -d groupId=com.example \
  -d artifactId=my-api \
  -d packageName=com.example.myapi \
  -d javaVersion=21 \
  -d dependencies=web,data-jpa,postgresql,validation,testcontainers \
  -o starter.zip

結果:controller/、service/、repository/、model/ パッケージを含むレイヤードプロジェクト、PostgreSQL 用の Docker Compose、SpringDoc OpenAPI。

例 2:DDD と複数のストアを使用するマイクロサービス

ユーザーのリクエスト:「DDD、PostgreSQL、Redis を使用する Spring Boot 3 マイクロサービスをブートストラップしてください」

curl -s https://start.spring.io/starter.zip \
  -d type=maven-project \
  -d bootVersion=3.4.5 \
  -d groupId=com.acme \
  -d artifactId=order-service \
  -d packageName=com.acme.order \
  -d javaVersion=21 \
  -d dependencies=web,data-jpa,postgresql,data-redis,validation,testcontainers \
  -o starter.zip

結果:domain/、application/、infrastructure/、presentation/ パッケージを含む DDD プロジェクト、PostgreSQL と Redis 用の Docker Compose、SpringDoc OpenAPI。

ベストプラクティス

  • プロジェクトの生成には必ず Spring Initializr を使用します。 正しい依存関係管理と親 POM を利用できます。
  • DTO には Java のレコードを使用します。 不変で簡潔です。
  • DDD アーキテクチャでは、ドメインレイヤーをフレームワークに依存させないようにします。 domain/ に Spring アノテーションを使用しないでください。
  • 本番環境の機密設定(データベースのパスワードなど)には、環境変数を使用します。
  • 予期しない破壊的変更を避けるため、docker-compose.yaml の Docker イメージのバージョンを固定します。
  • すべてがコンパイルされ、テストに合格することを確認するため、セットアップ後に ./mvnw clean verify を実行します。
  • Docker Compose に依存するのではなく、統合テストには Testcontainers を追加します。

制約と警告

  • Spring Initializr を使用するにはインターネット接続が必要です。このスキルはオフラインでは動作しません。
  • Spring Boot 4.x の提供状況は現在のリリースサイクルによって異なります。最新バージョンは start.spring.io で確認してください。
  • Docker Compose の認証情報は .env ファイル(Git の追跡対象外)から読み込まれます。シークレットをバージョン管理にコミットしないでください。
  • spring.jpa.hibernate.ddl-auto=update の設定は開発専用です。本番環境では Flyway または Liquibase を使用してください。
  • ArchUnit のバージョンは、Spring Boot にバンドルされている JUnit 5 のバージョンと互換性がある必要があります。

コメント