내가 Dagger2를 공부한 방법
TL;DR(이라고 쓰고 요약이라고 읽는다.)
이해가 안가더라도 직접 적용해보고 아래 링크로 걸어둔 자료같은 것을 많이 읽어봐야 한다.
무려 1달 넘게... DI, 그리고 Dagger를 공부하고 있다. 물론 아직도 이게 정확히 무엇이다라고는 말하지 못하겠다.
제대로 사용하라고 하면 솔직히 자신은 없으나 어떻게 꾸역꾸역 머리에 집어 넣는 중이다.
겨우 이해한 것도 있고 아닌 것도 있는데 이렇게 고생하는 부들이 있지 않을까해서
내가 Dagger를 공부하다가 알게된 좋은 것들을 공유해볼까 한다.
1. 책으로 공부했다.
안드로이드 개발자들에게 유명한 "찰스". 그 닉네임을 사용하시는 옥수환님께서 올해 발간한 책이다.
Dagger뿐만 아니라 Jetpack 등을 설명하고 있다.
DI 개념도 모르고 바로 Dagger를 학습하기란 쉽지가 않다.
그래서 이 책에 나온 자료를 가지고 실습을 하면서 공부를 했다.
이해가 안가더라도 일단 해보면서 진행을 했고 해당 서적 가장 마지막에 나와 있는 프로젝트로 다듬었다.
프로젝트를 한번만 수행해서는 이해가되지 않아서 동일한 코드를 한 번 더 따라하면서 모르는 부분을 체크해보았다.
아래는 실습코드이다.
2. 참고해서 좋았던 블로그 글
아래는 Dagger의 구조를 도식화해 놓았다. 한눈에 보기 매우 좋다.
초반에 이해할 때 큰 도움이 되었다.
https://brunch.co.kr/@oemilk/73
Pluu님이 번역하신 글. Dagger의 전반적인 부분을 다루셨다.
공부하다가 중간에 이해가 안되는 부분을 여기서 찾아보았다.
http://pluu.github.io/blog/android/droidkaigi/2020/01/27/droidkaigi-multimodule-with-dagger/
Dagger의 개념정리라고 할까. 전체의 절반 정도는 공부 초반에 읽어보길 권한다.
https://medium.com/@jason_kim/tasting-dagger-2-on-android-%EB%B2%88%EC%97%AD-632e727a7998
실무에서 어떻게 쓰는지 궁금하면 아래 "배달의 민족 기술블로그"를 참고하자.
https://woowabros.github.io/experience/2019/07/31/android-dagger.html
미리 경고하는데 아래는 영어 원문이다. 그리고 조금 난해하다. 나 역시도 번역기 돌려서 보았다.
적어도 Dagger를 한번 정도 실습하고 나서 아래를 읽자.
내 경우에는 Dagger가 자동으로 Generate, 그러니깐 자동 생성하는 class가 어디서 만들어지는지 궁금했는데
아래 자료를 통해 겨우 티끌만큼 이해했다.
(_MembersInjector로 끝나거나 _Factory로 끝나는 클래스들)
Part1, 2만 링크를 걸었지만 3도 있다. 다만 내가 읽지 않았을 뿐. (아~ 내 눈~~~)
https://proandroiddev.com/deep-dive-into-dagger-generated-code-part-1-58f3cb9563de
https://proandroiddev.com/deep-dive-into-dagger-generated-code-part-2-13de4781b49d
3. 만든 당사자에게 설명을 들어보자.
섬네일만 봐도 익숙한 제이크 왓슨 형이다. (물론 호형호제를 맺은 적은 없다.)
친구가 이해가 되지 않을때 한번 보라고 추천해줬다.
영어로 되어 있어서 자막에 번역을 돌렸는데 좀 엉망이다. 살짝 멍때리며 보면 전체 그림은 볼 수 있을 듯.
https://www.youtube.com/watch?v=plK0zyRLIP8
다시 얘기하지만 위 내용을 전부 수행했지만 아직 프로젝트에 적용할 수준이 되지 못한다.
이해도가 낮아서일 수 있지만 그래도 이정도 노력을 했다는 것을 티내고 싶었다. (누구한테?)
Dagger 학습의 목적은 Hilt에 있었다. 이제 코틀린 베이스로 Hilt를 공부해볼까 한다.
왠지 Hilt를 공부하려면 Dagger를 알아야할 것 같아서 시작했는데 시간이 이렇게 오래 걸렸다.
수고한 의미로 스스로에게 궁디팡팡해주며 포스팅을 끝낸다. (ㅍㅍ)