OSS探訪GitHubでログイン

reflectionなしのcompile-time code generationでJava・Androidのdependency injection graphを構築する

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
17,702
主要言語
Java
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/03
ページ内ナビ

概要

DaggerはJava/Android向けのcompile-time dependency injection frameworkです。annotation processorがdependency graphをcompile時に検証し、reflectionやruntime bytecode generationを使わずplain Java sourceを生成します。Android向けにはHilt ecosystemも同じrepositoryで提供されています。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

@Inject・@Provides・@Binds・@Componentでdependency graphを宣言する

constructor injectionやmodule bindingをannotationで記述し、componentをentry pointとしてcompile-timeにobject graphを生成します。

出典:[1]

compile-time validationとgenerated Java sourceでDIを実装する

Daggerはgraph analysisをcompile時に完了し、runtime reflectionやbytecode generationを使いません。missing bindingやcycle等をbuild時に検出します。

出典:[1]

AndroidではHiltでframework integrationを標準化する

同repositoryはHilt Android artifacts/pluginも提供し、Android framework componentへのDI setupを簡略化できます。

出典:[1]

向いている用途

dependency graphを型安全かつbuild時に確定したいJava/Android applicationに向く

runtime containerを避けながら、大規模なobject graphをcompile errorで検証したいapplicationやlibraryに適します。

出典:[1]

導入前の確認

annotation processor/KSP等のbuild設定が必要

runtime dependencyだけではimplementationは生成されません。Mavenではdagger-compilerをannotation processorとして、Gradle/Kotlinでは対応するprocessing設定を追加します。

出典:[1][3]

2.60系のHilt変更と2.60.1 regression fixを確認する

2.60系のHilt要件・plugin behavior変更に加え、2.60.1ではcompiler option propagation regressionと@CanIgnoreReturnValue import問題が修正されています。

出典:[2]

参考にした公式資料

  1. [1]Dagger 2.60.1 README(2026-10-04)
  2. [2]Dagger 2.60.1 release(2026-10-04)
  3. [3]Dagger 2.60.1 build versions(2026-10-04)
  4. [4]Dagger Apache 2.0 license(2026-10-04)
編集部からの補足

Daggerはruntime reflectionではなくannotation processingでimplementationを生成します。Hiltを使う場合は2.60系の要件・plugin変更と2.60.1 regression fixも確認してください。

3ステップで試す

  1. 1

    Dagger 2.60.1用の最小Maven projectを作る

    Java 17のisolated projectにDagger runtimeとannotation processorを2.60.1で固定します。

    mkdir -p dagger-demo/src/main/java/demo && printf '%s\n' '<project xmlns="http://maven.apache.org/POM/4.0.0">' '<modelVersion>4.0.0</modelVersion>' '<groupId>demo</groupId><artifactId>dagger-demo</artifactId><version>1.0.0</version>' '<properties><maven.compiler.release>17</maven.compiler.release></properties>' '<dependencies><dependency><groupId>com.google.dagger</groupId><artifactId>dagger</artifactId><version>2.60.1</version></dependency></dependencies>' '<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.13.0</version><configuration><annotationProcessorPaths><path><groupId>com.google.dagger</groupId><artifactId>dagger-compiler</artifactId><version>2.60.1</version></path></annotationProcessorPaths></configuration></plugin></plugins></build>' '</project>' > dagger-demo/pom.xml
  2. 2

    @Inject classと@Componentを定義する

    constructor injectionとcomponent entry pointだけを使った最小graphを作ります。

    printf '%s\n' 'package demo;' 'import javax.inject.Inject;' 'final class CoffeeMaker { @Inject CoffeeMaker() {} }' > dagger-demo/src/main/java/demo/CoffeeMaker.java && printf '%s\n' 'package demo;' 'import dagger.Component;' '@Component interface AppComponent { CoffeeMaker maker(); }' > dagger-demo/src/main/java/demo/AppComponent.java
  3. 3

    compile-time generated componentを確認する

    annotation processorを実行し、plain Javaのgenerated componentが作られることを確認します。

    cd dagger-demo && mvn -q compile && test -f target/generated-sources/annotations/demo/DaggerAppComponent.java && echo 'Dagger generated source OK'
公式READMEで確認

成長

成長の推移 · 直近30日

17,702 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
29
Open PR
105

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

カテゴリ

GitHubデータ

GitHubのデータGitHubの詳細データを見る
Stars
17,702
Forks
2,045
Watchers
510
Open Issues
265
Contributors
133
所有者種別
Organization
主要言語
Java
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/03

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?