カテゴリ: Quarkus 更新日: 2026/01/19

QuarkusのDIとは?初心者向けにわかるCDIの基本概念と仕組みをやさしく解説

QuarkusのDIとは?CDIの基本概念を初心者向けに解説
QuarkusのDIとは?CDIの基本概念を初心者向けに解説

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

生徒

「Quarkusって軽くて速いって聞きますけど、DIとかCDIって言葉が出てきてよく分からなくなりました」

先生

「QuarkusではDIという仕組みを使って、クラス同士のつながりを自動で管理しています。その中心にある考え方がCDIです」

生徒

「DIとCDIって別物なんですか?」

先生

「考え方と仕組みの関係です。まずはDIの意味から、順番に理解していきましょう」

1. QuarkusにおけるDIの基本的な考え方

1. QuarkusにおけるDIの基本的な考え方
1. QuarkusにおけるDIの基本的な考え方

QuarkusのDIとは、依存性注入と呼ばれる仕組みです。依存性注入とは、クラスが必要とする別のクラスを、自分で生成するのではなく、フレームワーク側が自動で用意してくれる考え方です。 Javaの初心者が最初につまずきやすいポイントは、クラス同士がどのようにつながっているかという部分です。DIを使わない場合、あるクラスの中で別のクラスを直接newしてしまい、変更に弱いコードになりがちです。 QuarkusではDIを使うことで、コードの見通しが良くなり、修正や拡張がしやすい設計になります。

2. CDIとは何かを初心者向けに整理する

2. CDIとは何かを初心者向けに整理する
2. CDIとは何かを初心者向けに整理する

CDIはContexts and Dependency Injectionの略で、Java標準のDI仕様です。QuarkusはこのCDIをベースにしてDI機能を提供しています。 CDIは難しそうな名前ですが、基本的には「オブジェクトの管理」と「必要な場所への自動注入」を担当します。 Quarkusでは軽量で高速なCDI実装が使われており、起動時間が短く、メモリ使用量も抑えられています。これがQuarkusがクラウドネイティブ向けと言われる理由の一つです。

3. Quarkusで管理されるBeanの仕組み

3. Quarkusで管理されるBeanの仕組み
3. Quarkusで管理されるBeanの仕組み

CDIでは、DIの対象となるクラスをBeanと呼びます。Quarkusでは、特定のアノテーションを付けたクラスがBeanとして自動的に管理されます。 BeanはQuarkusの起動時に解析され、どのクラスがどのクラスに注入されるのかが決まります。 この仕組みにより、開発者はオブジェクトの生成タイミングや管理を意識せずに、ビジネスロジックに集中できます。


import jakarta.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class GreetingService {

    public String greet(String name) {
        return "こんにちは、" + name + "さん";
    }
}

4. DIを使ったクラスの注入方法

4. DIを使ったクラスの注入方法
4. DIを使ったクラスの注入方法

QuarkusでDIを使う場合、Injectアノテーションを使ってBeanを注入します。 この方法を使うと、newキーワードを書かずに、必要なクラスをそのまま利用できます。 初心者のうちは「どこでインスタンスが作られているのか分からない」と感じるかもしれませんが、Quarkusが自動で管理していると考えると理解しやすくなります。


import jakarta.inject.Inject;

public class GreetingController {

    @Inject
    GreetingService greetingService;

    public void execute() {
        System.out.println(greetingService.greet("Quarkus"));
    }
}

5. スコープの概念とDIの関係

5. スコープの概念とDIの関係
5. スコープの概念とDIの関係

CDIにはスコープという概念があります。スコープとは、Beanがどの範囲で、どのくらいの期間使われるかを表すものです。 Quarkusではアプリケーション全体で一つだけ使われるスコープや、必要なときだけ作られるスコープなどがあります。 スコープを正しく理解することで、無駄なオブジェクト生成を防ぎ、パフォーマンスの良いアプリケーションを作ることができます。


import jakarta.enterprise.context.Dependent;

@Dependent
public class SimpleLogger {

    public void log(String message) {
        System.out.println("LOG: " + message);
    }
}

6. QuarkusでDIを使うメリット

6. QuarkusでDIを使うメリット
6. QuarkusでDIを使うメリット

QuarkusでDIとCDIを使う最大のメリットは、コードの変更に強くなることです。 例えば、処理の中身を差し替えたい場合でも、DIを使っていれば他のクラスに影響を与えにくくなります。 また、テストコードを書きやすくなる点も重要です。DIを前提とした設計は、初心者から中級者へステップアップするための大切な考え方です。

7. QuarkusとCDIを学ぶときの注意点

7. QuarkusとCDIを学ぶときの注意点
7. QuarkusとCDIを学ぶときの注意点

初心者がQuarkusのDIやCDIを学ぶときは、すべてを一度に理解しようとしないことが大切です。 まずはBeanとは何か、Injectで何が起きているのかを体感することが重要です。 Quarkusは設定が少なく、動作も直感的なので、DIやCDIの学習にとても向いています。基本を押さえれば、後のREST APIやデータベース連携の理解もスムーズになります。


public class DiConceptExample {

    public static void main(String[] args) {
        System.out.println("DIはオブジェクトの管理を任せる考え方です");
    }
}
カテゴリの一覧へ
新着記事
New1
Quarkus
Quarkusのフォーム認証を基礎から解説!初心者向けセキュリティ入門ガイド
New2
Micronaut
MicronautプロジェクトをGradleで管理する基礎!build.gradleの役割を解説
New3
Micronaut
LinuxでMicronautをセットアップする方法!パッケージ管理とGradle連携
New4
Java
Javaのswitch文を徹底解説!case・defaultの書き方と実例まとめ
人気記事
No.1
Java&Spring記事人気No1
Quarkus
Quarkusプロジェクト構成の基本を完全解説!初心者でも迷わない「どこに何を書くか」ガイド
No.2
Java&Spring記事人気No2
Quarkus
Quarkusのセキュリティ基礎を初心者でもわかるように解説!
No.3
Java&Spring記事人気No3
Quarkus
QuarkusとMicronautとHelidonを徹底比較!軽量Javaフレームワークの違いを初心者向けに解説
No.4
Java&Spring記事人気No4
Quarkus
Quarkusでマイクロサービス開発が加速する理由を徹底解説!Java初心者でも分かるクラウドネイティブ
No.5
Java&Spring記事人気No5
Quarkus
Quarkusの開発環境構築で躓きやすいポイントを完全解説!初心者でも安心して始めるためのチェックガイド
No.6
Java&Spring記事人気No6
Micronaut
MicronautとSpring Bootの違いとは?アーキテクチャ比較で速さの秘密を理解する
No.7
Java&Spring記事人気No7
Micronaut
MicronautのAOPが高速な理由とは?コンパイル時AOPの仕組みを初心者向けに徹底解説
No.8
Java&Spring記事人気No8
Java
Javaのboolean型の使い方を完全ガイド!真偽値と条件分岐の基本