カテゴリ: Quarkus 更新日: 2026/02/21

Quarkusプロジェクトの初期構成で入れるべきExtensionを完全ガイド!初心者でも迷わない必須設定

Quarkusプロジェクトの初期構成で入れておくべきExtension
Quarkusプロジェクトの初期構成で入れておくべきExtension

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

生徒

「Quarkusのプロジェクトを作るときに、Extensionを選ぶ画面が出てくるのですが、どれを入れれば良いのか迷ってしまいます。」

先生

「QuarkusではExtensionがとても重要です。必要なExtensionを最初に入れておくと、開発がぐっと楽になりますよ。」

生徒

「どれを入れておくべきか、初心者でもわかりやすく教えてほしいです!」

先生

「それでは、Quarkusプロジェクトの初期構成でよく使うExtensionを順番に説明していきましょう。」

1. Quarkus Extensionとは何か?

1. Quarkus Extensionとは何か?
1. Quarkus Extensionとは何か?

QuarkusのExtensionとは、アプリケーションに必要な機能を後から追加できる仕組みです。 Spring BootのStarterと同じように、Extensionを選ぶだけで関連するライブラリや設定がまとめて組み込まれます。 REST API、JSON処理、データベース接続、ログ出力など、Quarkusの主要機能はほぼすべてExtensionとして提供されています。

初心者の方は「どんなコードを書くか」よりも先に、「どのExtensionを入れるか」で迷うことが多いですが、 Extensionはあくまで“使える機能の箱”を追加するものだと考えると分かりやすくなります。 使わない機能を入れすぎないことも、Quarkusの軽快さを保つポイントです。

例えば、REST APIを作りたい場合は、次のようなシンプルなクラスを書く前に、 REST用のExtensionを追加しておく必要があります。


@Path("/sample")
public class SampleResource {
    @GET
    public String message() {
        return "Extensionの仕組みを理解しよう";
    }
}

このようなコードが動くのは、REST API用のExtensionが内部で必要な処理を用意してくれているからです。 Quarkusでは「まずExtensionを選び、次にコードを書く」という流れが基本になります。 この考え方を最初に理解しておくと、以降のExtension選択で迷いにくくなります。

2. REST APIを作るなら必須 RESTEasy Reactive

2. REST APIを作るなら必須 RESTEasy Reactive
2. REST APIを作るなら必須 RESTEasy Reactive

QuarkusでWebアプリケーションやAPI開発を行う場合、まず最初に検討すべきExtensionが 「RESTEasy Reactive」です。 これは、ブラウザや外部システムからのリクエストを受け取り、結果を返すための基本機能を提供します。 Quarkusの特徴である高速起動や軽量さを活かしながら、シンプルなREST APIを作れる点が大きな魅力です。

プログラミング未経験の方でも、「URLにアクセスすると文字が表示される」という形で動作を確認できるため、 最初の学習ステップとしても非常に分かりやすいExtensionです。 RESTEasy Reactiveを追加しておけば、複雑な設定を意識せずにAPI開発を始められます。


import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;

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

    @GET
    public String hello() {
        return "hello";
    }
}

この例では、「/hello」というURLにアクセスすると、「hello」という文字列が表示されます。 難しい処理は一切書いていませんが、RESTEasy Reactiveが裏側でリクエスト処理を担当してくれています。 REST APIを中心に開発する予定であれば、初期構成で必ず入れておきたいExtensionです。

3. JSON処理の基本 Jackson

3. JSON処理の基本 Jackson
3. JSON処理の基本 Jackson

API開発では、画面や他のシステムとデータをやり取りする場面が多く、そのときによく使われる形式がJSONです。 QuarkusでJSONを扱うなら「Jackson」Extensionを入れておくと安心です。 Jacksonを追加することで、JavaのオブジェクトをJSONに変換したり、JSONをJavaの形に戻したりする処理を、手作業で書かずに済みます。

初心者の方がつまずきやすいのは、「文字列としてJSONを組み立てようとして、カンマやダブルクォートで崩れる」パターンです。 Jacksonが入っていれば、Quarkus側が変換を手伝ってくれるため、まずは“Javaの形でデータを作る”ことに集中できます。 結果として、APIの戻り値が読みやすくなり、テストもしやすくなります。

例えば、次のように名前を返すだけのAPIでも、JacksonがあるとJSON形式で返せるようになります。 「ブラウザでアクセスしたらJSONが表示された」という体験ができるので、学習の最初にも向いています。


import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;

@Path("/user")
public class UserResource {

    @GET
    public User getUser() {
        return new User("Taro");
    }

    public static class User {
        public String name;

        public User(String name) {
            this.name = name;
        }
    }
}

この例では、「/user」にアクセスすると、ユーザー情報がJSONとして返ります。 もしJacksonが入っていないと、同じことをするために追加の作業が必要になります。 REST APIを作るなら、Jacksonは早めに入れておくと後から困りにくいExtensionです。

4. 開発効率を上げる DevTools

4. 開発効率を上げる DevTools
4. 開発効率を上げる DevTools

Quarkusでの開発効率を大きく高めてくれるのが、DevToolsとDev Modeの存在です。 特に初心者の方にとっては、「コードを書き換えたらすぐ結果が見える」という体験ができる点が大きな魅力になります。 通常のJava開発では、修正のたびにビルドや再起動が必要ですが、Quarkusではその待ち時間がほとんどありません。

Dev Modeを使うと、Javaファイルや設定ファイルを保存した瞬間に変更が自動で反映されます。 「書く → 保存する → ブラウザで確認する」という流れが非常にスムーズなため、 プログラミング未経験の方でも試行錯誤しながら学習を進めやすくなります。 エラーが出た場合も、その内容がすぐに画面に表示されるため、原因を追いやすいのも特徴です。


./mvnw quarkus:dev

このコマンドを実行すると、Quarkusは開発専用モードで起動します。 例えば、先ほど作成したREST APIの戻り値を少し変えて保存するだけで、 再起動せずにブラウザの表示が更新されます。 DevToolsを最初から使うことで、開発のテンポが上がり、挫折しにくい環境を作ることができます。

5. 設定ファイルを扱う SmallRye Config

5. 設定ファイルを扱う SmallRye Config
5. 設定ファイルを扱う SmallRye Config

Quarkusでアプリケーションを動かすうえで欠かせないのが「設定ファイル」です。 例えば、起動ポートやログレベル、データベース接続先など、環境によって変えたい情報はコードに直接書かず、 application.properties や application.yaml にまとめて管理するのが基本になります。 その設定を扱いやすくしてくれるのが「SmallRye Config」です。

SmallRye Configがあると、設定ファイルだけでなく環境変数とも連携しやすくなり、 「開発用」「本番用」といった切り替えもスムーズに行えます。 初心者の方が最初に迷いやすいポイントですが、まずは設定はファイルに書くものと覚えておくと、 後から機能を増やしても整理しやすくなります。

例えば、次のようにポート番号やログ出力レベルを設定しておくと、起動時の挙動が分かりやすくなります。 設定は一行ずつ反映されるため、「どこを変えたら何が変わるか」を確認しながら学べるのもメリットです。


# ポート番号を変更する例
quarkus.http.port=8081

# ログの詳細度を調整する例
quarkus.log.level=INFO

ここで設定した内容は、Quarkusを起動したときに自動で読み込まれます。 もし「ポートが変わらない」「設定が効いていない」と感じた場合は、ファイル名の間違い(application.properties かどうか)や、 キーのスペルミス、余計な空白が入っていないかを確認してみてください。 SmallRye Configは、Quarkusの設定管理を安定させるために、初期構成で入れておくと安心できるExtensionです。

6. データベース接続なら Hibernate ORM + JDBC Driver

6. データベース接続なら Hibernate ORM + JDBC Driver
6. データベース接続なら Hibernate ORM + JDBC Driver

アプリケーションがデータベースを利用するなら、初期構成で必ずデータベース関連のExtensionを入れておく必要があります。

  • Hibernate ORM
  • JDBC Driver(PostgreSQL / MySQLなど)

Panache ORMを使う場合はさらに便利で、コード量が大幅に減ります。


import io.quarkus.hibernate.orm.panache.PanacheEntity;
import jakarta.persistence.Entity;

@Entity
public class User extends PanacheEntity {
    public String name;
}

データベース利用予定があるプロジェクトなら、初期構成に加えておくべきExtensionです。

7. ログ出力・監視に便利な Extension

7. ログ出力・監視に便利な Extension
7. ログ出力・監視に便利な Extension

アプリケーション開発ではログと監視も重要です。Quarkusでは次のようなExtensionが初期追加されることが多いです。

  • SmallRye Health(ヘルスチェック)
  • SmallRye Metrics(メトリクス収集)
  • SmallRye OpenAPI(APIドキュメント生成)

特にOpenAPIは、ブラウザでAPI仕様を確認できるため非常に便利です。


http://localhost:8080/q/swagger-ui

8. 初心者がまず入れるべきExtension一覧

8. 初心者がまず入れるべきExtension一覧
8. 初心者がまず入れるべきExtension一覧

学習目的や小規模APIなら次のセットが最も扱いやすく、おすすめです。

  • RESTEasy Reactive
  • RESTEasy Reactive Jackson
  • SmallRye Config
  • SmallRye OpenAPI
  • SmallRye Health
  • Hibernate ORM Panache(DB利用時)
  • JDBC Driver(PostgreSQL or MySQL)
  • quarkus-arc(DI機能、ほぼ必須)

この構成でほとんどのWebアプリが開発でき、学習にも最適です。

まとめ

まとめ
まとめ

ここまで、Quarkusプロジェクトを立ち上げる際に「これだけは外せない」という主要なExtension(エクステンション)について詳しく解説してきました。 Quarkusは、従来のJavaフレームワークと比べて起動が驚異的に速く、メモリ消費も少ないという特徴がありますが、その恩恵を最大限に受けるためには、適切なExtensionの選択が不可欠です。

プロジェクト初期に導入すべき構成の振り返り

記事の内容を振り返ると、モダンなWeb開発において基盤となるのは以下の3つの柱です。

  • 通信の基盤: RESTEasy ReactiveによるノンブロッキングなAPI実装。
  • データのやり取り: Jacksonを用いたJavaオブジェクトとJSONの自動変換。
  • 開発の快適さ: DevToolsによるライブコーディング環境の構築。

これらに加えて、データベースを扱うならHibernate ORM Panache、設定を管理するならSmallRye Configを組み合わせることで、エンタープライズレベルの開発にも対応できる強固な土台が出来上がります。 特に、初心者のうちは「何が必要か」を迷いがちですが、まずは今回紹介した標準的なセットからスタートし、必要に応じてExtensionを追加していくというスタイルが、最も効率的に学習を進めるコツです。

実践的な設定例:pom.xmlへの記述

例えば、Mavenを使用してプロジェクトを管理している場合、今回紹介したExtensionは pom.xml に以下のように定義されます。 これによって、Quarkusの強力なエコシステムがプロジェクトに取り込まれます。


<dependencies>
    <!-- REST APIとJSON処理の統合 -->
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-resteasy-reactive-jackson</artifactId>
    </dependency>
    <!-- データベース操作(Panache) -->
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-hibernate-orm-panache</artifactId>
    </dependency>
    <!-- OpenAPI/Swagger UIの自動生成 -->
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-smallrye-openapi</artifactId>
    </dependency>
</dependencies>

このようにライブラリを整理しておくことで、ビルド成果物が最適化され、クラウドネイティブな環境でも最高のパフォーマンスを発揮できるようになります。

Extensionを管理する便利なコマンド

開発の途中で「あの機能を追加したい」と思ったとき、わざわざ設定ファイルを手書きしなくても、QuarkusのCLI(コマンドラインツール)を使えば簡単に追加できます。 以下のコマンドは、実際の現場でも頻繁に利用されるため、ぜひ覚えておきましょう。


./mvnw quarkus:add-extension -Dextensions="hibernate-validator"

このコマンドを実行した際の出力結果は、以下のようになります。


[INFO] [io.quarkus.maven.AddExtensionMojo] Extension io.quarkus:quarkus-hibernate-validator has been installed
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

成功メッセージが表示されれば、即座にバリデーション機能などがプロジェクトで利用可能になります。 Quarkusは「開発者がいかに楽に、素早くコードを書けるか」を徹底的に追求しているフレームワークです。 今回紹介したExtensionを使いこなし、ストレスのない開発体験を楽しんでください。

先生と生徒の振り返り会話

生徒

「先生、ありがとうございました!Extensionの種類が多くて圧倒されていましたが、まずは『RESTEasy Reactive』と『Jackson』、そして『DevTools』の3つを軸に考えればいいんですね。」

先生

「その通りです。最初から全部覚えようとしなくて大丈夫ですよ。まずはその基本セットで『URLを叩いたらJSONが返ってくる』という流れを作るのが、上達への近道です。」

生徒

「記事の中で紹介されていた『Dev Mode』も試してみました。コードを書き換えてブラウザをリロードするだけで変更が反映されるのは、本当に感動しました!ビルドの待ち時間がないだけで、こんなに集中力が続くなんて。」

先生

「そうでしょう。Javaはコンパイルが必要な言語ですが、Quarkusはその弱点をExtensionの力で克服しているんです。もし、データの保存も試したくなったら、次は『Hibernate ORM Panache』を入れてみてください。」

生徒

「Panacheですね!データベースの操作も難しそうなイメージがありましたが、Extensionを追加するだけで準備が整うなら挑戦できそうです。コードの書き方もすごくシンプルでしたし。」

先生

「素晴らしい意気込みですね。実際にコードを書いてみて、分からないことが出てきたら /q/swagger-ui を見て、自分が作ったAPIがどう動いているか確認する癖をつけるといいですよ。それもExtensionの一つですから。」

生徒

「はい!まずは基本のExtensionで土台を作って、一歩ずつ機能を追加しながら、自分だけのWebアプリを完成させてみたいと思います!」

関連記事:
カテゴリの一覧へ
新着記事
New1
Java
JavaのStringBufferクラスを徹底解説!スレッド安全な文字列操作の仕組みと使い分け
New2
Micronaut
Micronautで非同期HTTP処理を行う方法!リアクティブ対応の基礎知識
New3
Micronaut
Micronautの@Prototypeとは?新しいインスタンスを生成するスコープの基本
New4
Quarkus
QuarkusのCDIスコープを完全理解!@ApplicationScopedと@RequestScopedを初心者向けに徹底解説
人気記事
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
Quarkus
QuarkusのCI/CD入門!GitHub Actionsで自動デプロイを実現する方法
No.4
Java&Spring記事人気No4
Micronaut
Micronautのルーティング設定ガイド!プレフィックス付与とAPIバージョニングの基本
No.5
Java&Spring記事人気No5
Java
Java Optional ifPresentの使い方を徹底解説!nullチェックをスマートに省略する方法
No.6
Java&Spring記事人気No6
Micronaut
Micronautのフィルタ徹底解説!HTTPリクエスト共通処理をスマートに追加する方法
No.7
Java&Spring記事人気No7
Java
Java Functionインタフェースの使い方を完全ガイド!map変換と処理チェーンを理解する
No.8
Java&Spring記事人気No8
Java
JavaのString比較を徹底解説!equalsと==の違い、初心者が陥る罠とは?