Kotlinで依存性注入を実現するDagger/Hiltの基本をやさしく解説!初心者向けDI入門
生徒
「Kotlinでアプリを作っているんですが、クラス同士のつながりが増えてきて、コードがごちゃごちゃしてきました…」
先生
「それは依存性が増えているという状態ですね。そんなときには依存性注入(DI)という考え方が役立ちますよ。」
生徒
「依存性注入?なんだか難しそう…」
先生
「大丈夫。KotlinではDaggerやHiltという便利なツールを使って簡単にDIができるんです。一緒にゆっくり学んでいきましょう!」
1. 依存性注入(DI)とは?
依存性注入とは、あるクラスが別のクラスを必要としているときに、自分で作らずに外から渡してもらう仕組みのことです。
たとえば、コンビニの店員さんが「レジを使いたい」と思ったとき、毎回レジを作るのではなく、あらかじめレジが用意されている状態にしておけば便利ですよね?それと同じ発想です。
2. DaggerとHiltの違い
Dagger(ダガー)は、Googleが提供する依存性注入ライブラリです。KotlinやJavaで広く使われています。
ただし、Daggerは少し設定が複雑という弱点があります。そこで登場したのがHilt(ヒルト)です。
HiltはDaggerを簡単に使えるようにしたラッパーで、特にAndroidアプリ開発で便利に使えます。
つまり、中身はDaggerだけど、操作はHiltで簡単にというイメージです。
3. Hiltを使う準備をしよう
Hiltを使うには、Gradleファイルにいくつかの設定を追加します。以下のように記述しましょう。
// build.gradle(Project)に追加
classpath("com.google.dagger:hilt-android-gradle-plugin:2.44")
// build.gradle(Module)に追加
plugins {
id("com.google.dagger.hilt.android")
kotlin("kapt")
}
dependencies {
implementation("com.google.dagger:hilt-android:2.44")
kapt("com.google.dagger:hilt-android-compiler:2.44")
}
これでHiltの準備はOKです。プロジェクトを同期(Sync)して反映しましょう。
4. 実際に依存性注入をやってみよう
ここからは、Hiltを使ったKotlinの実装例を紹介します。
① クラスを用意する
まずは、ログ出力用のクラスを作ってみます。
class Logger {
fun log(message: String) {
println("ログ: $message")
}
}
② DIされるクラスに注釈を付ける
Hiltに「このクラスを使いたいです」と伝えるには@Injectを使います。
class UserService @Inject constructor(
private val logger: Logger
) {
fun execute() {
logger.log("ユーザー処理を実行中")
}
}
③ 提供元を教えるModuleを書く
Loggerクラスのインスタンスをどう提供するかHiltに教えるために@Moduleと@Providesを使います。
@Module
@InstallIn(SingletonComponent::class)
object AppModule {
@Provides
fun provideLogger(): Logger {
return Logger()
}
}
④ 実行クラスで使う
依存性を注入したい場所では@AndroidEntryPointを付けて、by inject()で呼び出せます。
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@Inject
lateinit var userService: UserService
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
userService.execute()
}
}
5. 実行結果を確認しよう
アプリを起動すると、次のようにログが出力されます。
ログ: ユーザー処理を実行中
6. Hiltの便利なポイント
- 自動で依存性を解決してくれるので、手作業が減る
- テストやモック化がしやすい
- コードがシンプルに保てるので、初心者にもわかりやすい
たとえば、Loggerクラスをあとから別の実装に差し替えたいときも、Moduleの中だけ変更すればOKです。
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
7. よくある初心者の疑問
Q. なぜ自分でnewしてはいけないの?
自分でインスタンスを作ってしまうと、クラス同士が強く結びついてしまい、変更やテストがしにくくなるからです。DIを使えば、緩くつながるようになり、柔軟な設計ができます。
Q. DaggerとHilt、どっちを使えばいい?
初心者やAndroid開発が中心の人にはHiltがおすすめです。設定がシンプルで学びやすく、公式もHiltを推奨しています。
【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分
「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。
本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。
具体的な体験内容と環境
【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。
【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。
この60分で得られる3つの体験
プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。
「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。
Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。
※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。
Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験