カテゴリ: Quarkus 更新日: 2026/03/10

Quarkusのビルドプロファイルを完全理解!dev・test・prodを使いこなす方法を初心者向けに解説

Quarkusのビルドプロファイル(dev/test/prod)を使いこなす
Quarkusのビルドプロファイル(dev/test/prod)を使いこなす

先生と生徒の会話形式で理解しよう

生徒

「Quarkusで開発していると、devとかprodってよく聞くんですが、正直違いがよくわかりません…」

先生

「Quarkusではビルドプロファイルという仕組みを使って、開発用・テスト用・本番用で設定を切り替えられるんですよ。」

生徒

「設定を切り替えるって、application.propertiesを分ける感じですか?」

先生

「その考え方は近いですね。Quarkusではもっとシンプルに管理できます。順番に見ていきましょう。」

1. Quarkusのビルドプロファイルとは何か

1. Quarkusのビルドプロファイルとは何か
1. Quarkusのビルドプロファイルとは何か

Quarkusのビルドプロファイルとは、開発・テスト・本番といった「実行環境」に合わせて、アプリケーションの動作や設定を自動で切り替えるための賢い仕組みです。 Java開発では、自分のPCでコードを書く時(開発環境)と、プログラムが正しく動くか確認する時(テスト環境)、そして実際にユーザーに公開する時(本番環境)で、接続するデータベースの場所やログの出し方を変える必要があります。

プログラミング未経験の方でもイメージしやすいよう、身近な例で例えてみましょう。

例:スマートフォンの「モード切り替え」
  • 開発モード(dev):画面が明るく、操作ガイドが常に表示されている状態。
  • テストモード(test):特定の機能が故障していないかチェックするための診断状態。
  • 通常モード(prod):余計な通知を抑え、バッテリー消費を最小限にした完成版の状態。

Quarkusには、最初からdev(開発)test(テスト)prod(本番)という3つのプロファイルが標準装備されています。 これらがあるおかげで、開発者は「今は本番用の設定だったかな?」と不安になる必要がなく、コマンド一つで安全に環境を使い分けることができるのです。

ポイント:ビルドプロファイルを使うことで、設定ファイルの書き換えミスによる「本番環境のデータを間違えて消してしまった!」というような重大な事故を未然に防ぐことができます。

2. devプロファイルの特徴と役割:開発のスピードを劇的に変える

2. devプロファイルの特徴と役割:開発のスピードを劇的に変える
2. devプロファイルの特徴と役割:開発のスピードを劇的に変える

devプロファイルは、Quarkusでプログラミングを行う際に最も頻繁に利用されるモードです。最大の特徴は、コードを書き換えた瞬間に変更内容が反映される「ライブコーディング(ホットリロード)」機能にあります。

従来のJava開発では、コードを一行修正するたびに「コンパイル」「再起動」「待機」という時間が必要でしたが、Quarkusのdevプロファイルならその必要はありません。ブラウザを更新したり、APIを呼び出したりした瞬間に変更が適用されるため、まるでJavaScriptを扱うような軽快なリズムで開発を進められます。

【実践例】コード修正が瞬時に反映される様子

例えば、画面に表示するメッセージを書き換える場面を想像してみましょう。初心者が最初に行う簡単な挨拶のプログラムです。


package org.acme;

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

@Path("/hello")
public class GreetingResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        // ここを "Hello Quarkus!" から "こんにちは、クォーカス!" に書き換えて保存するだけ
        return "こんにちは、クォーカス!";
    }
}

通常ならここで一度アプリを終了させますが、devプロファイルなら「ファイルを上書き保存」してページを再読み込みするだけで、新しいメッセージが表示されます。この「試行錯誤のしやすさ」こそが、未経験者がJavaを学ぶ上でQuarkusを強く推奨する理由です。

また、devプロファイルでは「開発UI(Dev UI)」と呼ばれる便利な管理画面も提供され、エラー発生時には親切なデバッグログがコンソールに出力されます。「どこで間違えたのか」が直感的に理解できるため、挫折することなく学習を継続できる強力な味方となってくれるでしょう。

3. testプロファイルの特徴と役割

3. testプロファイルの特徴と役割
3. testプロファイルの特徴と役割

testプロファイルは、JUnitなどを使ったテスト実行時に使われるビルドプロファイルです。 Quarkusではテスト用の設定を本番環境と分離できるため、安全にテストを行えます。 データベース接続先をテスト用に切り替えたり、外部サービスとの通信を無効化したりできます。

Javaでの自動テストを学ぶうえでも、testプロファイルの存在は重要です。 本番環境と同じ設定でテストをしてしまう事故を防げる点も、Quarkusの大きな魅力です。

4. prodプロファイルの特徴と役割

4. prodプロファイルの特徴と役割
4. prodプロファイルの特徴と役割

prodプロファイルは、本番環境で実際にユーザーが利用する際に使われるプロファイルです。 パフォーマンスと安定性が最優先され、不要なログや開発向け機能は無効になります。 Quarkusは高速起動と低メモリ消費を強みとしており、prodプロファイルでその性能が最大限に発揮されます。

GraalVMによるネイティブイメージ生成も、prodプロファイルを前提として行われることが多いです。 クラウド環境やコンテナ環境でQuarkusを使う場合、このプロファイルが中心になります。

5. application.propertiesでのプロファイル設定

5. application.propertiesでのプロファイル設定
5. application.propertiesでのプロファイル設定

Quarkusではapplication.propertiesファイルにプロファイルごとの設定をまとめて記述できます。 同じキーでも、どのビルドプロファイルで使われるかによって値を切り替えられるのが特徴です。 Javaの設定管理に慣れていない初心者でも直感的に扱えます。


# 共通設定
quarkus.http.port=8080

# devプロファイル用設定
%dev.quarkus.log.level=DEBUG

# testプロファイル用設定
%test.quarkus.log.level=INFO

# prodプロファイル用設定
%prod.quarkus.log.level=WARN

このように記述することで、dev、test、prodそれぞれの環境に応じた設定が自動的に適用されます。 application.propertiesを分割する必要がないため、管理が非常に楽になります。

6. ビルドプロファイルを指定して起動する方法

6. ビルドプロファイルを指定して起動する方法
6. ビルドプロファイルを指定して起動する方法

Quarkusではコマンド実行時にビルドプロファイルを指定できます。 MavenやGradleを使ったJavaプロジェクトでも、特別な設定は不要です。 開発時にはdev、本番ではprodを明示的に指定することで、意図しない設定ミスを防げます。


# devモードで起動
./mvnw quarkus:dev

# prodプロファイルで起動
java -jar target/quarkus-app/quarkus-run.jar

devモードは自動的にdevプロファイルになります。 一方で本番実行時はprodプロファイルが使われるため、Quarkusの設計思想が自然に身につきます。

7. ビルドプロファイルを使いこなすメリット

7. ビルドプロファイルを使いこなすメリット
7. ビルドプロファイルを使いこなすメリット

Quarkusのビルドプロファイルを使いこなすことで、Javaアプリケーション開発の品質が大きく向上します。 環境ごとの設定ミスを防ぎ、開発から本番まで一貫した運用が可能になります。 特にクラウド環境やコンテナ環境では、この仕組みが大きな武器になります。

初心者のうちからdev、test、prodの考え方に慣れておくことで、 実務レベルのJava開発にもスムーズに移行できます。 Quarkusは学習と実践を両立しやすいフレームワークと言えるでしょう。

関連記事:
カテゴリの一覧へ
新着記事
New1
Micronaut
Micronautの@Factoryとは?複雑なBean生成を管理するための方法を解説
New2
Quarkus
QuarkusのDIとCDIを完全理解!@Producesでプロデューサーメソッドを使う方法を初心者向けに解説
New3
Java
JavaのStringBufferクラスを徹底解説!スレッド安全な文字列操作の仕組みと使い分け
New4
Micronaut
Micronautで非同期HTTP処理を行う方法!リアクティブ対応の基礎知識
人気記事
No.1
Java&Spring記事人気No1
Quarkus
Quarkus入門!GitHub ActionsでCI/CDパイプラインを構築して自動ビルドを実現する方法
No.2
Java&Spring記事人気No2
Java
Javaのコンパイルと実行の流れを解説!JVM・JDK・JREの違いも初心者向けに整理
No.3
Java&Spring記事人気No3
Micronaut
Micronautのルーティング設定ガイド!プレフィックス付与とAPIバージョニングの基本
No.4
Java&Spring記事人気No4
Quarkus
QuarkusのCI/CD入門!GitHub Actionsで自動デプロイを実現する方法
No.5
Java&Spring記事人気No5
Micronaut
Micronautのフィルタ徹底解説!HTTPリクエスト共通処理をスマートに追加する方法
No.6
Java&Spring記事人気No6
Java
Java Functionインタフェースの使い方を完全ガイド!map変換と処理チェーンを理解する
No.7
Java&Spring記事人気No7
Java
Java Optional ifPresentの使い方を徹底解説!nullチェックをスマートに省略する方法
No.8
Java&Spring記事人気No8
Java
JavaのString比較を徹底解説!equalsと==の違い、初心者が陥る罠とは?