mcpField
J
java-quarkus-development

java-quarkus-development

github.com/mindrally開発287843 回インストール3 週間前に更新
リポジトリ

java-quarkus-development について

Quarkus で Java アプリケーションを開発するためのベストプラクティスガイドです。マイクロサービスやコンテナ化・サーバーレスアプリを開発する人向けに、開発フロー、設定、データアクセス、テスト、性能、可観測性を扱います。

主な機能

  1. 01Quarkus 開発モードと Dev Services
  2. 02型安全な設定と依存性注入
  3. 03REST API とリアクティブプログラミング
  4. 04Panache によるデータアクセスと移行
  5. 05テスト、性能、可観測性の指針

活用シーン

  1. 01Quarkus サービスの設定方法の計画
  2. 02REST エンドポイントの開発とテスト
  3. 03データベース用エンティティとクエリの整理
  4. 04ネイティブイメージとヘルスチェックの準備

インストール

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

$npx skills add https://github.com/mindrally/skills --skill java-quarkus-development

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

詳細

Java Quarkus 開発のベストプラクティス

基本原則

  • Quarkus のベストプラクティスに従い、クリーンで効率的かつ十分に文書化された Java コードを記述します
  • GraalVM のネイティブビルドを活用して、起動を高速化し、メモリ使用量を最小限に抑えます
  • 一般的な機能には Quarkus エクステンションを活用します
  • コンテナ化された環境やサーバーレス環境へのデプロイを前提に設計します
  • SOLID 原則とマイクロサービスアーキテクチャのパターンに従います

開発ワークフロー

Quarkus 開発モード
  • ライブリロードによる迅速な反復開発には quarkus dev を使用します
  • 開発中は継続的テストを活用します
  • デバッグや設定の確認には Dev UI を使用します
  • ローカル開発では Dev Services を活用します

設定

型安全な設定
  • 型安全な設定のインジェクションには @ConfigProperty を使用します
  • 関連する設定は @ConfigMapping インターフェースでまとめます
  • 起動時に設定を検証します
  • 設定プロパティを文書化します
プロファイルベースの設定
  • 環境ごとの設定には %dev、%test、%prod のプレフィックスを使用します
  • 本番環境では環境変数を使って設定を上書きします
  • 機密情報をソース管理に含めないようにします
  • ローカル開発には .env ファイルを使用します

依存性注入

CDI アノテーション
  • 依存性注入には @Inject を使用します
  • 実装を識別するには @Named を使用します
  • @Singleton、@ApplicationScoped、@RequestScoped を適切に使い分けます
  • 必須の依存関係にはコンストラクターインジェクションを優先します
Bean の検出
  • Quarkus のビルド時 Bean 検出の仕組みを理解します
  • 条件付き Bean には @IfBuildProfile を使用します
  • ネイティブビルドではリフレクションに依存するパターンを避けます

REST API 開発

RESTEasy Reactive
  • エンドポイントの定義には @Path、@GET、@POST などを使用します
  • 適切な HTTP ステータスコードを返します
  • 入力検証には @Valid を使用します
  • 一貫性のあるエラーレスポンスを実現するため、例外マッパーを実装します
リアクティブパターン
  • リアクティブプログラミングには Mutiny を使用します
  • 非同期処理には Uni と Multi を活用します
  • 適切な場面ではリアクティブコードと命令型コードを組み合わせます

データアクセス

Panache を使用した Hibernate ORM
  • JPA パターンを簡素化するために Panache を使用します
  • Active Record パターンまたは Repository パターンを活用します
  • 組み込み操作を利用するエンティティには PanacheEntity を使用します
  • find メソッドや list メソッドでカスタムクエリを実装します
データベース操作
  • マイグレーションには Flyway または Liquibase を使用します
  • Agroal でコネクションプーリングを設定します
  • ノンブロッキング I/O にはリアクティブデータベースクライアントを使用します

テスト

JUnit 5 との統合
  • 統合テストには @QuarkusTest を使用します
  • ネイティブイメージのテストには @QuarkusIntegrationTest を使用します
  • 異なる設定にはテストプロファイルを活用します
REST エンドポイントのテスト
  • エンドポイントのテストには rest-assured を使用します
  • 成功するケースとエラーになるケースの両方をテストします
  • レスポンスボディとステータスコードを検証します
  • 認証と認可をテストします

パフォーマンスの最適化

ネイティブイメージの最適化
  • 本番環境向けに GraalVM でネイティブイメージをビルドします
  • 開発中もネイティブビルドを定期的にテストします
  • 必要に応じて @RegisterForReflection を使用します
  • リフレクションの使用を最小限に抑えます
メモリと起動
  • コンテナ内のメモリ使用量を監視します
  • サーバーレス環境のコールドスタートに最適化します
  • 適切な場面では遅延初期化を使用します

可観測性

ヘルスチェック
  • ライブネスプローブとレディネスプローブには MicroProfile Health を使用します
  • 依存関係に対するカスタムヘルスチェックを実装します
  • ヘルスエンドポイントに基づいて Kubernetes のプローブを設定します
メトリクス
  • アプリケーションのメトリクスには MicroProfile Metrics を使用します
  • メトリクスを Prometheus 形式でエクスポートします
  • ビジネス操作向けのカスタムメトリクスを追加します
分散トレーシング
  • OpenTracing/OpenTelemetry との統合を使用します
  • サービス間でトレースコンテキストを伝播します
  • 本番環境に適したサンプリングを設定します

セキュリティ

  • Quarkus Security エクステンションを使用します
  • OIDC または JWT で認証を実装します
  • Web クライアント向けに CORS を設定します
  • すべての入力を検証し、サニタイズします
  • 本番環境では HTTPS を使用します

コンテナ化

  • Quarkus コンテナイメージ拡張機能を使用します
  • ネイティブイメージ用のマルチステージ Dockerfile を作成します
  • リソース制限を適切に設定します
  • distroless または最小限のベースイメージを使用します

コメント