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

QuarkusプロジェクトにRESTEasy Reactiveを追加する方法を完全解説!初心者でもわかる高速REST API構築

QuarkusプロジェクトにRESTEasy Reactiveを追加する方法
QuarkusプロジェクトにRESTEasy Reactiveを追加する方法

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

生徒

「QuarkusでREST APIを作ろうと思ったら、RESTEasy Reactiveという言葉を見かけました。普通のRESTとは何が違うんですか?」

先生

「Quarkusでは、高速で軽量なREST APIを作るためにRESTEasy Reactiveが用意されています。追加方法と使い方を一緒に確認していきましょう。」

生徒

「プロジェクト構成とか設定ファイルも変わるんでしょうか?」

先生

「基本の構成は変わりませんが、依存関係と設計の考え方が少し変わります。順番に説明しますね。」

1. RESTEasy Reactiveとは何か

1. RESTEasy Reactiveとは何か
1. RESTEasy Reactiveとは何か

RESTEasy Reactiveは、QuarkusでREST APIを構築するためのリアクティブ対応RESTフレームワークです。 従来のRESTEasy Classicと比べて、ノンブロッキング処理を前提とした設計になっており、 高速起動と低メモリ消費を実現できます。

JavaでWeb APIを作る場合、処理の重さやスレッド管理が問題になることがありますが、 RESTEasy ReactiveはQuarkusの思想に合わせて最適化されています。 クラウド環境やコンテナ環境でも高いパフォーマンスを発揮する点が特徴です。

2. Quarkusプロジェクト構成とREST APIの位置付け

2. Quarkusプロジェクト構成とREST APIの位置付け
2. Quarkusプロジェクト構成とREST APIの位置付け

Quarkusのプロジェクト構成において、外部からのリクエストを受け取る「玄関口」となるのがREST API(リソースクラス)です。これらは主にsrc/main/java配下のresourceパッケージに配置されます。

標準的な構成では、以下の図のように役割を分担させるのが一般的です。

初心者のうちは、「どこに何を書けばいいの?」と迷いがちですが、まずは「Resource(リソース)=窓口」と覚えるだけで十分です。RESTEasy Reactiveを使用する場合も、この基本構造は変わりません。

初心者向け:シンプルなREST APIのサンプル

まずは、ブラウザに「Hello Quarkus!」と表示させるだけの簡単なプログラムを見てみましょう。


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") // URLの末尾が「/hello」のときに呼ばれる
public class GreetingResource {

    @GET // データを取得する(表示する)ための設定
    @Produces(MediaType.TEXT_PLAIN) // 形式は普通のテキスト
    public String hello() {
        return "Hello Quarkus! これがREST APIの第一歩です。";
    }
}

このように、プロジェクト構成を意識して「APIの窓口(Resource層)」を独立させることで、将来的に「計算処理(Service層)」や「データベース操作(Repository層)」を追加した際も、コードが整理され、修正しやすい(保守性が高い)システムになります。

3. RESTEasy Reactiveを依存関係に追加する方法

3. RESTEasy Reactiveを依存関係に追加する方法
3. RESTEasy Reactiveを依存関係に追加する方法

QuarkusプロジェクトにRESTEasy Reactiveを追加するには、 ビルドツールの依存関係設定を行います。 Mavenを使用している場合は、pom.xmlに拡張機能を追加します。


<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-resteasy-reactive</artifactId>
</dependency>

この依存関係を追加するだけで、RESTEasy Reactiveが有効になります。 Quarkusでは拡張機能という形で機能を追加できるため、 設定が非常にシンプルです。

4. RESTEasy Reactive用のResourceクラスを作成する

4. RESTEasy Reactive用のResourceクラスを作成する
4. RESTEasy Reactive用のResourceクラスを作成する

依存関係を追加したら、REST API用のResourceクラスを作成します。 基本的なアノテーションは従来のRESTと同じなので、 Java初心者でも理解しやすい構文になっています。


package com.example.resource;

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

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

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

このクラスを作成するだけで、Quarkusは自動的にREST APIとして認識します。 特別な設定を追加しなくても動作する点が、 RESTEasy ReactiveとQuarkusの大きな魅力です。

5. application.propertiesでのREST設定

5. application.propertiesでのREST設定
5. application.propertiesでのREST設定

RESTEasy Reactiveを使う場合でも、 基本的な設定はapplication.propertiesにまとめます。 ポート番号やパス設定を一元管理できるため、 プロジェクト構成が整理されます。


quarkus.http.port=8080
quarkus.http.root-path=/api

この設定により、REST APIのベースパスを変更できます。 プロジェクト全体のAPI設計を意識した構成にすることで、 後からの拡張もしやすくなります。

6. RESTEasy ReactiveとService層の連携

6. RESTEasy ReactiveとService層の連携
6. RESTEasy ReactiveとService層の連携

RESTEasy Reactiveは、単なるエンドポイント定義だけでなく、 Service層と組み合わせて使うことで真価を発揮します。 Resourceクラスではリクエスト処理に集中し、 業務ロジックはService層に委譲します。


package com.example.service;

import jakarta.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class GreetingService {

    public String message() {
        return "Serviceからのメッセージ";
    }
}

package com.example.resource;

import com.example.service.GreetingService;
import jakarta.inject.Inject;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;

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

    @Inject
    GreetingService service;

    @GET
    public String greet() {
        return service.message();
    }
}

この構成により、REST APIと業務ロジックが分離され、 テストや保守がしやすいQuarkusプロジェクトになります。

7. RESTEasy Reactiveを採用する際の設計ポイント

7. RESTEasy Reactiveを採用する際の設計ポイント
7. RESTEasy Reactiveを採用する際の設計ポイント

RESTEasy ReactiveをQuarkusプロジェクトに追加する際は、 すべてをリアクティブにしようと無理をしないことが大切です。 まずは同期処理として使い、必要に応じて拡張していくのがおすすめです。

プロジェクト構成を意識しながらREST APIを追加することで、 高速かつ保守性の高いJavaアプリケーションを構築できます。 RESTEasy Reactiveは、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
Quarkus
QuarkusのCI/CD入門!GitHub Actionsで自動デプロイを実現する方法
No.4
Java&Spring記事人気No4
Micronaut
Micronautのルーティング設定ガイド!プレフィックス付与とAPIバージョニングの基本
No.5
Java&Spring記事人気No5
Micronaut
Micronautのフィルタ徹底解説!HTTPリクエスト共通処理をスマートに追加する方法
No.6
Java&Spring記事人気No6
Java
Java Optional ifPresentの使い方を徹底解説!nullチェックをスマートに省略する方法
No.7
Java&Spring記事人気No7
Java
Java Functionインタフェースの使い方を完全ガイド!map変換と処理チェーンを理解する
No.8
Java&Spring記事人気No8
Java
JavaのString比較を徹底解説!equalsと==の違い、初心者が陥る罠とは?