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

Quarkusでマルチモジュール構成を採用する方法を完全解説!初心者でもわかるプロジェクト分割設計

Quarkusでマルチモジュール構成を採用する方法
Quarkusでマルチモジュール構成を採用する方法

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

生徒

「Quarkusで開発していると、クラスが増えてきてプロジェクトがごちゃごちゃしてきました。整理する方法はありますか?」

先生

「その場合は、Quarkusでもマルチモジュール構成を採用すると整理しやすくなります。」

生徒

「マルチモジュールって、JavaのMavenでよく聞きますけど、Quarkusでも同じように使えるんですか?」

先生

「はい。QuarkusはJavaベースなので、Mavenのマルチモジュール構成をそのまま活用できます。順番に見ていきましょう。」

1. Quarkusにおけるマルチモジュール構成とは

1. Quarkusにおけるマルチモジュール構成とは
1. Quarkusにおけるマルチモジュール構成とは

Quarkusにおけるマルチモジュール構成とは、1つの大きなアプリケーションを、役割ごとに複数の「小さなプロジェクト(モジュール)」に分割して管理する設計手法のことです。 Javaの世界では古くからMavenやGradleというツールを使って行われてきた手法ですが、Quarkusでもこれを活用することで、非常にクリーンなソースコード管理が可能になります。

例えば、初めてプログラミングを学ぶ方が「日記アプリ」を作るとしましょう。一つの場所にすべてのコードを詰め込むと、どこに何を書いたか分からなくなります。 そこで、以下のように「箱(モジュール)」を分けて整理するのがマルチモジュールの考え方です。

  • APIモジュール: 画面からの入力を受け付ける窓口(受付係)
  • Logicモジュール: データの計算や保存のルール(料理人)
  • Commonモジュール: どこでも使う便利な道具箱(調理器具)

このように役割を分けることで、「ここのコードを変えたら全然関係ない場所が壊れた」というミスを防ぎやすくなります。 また、Quarkusは開発スピードが非常に速いため、この構成をとることで大規模な開発でもビルド時間を短縮し、効率的に作業を進めることができるのです。

未経験者の方へのヒント:

マルチモジュールは、机の引き出しを「文房具」「書類」「お菓子」と分けて整理するようなものです。 最初は少し手間に感じますが、モノが増えてきたときに「どこに何があるか一目でわかる」という大きな恩恵を受けられます。

2. Quarkusでマルチモジュール構成を採用する3つのメリット

2. Quarkusでマルチモジュール構成を採用する3つのメリット
2. Quarkusでマルチモジュール構成を採用する3つのメリット

Quarkusで「マルチモジュール構成」を採用することは、大規模なプロジェクトだけでなく、実はJava初心者の方にこそおすすめしたい設計手法です。 簡単に言うと、1つの大きなプログラムを「機能ごとの小さな部品(モジュール)」に分けて管理する仕組みのことです。

初心者向けのイメージ:
「マルチモジュール」は、お弁当箱の「仕切り」のようなものです。おかず、ご飯、デザートを分けて入れることで、味が混ざらず(依存関係の整理)、食べたいもの(修正箇所)がすぐに見つかります。

1. プロジェクトの見通しが劇的に良くなる

機能単位でディレクトリ(フォルダ)が明確に分かれるため、「どこに何が書いてあるか」が直感的に理解できるようになります。 例えば、データベース操作用のコードと、画面表示用のコードを物理的に分けることで、プログラミング未経験者でも「責務の分離(役割分担)」という重要な考え方を自然と習得できます。

2. コードの再利用と効率的な開発

一度作成した「共通機能(認証処理や便利な計算ツールなど)」を独立したモジュールにしておけば、他のプロジェクトでも「部品」として使い回すことができます。 毎回ゼロからコードを書く必要がなくなり、開発スピードが格段にアップします。

3. ビルド時間の短縮とテストの効率化

修正したモジュールだけをビルド・テストできるため、開発中の待ち時間を減らせるのもQuarkus開発における大きな利点です。

【構成サンプル】マルチモジュールのディレクトリ構造

一般的なプロジェクトでは、以下のように役割ごとにフォルダを分割します。


my-quarkus-project/
├── common-utils/  (共通で使う便利なプログラム)
├── domain-logic/  (ビジネスルールの核となるプログラム)
├── web-api/       (外部とやり取りする入り口のプログラム)
└── pom.xml        (全体の設計図)

このように、最初から「分ける」ことを意識して構築することで、数ヶ月後の自分がコードを見返した際や、チームで開発する際のメンテナンス性が驚くほど向上します。

3. Quarkusマルチモジュールの基本ディレクトリ構成

3. Quarkusマルチモジュールの基本ディレクトリ構成
3. Quarkusマルチモジュールの基本ディレクトリ構成

Quarkusでマルチモジュール構成を作る場合、まず親プロジェクトを用意します。 親プロジェクトはMavenの管理専用となり、実際の処理は子モジュールに記述します。 これにより依存関係やバージョン管理を一元化できます。


quarkus-multi-project
├─ pom.xml
├─ app
│  ├─ pom.xml
│  └─ src
└─ core
   ├─ pom.xml
   └─ src

この例では、appモジュールがQuarkusアプリケーション本体、 coreモジュールがビジネスロジックや共通処理を担当します。 初心者でも理解しやすい構成です。

4. 親pom.xmlの役割と設定

4. 親pom.xmlの役割と設定
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クラスを定義する

5. coreモジュールにJavaクラスを定義する
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モジュールを利用する

6. appモジュールから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マルチモジュール構成を採用する際の注意点

7. Quarkusマルチモジュール構成を採用する際の注意点
7. Quarkusマルチモジュール構成を採用する際の注意点

Quarkusでマルチモジュール構成を採用する場合、 モジュール間の依存関係を増やしすぎないことが重要です。 依存が複雑になると、初心者には理解しづらくなります。

まずは二つから三つ程度のモジュール構成から始めるのがおすすめです。 Quarkusのプロジェクト構成とJavaの設計に慣れてきたら、 徐々に拡張していくと無理なく学習できます。

関連記事:
カテゴリの一覧へ
新着記事
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と==の違い、初心者が陥る罠とは?