依存性注入を使う理由
テストしやすくモジュール化されたコードにします
「依存性注入を使う理由」はCoddyKit上の無料Android Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAndroid Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Android Academyコースには全4レッスンが含まれています。
依存性注入とは
Dependency Injection (DI) とは、オブジェクトが必要とするものを自分で生成させるのではなく、外部から渡すことです。
問題:強く結合した依存関係
クラスが依存関係を自分で構築すると、結合が強くなり、変更やテストが難しくなります。
class UserViewModel {
private val repo = UserRepository(
ApiClient(), AppDatabase.get()
) // tightly coupled
}解決策:注入する
依存関係をコンストラクタ経由で渡します。これにより、クラスは依存関係がどのように構築されるかを意識する必要がなくなります。
class UserViewModel(
private val repo: UserRepository
) {
// repo supplied from outside
}メリット1:テスト容易性
テストでは fake や mock のリポジトリを渡せるため、実際のネットワークやデータベースを使わずに ViewModel をテストできます。
val vm = UserViewModel(FakeUserRepository())メリット2:モジュール性
クラスは抽象に依存するため、利用側に手を加えずに実装を入れ替えられます — たとえば、実際の API をオフライン用のスタブに変更できます —。
インターフェースに依存する
クラスは具象型ではなく、インターフェースに依存させます。これが簡単に置き換えるための鍵です。
interface UserRepository {
suspend fun getUsers(): List<User>
}
class NetworkUserRepository(
private val api: ApiService
) : UserRepository { /* ... */ }メリット3:単一責任
クラスは協調するオブジェクトの構築ではなく、自分の役割に集中します。オブジェクトの生成は専用の場所に移します。
手動 DI の限界
DI は手動でも行えますが、依存関係のグラフが大きくなると、多数のオブジェクトを手作業で接続し、コンストラクタ経由で順に渡す必要があります。これは面倒で、エラーも起こりやすい方法です。
val db = AppDatabase.get(context)
val api = ApiService.create()
val repo = NetworkUserRepository(api)
val vm = UserViewModel(repo)
// ...repeated everywhereDI フレームワークの導入
フレームワークを使うと、この接続作業を自動化できます。それぞれの依存関係の構築方法を一度宣言するだけで、グラフ全体を構築してくれます。
Hilt を使う理由
Hilt は Android で推奨されている DI フレームワークです。Dagger を基盤とし、Android のクラス(Application、Activity、ViewModel)に対応した標準コンポーネントを、はるかに少ない定型コードで提供します。
Hilt が提供するもの
- 依存関係グラフの自動生成
- ライフサイクルに対応したスコープ
- Activity、Fragment、ViewModel への簡単な注入
次のレッスンで設定方法を説明します。
クイックチェック
依存性注入の理解度を確認しましょう。
まとめ
学んだこと:
- DI は依存関係を内部で生成するのではなく、外部から提供します。
- テスト容易性、モジュール性、関心の分離が向上します。
- インターフェースに依存させます。
- 手動 DI は規模の拡大に弱く、Hilt が自動化してくれます。
よくある質問
「依存性注入を使う理由」レッスンは無料ですか?
はい。「依存性注入を使う理由」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Android Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Android Academyコースには全4レッスンが含まれています。
「依存性注入を使う理由」で何を学びますか?
テストしやすくモジュール化されたコードにします ブラウザで直接実行するハンズオンコードでAndroid Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Android Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAndroid Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「依存性注入を使う理由」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAndroid Academyレッスンでコードを書いて実行できますか?
はい。すべてのAndroid Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 依存性注入を使う理由
- Hiltを設定する
- モジュールとプロバイダー
- ViewModelに注入する