Quarkusプロジェクトで共通モジュールを作る方法を完全解説!初心者でもわかる再利用しやすい設計
生徒
「Quarkusで複数のサービスを作っていると、同じ処理を何度も書いてしまいます。共通化する方法はありますか?」
先生
「Quarkusでは、共通モジュールを作ることで処理やクラスを再利用できます。プロジェクト構成の段階で考えておくと便利ですよ。」
生徒
「共通モジュールって、難しい設計が必要なんでしょうか?」
先生
「基本はJavaのマルチモジュール構成と同じです。Quarkus向けにどう整理するかを順番に説明しますね。」
1. Quarkusで共通モジュールを作る目的
Quarkusプロジェクトで共通モジュールを作る最大の目的は、コードの再利用性を高めることです。 Javaでアプリケーションを開発していると、定数クラス、ユーティリティ処理、共通の例外定義、 共通DTOなど、複数のプロジェクトで使い回したいコードが必ず出てきます。
これらを各プロジェクトにコピーしてしまうと、修正時にすべてを直す必要が出てきます。 Quarkusのプロジェクト構成に共通モジュールを組み込むことで、 一か所の修正で全体に反映できる設計になります。 初心者でも保守しやすい構成を作れるのが大きなメリットです。
2. 共通モジュールが向いているケース
Quarkusで共通モジュールを作るべきかどうかは、プロジェクト規模によって変わります。 小さなサンプルアプリでは不要な場合もありますが、 複数のQuarkusアプリやマイクロサービスを運用する場合には効果が高くなります。
例えば、共通のバリデーション処理、ログ出力用ユーティリティ、 エラーレスポンスの形式、認証情報を扱うDTOなどは共通モジュールに向いています。 Quarkusのプロジェクト構成を整理する第一歩として、共通化対象を洗い出すことが重要です。
3. Quarkus共通モジュールの基本プロジェクト構成
Quarkusで共通モジュールを作る場合、Javaのマルチモジュール構成を採用します。 親プロジェクトを用意し、その配下にアプリ用モジュールと共通モジュールを配置します。 これにより依存関係を明確に管理できます。
quarkus-project
├─ pom.xml
├─ common
│ ├─ pom.xml
│ └─ src
└─ app
├─ pom.xml
└─ src
commonモジュールが共通処理をまとめる場所で、 appモジュールが実際のQuarkusアプリになります。 この構成は初心者でも理解しやすく、拡張もしやすい形です。
4. 親プロジェクトの役割
親プロジェクトは、複数モジュールをまとめるための管理用プロジェクトです。 ここではQuarkusのバージョン、Javaのバージョン、共通ライブラリの定義を行います。 実際の処理は書かず、構成管理に専念します。
<project>
<packaging>pom</packaging>
<modules>
<module>common</module>
<module>app</module>
</modules>
</project>
このようにmodulesで共通モジュールとアプリモジュールを登録します。 Quarkusプロジェクト全体の土台となる重要な設定です。
5. 共通モジュールにクラスを定義する
共通モジュールには、アプリに依存しない純粋なJavaクラスを配置します。 Quarkus固有のアノテーションを使わない設計にすると、 将来別のプロジェクトでも再利用しやすくなります。
package com.example.common.util;
public class StringUtil {
public static boolean isEmpty(String value) {
return value == null || value.isEmpty();
}
}
このようなユーティリティクラスは、複数のQuarkusプロジェクトで使い回せます。 共通モジュールの役割は、あくまで汎用的な処理に限定するのがポイントです。
6. Quarkusアプリ側で共通モジュールを利用する
appモジュールでは、共通モジュールを依存関係として追加します。 これにより、commonモジュール内のクラスを通常のJavaクラスとして利用できます。 Quarkus特有の設定は不要です。
<dependency>
<groupId>com.example</groupId>
<artifactId>common</artifactId>
<version>1.0.0</version>
</dependency>
package com.example.app.service;
import com.example.common.util.StringUtil;
public class SampleService {
public boolean check(String text) {
return StringUtil.isEmpty(text);
}
}
このように、共通モジュールを意識せずに通常のJavaクラスとして使えます。 Quarkusのプロジェクト構成を複雑にしない点も魅力です。
7. 共通モジュール設計で意識したいポイント
共通モジュールを作る際は、何でも入れすぎないことが重要です。 特定の業務ロジックやアプリ固有の処理を入れてしまうと、 かえって再利用性が下がってしまいます。
共通モジュールは、あくまで土台となる部品集という位置付けにします。 Quarkusのプロジェクト構成をシンプルに保ちつつ、 必要な部分だけを共通化する意識が、初心者には特に大切です。