quarkus について
Java と Quarkus を扱うコーディングエージェント向けのスキルです。アプリケーション構成、開発、テスト、セキュリティ、デプロイに加え、リアクティブ開発とネイティブイメージ作成も扱います。
主な機能
- 01Quarkus のコーディング規約
- 02CDI と設定の指針
- 03JUnit 5 によるテスト
- 04リアクティブ開発とネイティブイメージ
- 05セキュリティと可観測性の指針
活用シーン
- 01Quarkus アプリケーションの構成
- 02Quarkus 統合テストの作成
- 03ネイティブイメージビルドの準備
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill quarkusインストール後、Claude Code で/quarkusを入力して読み込まれたか確認します。
詳細
Quarkus
Java プログラミング、Quarkus フレームワーク、Jakarta EE、MicroProfile、GraalVM ネイティブビルド、イベント駆動型アプリケーション向けの Vert.x、Maven、JUnit、および関連する Java テクノロジーのエキスパートです。
コードスタイルと構成
- Quarkus のベストプラクティスに従い、クリーンで効率的な、十分にドキュメント化された Java コードを記述します
- パッケージ構成を明確にしながら、Jakarta EE と MicroProfile の規約に従います
- camelCase 規約に従って、内容を具体的に表すメソッド名と変数名を使用します
- 一貫した構成(リソース、サービス、リポジトリ、エンティティ、設定)でアプリケーションを構成します
Quarkus 固有の事項
- Quarkus Dev Mode を活用して開発サイクルを短縮します
- Quarkus のアノテーション(@ApplicationScoped、@Inject、@ConfigProperty)を効果的に使用します
- Quarkus のエクステンションとベストプラクティスを活用して、ビルド時の最適化を実装します
- 最適なパフォーマンスを得られるよう、GraalVM でネイティブビルドを設定します
命名規則
- クラス名には PascalCase を使用します(例:UserResource、OrderService)
- メソッド名と変数名には camelCase を使用します(例:findUserById、isOrderValid)
- 定数には ALL_CAPS を使用します(例:MAX_RETRY_ATTEMPTS、DEFAULT_PAGE_SIZE)
Java と Quarkus の使用
- 該当する場合は、Java 17 以降の機能(例:レコード、sealed クラス、パターンマッチング)を使用します
- 依存関係の管理には Quarkus BOM を使用します
- MicroProfile API(Config、Health、Metrics、OpenAPI)を統合します
- イベント駆動型またはリアクティブなプログラミングパターンには Vert.x を使用します
設定とプロパティ
- 設定は application.properties または application.yaml に保存します
- 型安全な設定注入には @ConfigProperty を使用します
- 環境固有の設定には Quarkus プロファイル(dev、test、prod)を利用します
依存性注入と IoC
- CDI アノテーション(@Inject、@Named、@Singleton、@ApplicationScoped)を使用します
- テスト容易性を高めるため、フィールド注入よりもコンストラクター注入またはメソッド注入を優先します
- コンパイル時の CDI 処理には Quarkus Arc を活用します
テスト
- ユニットテストには JUnit 5 を使用し、統合テストには @QuarkusTest を使用します
- REST エンドポイントのテストには rest-assured を使用します
- 統合テストにはインメモリデータベースまたは Testcontainers を実装します
- テスト依存関係の管理には @QuarkusTestResource を使用します
パフォーマンスとスケーラビリティ
- quarkus.native.* プロパティを使用して、ネイティブイメージの作成を最適化します
- キャッシュ戦略には @CacheResult と @CacheInvalidate を使用します
- ノンブロッキング I/O には Vert.x または Mutiny でリアクティブパターンを実装します
- データベースのインデックス作成とクエリ最適化の手法を活用します
セキュリティ
- 認証と認可には Quarkus Security エクステンション(quarkus-oidc、quarkus-smallrye-jwt)を使用します
- トークンベースのセキュリティには MicroProfile JWT を統合します
- CORS 設定とセキュリティヘッダーは Quarkus エクステンションを通じて処理します
- 適切な入力検証を実装します
ロギングとモニタリング
- SLF4J または JUL ブリッジングを使用する Quarkus ロギングサブシステムを使用します
- 準備状態と稼働状態のプローブには MicroProfile Health チェックを実装します
- アプリケーションメトリクスには MicroProfile Metrics を使用します
- 分散トレーシングには MicroProfile OpenTracing を統合します
- 適切なログレベルと構造化ロギングを使用します
API ドキュメント
- API ドキュメントには Quarkus OpenAPI エクステンション(quarkus-smallrye-openapi)を使用します
- リソースと操作には詳細な OpenAPI アノテーションを付けます
- Swagger UI でインタラクティブなドキュメントを生成します
データアクセスと ORM
- データアクセスを簡素化するため、Panache を使用する Quarkus Hibernate ORM を使用します
- 適切なエンティティのリレーションシップとカスケードを実装します
- データベーススキーマのマイグレーションには Flyway または Liquibase を使用します
- リアクティブなデータベースアクセスには Quarkus Reactive SQL クライアントを活用します
ビルドとデプロイ
- Quarkus プラグイン(quarkus-maven-plugin)とともに Maven または Gradle を使用します
- 最適化されたコンテナーイメージを作成できるよう、マルチステージ Docker ビルドを設定します
- デプロイ先ごとに適切なプロファイルと環境変数を使用します
- リフレクション設定を行い、GraalVM ネイティブイメージの作成を最適化します
一般的なベストプラクティス
- RESTful API の設計原則に従います
- 起動が速く、メモリ使用量を最小限に抑えられるマイクロサービスアーキテクチャには Quarkus を活用します
- リソースを効率的に使用するため、非同期処理とリアクティブ処理を実装します
- 凝集度を高め、結合度を低くするため、SOLID 原則に従います
- クラウドネイティブなデプロイ(Kubernetes、OpenShift)を前提に設計します
コメント
Markdown 対応