Quarkusでマルチモジュール構成を採用する方法を完全解説!初心者でもわかるプロジェクト分割設計
生徒
「Quarkusで開発していると、クラスが増えてきてプロジェクトがごちゃごちゃしてきました。整理する方法はありますか?」
先生
「その場合は、Quarkusでもマルチモジュール構成を採用すると整理しやすくなります。」
生徒
「マルチモジュールって、JavaのMavenでよく聞きますけど、Quarkusでも同じように使えるんですか?」
先生
「はい。QuarkusはJavaベースなので、Mavenのマルチモジュール構成をそのまま活用できます。順番に見ていきましょう。」
1. Quarkusにおけるマルチモジュール構成とは
Quarkusにおけるマルチモジュール構成とは、1つの大きなアプリケーションを、役割ごとに複数の「小さなプロジェクト(モジュール)」に分割して管理する設計手法のことです。 Javaの世界では古くからMavenやGradleというツールを使って行われてきた手法ですが、Quarkusでもこれを活用することで、非常にクリーンなソースコード管理が可能になります。
例えば、初めてプログラミングを学ぶ方が「日記アプリ」を作るとしましょう。一つの場所にすべてのコードを詰め込むと、どこに何を書いたか分からなくなります。 そこで、以下のように「箱(モジュール)」を分けて整理するのがマルチモジュールの考え方です。
- APIモジュール: 画面からの入力を受け付ける窓口(受付係)
- Logicモジュール: データの計算や保存のルール(料理人)
- Commonモジュール: どこでも使う便利な道具箱(調理器具)
このように役割を分けることで、「ここのコードを変えたら全然関係ない場所が壊れた」というミスを防ぎやすくなります。 また、Quarkusは開発スピードが非常に速いため、この構成をとることで大規模な開発でもビルド時間を短縮し、効率的に作業を進めることができるのです。
未経験者の方へのヒント:
マルチモジュールは、机の引き出しを「文房具」「書類」「お菓子」と分けて整理するようなものです。 最初は少し手間に感じますが、モノが増えてきたときに「どこに何があるか一目でわかる」という大きな恩恵を受けられます。
2. マルチモジュール構成を採用するメリット
Quarkusでマルチモジュール構成を採用すると、プロジェクトの見通しが良くなります。 機能単位でディレクトリが分かれるため、どこに何があるのかが明確になります。 Java初心者でも、責務分離の考え方を自然に身につけられます。
また、再利用性の向上も大きな利点です。 共通処理をライブラリモジュールとして切り出せば、他のQuarkusプロジェクトでも再利用できます。 テストや保守のしやすさも向上し、長期的な開発に強い構成になります。
3. Quarkusマルチモジュールの基本ディレクトリ構成
Quarkusでマルチモジュール構成を作る場合、まず親プロジェクトを用意します。 親プロジェクトはMavenの管理専用となり、実際の処理は子モジュールに記述します。 これにより依存関係やバージョン管理を一元化できます。
quarkus-multi-project
├─ pom.xml
├─ app
│ ├─ pom.xml
│ └─ src
└─ core
├─ pom.xml
└─ src
この例では、appモジュールがQuarkusアプリケーション本体、 coreモジュールがビジネスロジックや共通処理を担当します。 初心者でも理解しやすい構成です。
4. 親pom.xmlの役割と設定
親pom.xmlは、マルチモジュール全体をまとめるための設定ファイルです。 Quarkusのバージョン管理やJavaのバージョン指定、共通依存関係をここで定義します。 各モジュールで同じ設定を繰り返す必要がなくなります。
<project>
<packaging>pom</packaging>
<modules>
<module>app</module>
<module>core</module>
</modules>
</project>
このようにmodulesタグで子モジュールを登録します。 MavenとQuarkusの基本的なプロジェクト構成を理解するうえで重要なポイントです。
5. coreモジュールにJavaクラスを定義する
coreモジュールには、アプリケーション共通で使うJavaクラスを配置します。 ビジネスロジックやユーティリティクラスをまとめることで、 appモジュールがシンプルになります。
package com.example.core;
public class GreetingService {
public String message() {
return "Hello from core module";
}
}
このようなクラスをcoreモジュールに置くことで、 他のモジュールからも安全に利用できます。
6. appモジュールからcoreモジュールを利用する
appモジュールはQuarkusアプリケーションのエントリーポイントになります。 REST APIやエンドポイントを定義し、coreモジュールの処理を呼び出します。 Quarkusのプロジェクト構成を学ぶうえで重要な役割です。
package com.example.app;
import com.example.core.GreetingService;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
@Path("/hello")
public class HelloResource {
@GET
public String hello() {
GreetingService service = new GreetingService();
return service.message();
}
}
このように、coreモジュールのクラスをappモジュールから利用できます。 モジュール分割していても、通常のJava開発と同じ感覚で書ける点が特徴です。
7. Quarkusマルチモジュール構成を採用する際の注意点
Quarkusでマルチモジュール構成を採用する場合、 モジュール間の依存関係を増やしすぎないことが重要です。 依存が複雑になると、初心者には理解しづらくなります。
まずは二つから三つ程度のモジュール構成から始めるのがおすすめです。 Quarkusのプロジェクト構成とJavaの設計に慣れてきたら、 徐々に拡張していくと無理なく学習できます。