SlideShare una empresa de Scribd logo
1 de 104
Toy Project
(Kotlin, Mvp, Dagger, Rx, FireBase 적용기)
우 명 인
Toy Project
• 재미삼아, 취미로, 호기심, 공부를 목적으로 하는 프로젝트
Toy Project
• 재미삼아, 취미로, 호기심, 공부를 목적으로 하는 프로젝트
• 개인 혹은 팀을 만들어 하는 프로젝트
Toy Project
• 재미삼아, 취미로, 호기심, 공부를 목적으로 하는 프로젝트
• 개인 혹은 팀을 만들어 하는 프로젝트
• 배포에 목적을 두지 않는 프로젝트
Toy Project
• 재미삼아, 취미로, 호기심, 공부를 목적으로 하는 프로젝트
• 개인 혹은 팀을 만들어 하는 프로젝트
• 배포에 목적을 두지 않는 프로젝트
• 회사 업무시간이 아닌 개인시간(퇴근 후, 주말 등) 을 이용하는
프로젝트
Toy Project
• 재미삼아, 취미로, 호기심, 공부를 목적으로 하는 프로젝트
• 개인 혹은 팀을 만들어 하는 프로젝트
• 배포에 목적을 두지 않는 프로젝트
• 회사 업무시간이 아닌 개인시간(퇴근 후, 주말 등) 을 이용하는
프로젝트
• 기능과 스펙에 제한이 없는 프로젝트
Toy Project
• 재미삼아, 취미로, 호기심, 공부를 목적으로 하는 프로젝트
• 개인 혹은 팀을 만들어 하는 프로젝트
• 배포에 목적을 두지 않는 프로젝트
• 회사 업무시간이 아닌 개인시간(퇴근 후, 주말 등) 을 이용하는
프로젝트
• 기능과 스펙에 제한이 없는 프로젝트
• 규모와 일정에 제한이 없는 프로젝트
Why?
• Kotlin으로 Android를 개발 할 수 있다는데?
Why?
• Kotlin으로 Android를 개발 할 수 있다는데?
• 요즘 Reactive가 유행이라던데?
Why?
• Kotlin으로 Android를 개발 할 수 있다는데?
• 요즘 Reactive가 유행이라던데?
• Mvp 패턴을 사용하면 개발과 유지보수에 좋다는데?
Why?
• Kotlin으로 Android를 개발 할 수 있다는데?
• 요즘 Reactive가 유행이라던데?
• Mvp 패턴을 사용하면 개발과 유지보수에 좋다는데?
• Dagger를 쓰면 Android 에서도 쉽게 DI를 쉽게 할 수 있다는데?
Why?
• Kotlin으로 Android를 개발 할 수 있다는데?
• 요즘 Reactive가 유행이라던데?
• Mvp 패턴을 사용하면 개발과 유지보수에 좋다는데?
• Dagger를 쓰면 Android 에서도 쉽게 DI를 쉽게 할 수 있다는데?
• FireBase를 사용하면 별도로 서버를 만들지 않아도 된다는데?
Why?
• Kotlin으로 Android를 개발 할 수 있다는데?
• 요즘 Reactive가 유행이라던데?
• Mvp 패턴을 사용하면 개발과 유지보수에 좋다는데?
• Dagger를 쓰면 Android 에서도 쉽게 DI를 쉽게 할 수 있다는데?
• FireBase를 사용하면 별도로 서버를 만들지 않아도 된다는데?
• 내가 사용할만한 App을 만들어 보고 싶다.
Problem
• Framework, Library, Pattern 들을 회사 프로젝트에 적용을
해볼까?
Problem
• Framework, Library, Pattern 들을 회사 프로젝트에 적용을
해볼까?
• 팀원들도 나와 같은 관심들을 갖고 있을까?
Problem
• Framework, Library, Pattern 들을 회사 프로젝트에 적용을
해볼까?
• 팀원들도 나와 같은 관심들을 갖고 있을까?
• 서비스중인 프로젝트에 적용을 해도 괜찮을까?
• 개발해야 될 일들도 많은데…
• 프로젝트 규모가 큰데 언제 다 적용하지?
Goal
•내가 사용 할 App을 만들자
•일상생활에서 자주 쓰는 App을 만들자.
•세상에 없는 App을 만들 생각은 없다.
•마음대로 기획도 하고 개발도 하자.
Goal
•내가 사용 할 App을 만들자
•일상생활에서 자주 쓰는 App을 만들자.
•세상에 없는 App을 만들 생각은 없다.
•마음대로 기획도 하고 개발도 하자.
•개발자 스러운 앱을 만들고 싶지 않다.
•디자이너와 같이 협업을 하자
Goal
•내가 사용 할 App을 만들자
•일상생활에서 자주 쓰는 App을 만들자.
•세상에 없는 App을 만들 생각은 없다.
•마음대로 기획도 하고 개발도 하자.
•개발자 스러운 앱을 만들고 싶지 않다.
•디자이너와 같이 협업을 하자
•배포까지 해보자
•잘되면 좋고, 안 되도 그만!
Goal
•내가 사용 할 App을 만들자
•일상생활에서 자주 쓰는 App을 만들자.
•세상에 없는 App을 만들 생각은 없다.
•마음대로 기획도 하고 개발도 하자.
•개발자 스러운 앱을 만들고 싶지 않다.
•디자이너와 같이 협업을 하자
•배포까지 해보자
•잘되면 좋고, 안 되도 그만!
•Kotlin, Rx, Mvp, Dagger2, FireBase를 쓰자!
•시간이 오래 걸리더라도 위에 있는 5개를 다 사용해보자
•완벽을 추구하지 말고, 점진적 리펙토링을 통해 개선하자.
Kotlin ?
• Android 개발을 할 수 있다는데?
Kotlin ?
• Android 개발을 할 수 있다는데? O (프로젝트는 현재 릴리즈)
Kotlin ?
• Android 개발을 할 수 있다는데? O (프로젝트는 현재 릴리즈)
• Java랑 100% 호환 된다는데?
Kotlin ?
• Android 개발을 할 수 있다는데? O (프로젝트는 현재 릴리즈)
• Java랑 100% 호환 된다는데? O (프로젝트는 현재 100% Kotlin ,
초기에는 자바와 같이 개발을 했었음)
Kotlin ?
• Android 개발을 할 수 있다는데? O (프로젝트는 현재 릴리즈)
• Java랑 100% 호환 된다는데? O (프로젝트는 현재 100% Kotlin ,
초기에는 자바와 같이 개발을 했었음)
• Fp를 할 수 있다는데?
•Scala보다 심플 하다는데?
Kotlin ?
• Android 개발을 할 수 있다는데? O (프로젝트는 현재 릴리즈)
• Java랑 100% 호환 된다는데? O (프로젝트는 현재 100% Kotlin ,
초기에는 자바와 같이 개발을 했었음)
• Fp를 할 수 있다는데? O (멀티 패러다임 언어)
• Scala보다 심플 하다는데? O (Scala와 문법은 비슷하지만 Scala보다는
심플하다고 느낌)
Kotlin ?
• Android 개발을 할 수 있다는데? O (프로젝트는 현재 릴리즈)
• Java랑 100% 호환 된다는데? O (프로젝트는 현재 100% Kotlin ,
초기에는 자바와 같이 개발을 했었음)
• Fp를 할 수 있다는데? O (멀티 패러다임 언어)
• Scala보다 심플 하다는데? O (Scala와 문법은 비슷하지만 Scala보다는
심플하다고 느낌)
•아직 써도 될까?
Kotlin ?
• Android 개발을 할 수 있다는데? O (프로젝트는 현재 릴리즈)
• Java랑 100% 호환 된다는데? O (프로젝트는 현재 100% Kotlin ,
초기에는 자바와 같이 개발을 했었음)
• Fp를 할 수 있다는데? O (멀티 패러다임 언어)
• Scala보다 심플 하다는데? O (Scala와 문법은 비슷하지만 Scala보다는
심플하다고 느낌)
•아직 써도 될까? O (시작 할 당시 에는 0. 대 베타 버전 이었지만,
프로젝트 규모가 크지 않아 큰 무리가 없었다. 지금은 정식 릴리즈된 상태)
Kotlin !
• 홈페이지 문서가 잘 되어 있다.
Kotlin !
• 홈페이지 문서가 잘 되어 있다.
• 우려 했던 것과 달리 러닝커브가 높지 않았다.
• Scala를 어느정도 알고 있어서 문법이 익숙했다.
Kotlin !
• 홈페이지 문서가 잘 되어 있다.
• 우려 했던 것과 달리 러닝커브가 높지 않았다.
• Scala를 어느정도 알고 있어서 문법이 익숙했다.
• Null safe가 잘 되어 있다.
Kotlin !
• 홈페이지 문서가 잘 되어 있다.
• 우려 했던 것과 달리 러닝커브가 높지 않았다.
• Scala를 어느정도 알고 있어서 문법이 익숙했다.
• Null safe가 잘 되어 있다.
• Fp를 적용 할 수 있다.
Kotlin !
• 홈페이지 문서가 잘 되어 있다.
• 우려 했던 것과 달리 러닝커브가 높지 않았다.
• Scala를 어느정도 알고 있어서 문법이 익숙했다.
• Null safe가 잘 되어 있다.
• Fp를 적용 할 수 있다.
• Android Extention, Lambda 를 통해, 많은 보일러 플레이트 들을
제거 할 수 있다.
• 코드가 간결 해지고, 로직에 더 집중 할 수 있다.
MVP ?
• MVP 패턴으로 개발을 하면 좋다는데?
• Model, View, Presenter 가 뭐지?
MVP ?
• MVP 패턴으로 개발을 하면 좋다는데?
• Model, View, Presenter 가 뭐지?
Model - App에서 사용되는 Data
View - Ui에 관련된 동작들을 정의한 Interface
Presenter - 비즈니스 로직을 담당.
MVP ?
• MVP 패턴으로 개발을 하면 좋다는데?
• Model, View, Presenter 가 뭐지?
Model - App에서 사용되는 Data
View - Ui에 관련된 동작들을 정의한 Interface
Presenter - 비즈니스 로직을 담당.
• Android에도 잘 적용이 될까?
MVP ?
• MVP 패턴으로 개발을 하면 좋다는데?
• Model, View, Presenter 가 뭐지?
Model - App에서 사용되는 Data
View - Ui에 관련된 동작들을 정의한 Interface
Presenter - 비즈니스 로직을 담당.
• Android에도 잘 적용이 될까? O (Android에 매우 적합, Android
dependency와 관련된 문제만 잘 처리 한다면.. )
MVP !
• 래퍼런스가 많다. (이론, 코드 모두)
MVP !
• 래퍼런스가 많다. (이론, 코드 모두)
• 초기 러닝커브는 높지 않았다.
MVP !
• 래퍼런스가 많다. (이론, 코드 모두)
• 초기 러닝커브는 높지 않았다.
• Android dependency 들이 골치
•Ui 및 Android dependency 들은 View로 분리
•순수 비즈니스 로직만 Presenter에 구현
•자연 스럽게 비즈니스 로직과 UI가 분리
•Presenter는 unit test만 하면 됨
•View는 Ui test만 하면됨
MVP !
아직도 고민 중...
• Ui와 비즈니스 로직이 많지 않은 구조도 굳이 MVP를
적용하는게 맞을까?
•그렇다면 어떤 부분은 MVP로 되어있고, 어떤 부분은 MVP로
되어 있지 않다면 이건 올바른 걸까?
Dagger2 ?
• DI를 사용하면 개발이 편하다는데?
• 그런데 DI가 뭐지?
Dagger2 ?
• DI를 사용하면 개발이 편하다는데?
• 그런데 DI가 뭐지? Dependency Injection의 약자로 의존성 주입을 말함.
간단하게 정리하자면, 클래스간 의존 관계를 클래스 내부에서
정하지 않고, 컨테이너를 통해 주입 시켜 주는 것을 말합니다.
Dagger2 ?
• DI를 사용하면 개발이 편하다는데?
• 그런데 DI가 뭐지? Dependency Injection의 약자로 의존성 주입을 말함.
간단하게 정리하자면, 클래스간 의존 관계를 클래스 내부에서
정하지 않고, 컨테이너를 통해 주입 시켜 주는 것을 말합니다.
• Dagger는 뭐지?
Dagger2 ?
• DI를 사용하면 개발이 편하다는데?
• 그런데 DI가 뭐지? Dependency Injection의 약자로 의존성 주입을 말함.
간단하게 정리하자면, 클래스간 의존 관계를 클래스 내부에서
정하지 않고, 컨테이너를 통해 주입 시켜 주는 것을 말합니다.
• Dagger는 뭐지? Android 에서 DI를 쉽게? 할 수 있도록 도와주는
라이브러리를 말함.
Dagger2 ?
• DI를 사용하면 개발이 편하다는데?
• 그런데 DI가 뭐지? Dependency Injection의 약자로 의존성 주입을 말함.
간단하게 정리하자면, 클래스간 의존 관계를 클래스 내부에서
정하지 않고, 컨테이너를 통해 주입 시켜 주는 것을 말합니다.
• Dagger는 뭐지? Android 에서 DI를 쉽게? 할 수 있도록 도와주는
라이브러리를 말함.
• 좋은 자료
Dagger2 !
• Dagger2를 사용하기 위해 DI 를 공부하게 됨.
Dagger2 !
• Dagger2를 사용하기 위해 DI 를 공부하게 됨.
• 보다 많은 재사용을 가능하게 해준다.
Dagger2 !
• Dagger2를 사용하기 위해 DI 를 공부하게 됨.
• 보다 많은 재사용을 가능하게 해준다.
• 보다 높은 decoupling 을 가능하게 해준다.
Dagger2 !
• Dagger2를 사용하기 위해 DI 를 공부하게 됨.
• 보다 많은 재사용을 가능하게 해준다.
• 보다 높은 decoupling 을 가능하게 해준다.
• 생각보다 러닝커브다 높았다.
Dagger2 !
• Dagger2를 사용하기 위해 DI 를 공부하게 됨.
• 보다 많은 재사용을 가능하게 해준다.
• 보다 높은 decoupling 을 가능하게 해준다.
• 생각보다 러닝커브다 높았다.
• 완벽하게 이해하지 못하고 사용을 했었는데, 문제가 생길 때마다
많은 시간과 노력이 들었다.
Rx ?
• Rx.. 너무나도 여기저기서 유행이다.
Rx ?
• Rx.. 너무나도 여기저기서 유행이다.
• 왠지 나도 당연히 알아야 만 할것 같았다.
Rx ?
• Rx.. 너무나도 여기저기서 유행이다.
• 왠지 나도 당연히 알아야 만 할것 같았다.
•Reactive는 뭐지?
Rx ?
• Rx.. 너무나도 여기저기서 유행이다.
• 왠지 나도 당연히 알아야 만 할것 같았다.
•Reactive는 뭐지? 반응형 프로그래밍
Rx ?
• Rx.. 너무나도 여기저기서 유행이다.
• 왠지 나도 당연히 알아야 만 할것 같았다.
•Reactive는 뭐지? 반응형 프로그래밍
• 그런데 Rx가 뭐지?
Rx ?
• Rx.. 너무나도 여기저기서 유행이다.
• 왠지 나도 당연히 알아야 만 할것 같았다.
•Reactive는 뭐지? 반응형 프로그래밍
• 그런데 Rx가 뭐지? ReactiveX, 이벤트 주도 반응형 프로그래밍
Rx ?
• Rx.. 너무나도 여기저기서 유행이다.
• 왠지 나도 당연히 알아야 만 할것 같았다.
•Reactive는 뭐지? 반응형 프로그래밍
• 그런데 Rx가 뭐지? ReactiveX, 이벤트 주도 반응형 프로그래밍
• 굳이 Android에서 사용 할 필요가 있을까?
Rx ?
• Rx.. 너무나도 여기저기서 유행이다.
• 왠지 나도 당연히 알아야 만 할것 같았다.
•Reactive는 뭐지? 반응형 프로그래밍
• 그런데 Rx가 뭐지? ReactiveX, 이벤트 주도 반응형 프로그래밍
• 굳이 Android에서 사용 할 필요가 있을까? O (Stream, 비동기, 병렬
처리를 하는데 있어서 매우 적합하다.)
Rx !
• Android call back 지옥에서 벗어날수 있게 해준다.
Rx !
• Android call back 지옥에서 벗어날수 있게 해준다.
• 비동기 처리를 쉽게 할 수 있다.
Rx !
• Android call back 지옥에서 벗어날수 있게 해준다.
• 비동기 처리를 쉽게 할 수 있다.
• 러닝커브는 보통이라고 생각한다.
Rx !
• Android call back 지옥에서 벗어날수 있게 해준다.
• 비동기 처리를 쉽게 할 수 있다.
• 러닝커브는 보통이라고 생각한다.
• Stream 을 사용 할 수 있다.
• Kotlin 을 사용하고 있어서 큰 이득은 없었지만, 초기 Java로 개발하던
시기에는 Rx를 사용해 Stream을 처리했었다.
• 여러 이벤트들을 합치고 분리 하는 등 여러 관리 할 수 있다.
Rx !
• Android call back 지옥에서 벗어날수 있게 해준다.
• 비동기 처리를 쉽게 할 수 있다.
• 러닝커브는 보통이라고 생각한다.
• Stream 을 사용 할 수 있다.
• Kotlin 을 사용하고 있어서 큰 이득은 없었지만, 초기 Java로 개발하던
시기에는 Rx를 사용해 Stream을 처리했었다.
• 여러 이벤트들을 합치고 분리 하는 등 여러 관리 할 수 있다.
• Thread를 관리 쉽게 할 수 있도록 도와준다.
FireBase ?
• 구글 IO이후에 너무 Hot 하다.
FireBase ?
• 구글 IO이후에 너무 Hot 하다.
• 별도의 서버 없이도 서버에서 하는 일을 할 수 있다는데?
•푸시도 가능하다는데? O (가능)
•Analytic도? O (가능 Ga와는 비슷하면서도 다르다.)
•CrashReport도? O (가능 Fabric보다는 2% 부족, 구글이
Fabric을 인수)
FireBase !
• 사용 초기에는 문서가 매우 좋지 않았지만, 현재는 잘 되어 있다.
FireBase !
• 사용 초기에는 문서가 매우 좋지 않았지만, 현재는 잘 되어 있다.
• 참고할 문서나 코드가 지속적으로 늘어나고 있다.
FireBase !
• 사용 초기에는 문서가 매우 좋지 않았지만, 현재는 잘 되어 있다.
• 참고할 문서나 코드가 지속적으로 늘어나고 있다.
• 정말 별도의 서버를 만들지 않고도 많은 걸 할 수 있다.
• Notifications 사용
• RemoteConfig 사용
• Analytics 사용
• RealTimeDataBase 사용 할 예정
협업
•이슈 관리는 Trello
협업
•이슈 관리는 Trello
•문서도 Trello (format은 구글Doc, 링크 등 마음 대로)
협업
•이슈 관리는 Trello
•문서도 Trello (format은 구글Doc, 링크 등 마음 대로)
•소스 관리는 GitHub
협업
•이슈 관리는 Trello
•문서도 Trello (format은 구글Doc, 링크 등 마음 대로)
•소스 관리는 GitHub
•미팅은 주기적으로, 유동적으로
•초기에는 기획을 해야 하기 때문에 매주,
•중간에는 각자 작업 해야 할 일들이 있기 때문에, 2주에 한번
•막판에는 프로젝트가 루즈해 지지 않고, 마무리를 하기 위해 매주
협업
•이슈 관리는 Trello
•문서도 Trello (format은 구글Doc, 링크 등 마음 대로)
•소스 관리는 GitHub
•미팅은 주기적으로, 유동적으로
•초기에는 기획을 해야 하기 때문에 매주,
•중간에는 각자 작업 해야 할 일들이 있기 때문에, 2주에 한번
•막판에는 프로젝트가 루즈해 지지 않고, 마무리를 하기 위해 매주
•미팅은 되도록 정해진 장소, 정해진 시간에!
회고
•기획의 수정, 원복 반복…
회고
•기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게,
개발에 더 집중을 할 수 있을것 같다.
회고
•기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게,
개발에 더 집중을 할 수 있을것 같다.
•루즈해 지거나 흐지부지 되기 쉽다.
회고
•기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게,
개발에 더 집중을 할 수 있을것 같다.
•루즈해 지거나 흐지부지 되기 쉽다. 미팅, 중간점검 등 을 적절히
회고
•기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게,
개발에 더 집중을 할 수 있을것 같다.
•루즈해 지거나 흐지부지 되기 쉽다. 미팅, 중간점검 등 을 적절히
•무리하게 되면 일상생활이 힘들어 진다.
회고
•기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게,
개발에 더 집중을 할 수 있을것 같다.
•루즈해 지거나 흐지부지 되기 쉽다. 미팅, 중간점검 등 을 적절히
•무리하게 되면 일상생활이 힘들어 진다. 선택과 집중의 필요성 (너무 무리
하게 되면 일상생활, 회사 생활에 악 영향을 미친다.)
회고
•기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게,
개발에 더 집중을 할 수 있을것 같다.
•루즈해 지거나 흐지부지 되기 쉽다. 미팅, 중간점검 등 을 적절히
•무리하게 되면 일상생활이 힘들어 진다. 선택과 집중의 필요성 (너무 무리
하게 되면 일상생활, 회사 생활에 악 영향을 미친다.)
•내가 제대로 하고 있는 건지?
•잦은 리펙토링으로 인한 일정딜레이
회고
•기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게,
개발에 더 집중을 할 수 있을것 같다.
•루즈해 지거나 흐지부지 되기 쉽다. 미팅, 중간점검 등 을 적절히
•무리하게 되면 일상생활이 힘들어 진다. 선택과 집중의 필요성 (너무 무리
하게 되면 일상생활, 회사 생활에 악 영향을 미친다.)
•내가 제대로 하고 있는 건지?
•잦은 리펙토링으로 인한 일정딜레이 제대로 공부하고 있다는 증거다!
회고
•기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게,
개발에 더 집중을 할 수 있을것 같다.
•루즈해 지거나 흐지부지 되기 쉽다. 미팅, 중간점검 등 을 적절히
•무리하게 되면 일상생활이 힘들어 진다. 선택과 집중의 필요성 (너무 무리
하게 되면 일상생활, 회사 생활에 악 영향을 미친다.)
•내가 제대로 하고 있는 건지?
•잦은 리펙토링으로 인한 일정딜레이 제대로 공부하고 있다는 증거다!
•혼자 할 껄, 괜히 같이했나?
•나 혼자 열심히 한다고 진도가 빨라지지 않는다. (답답함)
•쉬고싶은데 억지로 하게 된다. (퀄리티 저하)
•의사결정이 늦어진다. (일정연기)
회고
•기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게,
개발에 더 집중을 할 수 있을것 같다.
•루즈해 지거나 흐지부지 되기 쉽다. 미팅, 중간점검 등 을 적절히
•무리하게 되면 일상생활이 힘들어 진다. 선택과 집중의 필요성 (너무 무리
하게 되면 일상생활, 회사 생활에 악 영향을 미친다.)
•내가 제대로 하고 있는 건지?
•잦은 리펙토링으로 인한 일정딜레이 제대로 공부하고 있다는 증거다!
•혼자 할 껄, 괜히 같이했나?
•나 혼자 열심히 한다고 진도가 빨라지지 않는다. (답답함)
•쉬고싶은데 억지로 하게 된다. (퀄리티 저하)
•의사결정이 늦어진다. (일정연기)
토이 프로젝트를 빨리 한다고 누가 상을 주거나 하지 않는다. 시간은 걸려도
초기에 설정한 목표를 만족시키는데 집중하자.
잃은 점
•건강
잃은 점
•건강 시간을 정해 두고 무리하지 않음.
잃은 점
•건강 시간을 정해 두고 무리하지 않음.
•가족과의 시간
잃은 점
•건강 시간을 정해 두고 무리하지 않음.
•가족과의 시간 와이프가 잠든 이후, 혼자 있는 시간에
잃은 점
•건강 시간을 정해 두고 무리하지 않음.
•가족과의 시간 와이프가 잠든 이후, 혼자 있는 시간에
•게임 할 시간
잃은 점
•건강 시간을 정해 두고 무리하지 않음.
•가족과의 시간 와이프가 잠든 이후, 혼자 있는 시간에
•게임 할 시간 가끔은 게임보다 재미있을 때가 있다.
얻은 점
•Dagger2, Rx, Firebase, Mvp, Kotlin 경험
얻은 점
•Dagger2, Rx, Firebase, Mvp, Kotlin 경험
•사람
얻은 점
•Dagger2, Rx, Firebase, Mvp, Kotlin 경험
•사람
•소수이지만 팀을 만들고 관리, 운영 해봤다.
얻은 점
•Dagger2, Rx, Firebase, Mvp, Kotlin 경험
•사람
•소수이지만 팀을 만들고 관리, 운영 해봤다.
•PlayStore에 앱을 등록
얻은 점
•Dagger2, Rx, Firebase, Mvp, Kotlin 경험
•사람
•소수이지만 팀을 만들고 관리, 운영 해봤다.
•PlayStore에 앱을 등록
•자신감 Up
결과물
결과물
결과물
결론
이런 사람들에게 토이프로젝트를 강력하게 추천합니다.
결론
이런 사람들에게 토이프로젝트를 강력하게 추천합니다.
• 신 기술에 관심이 많다.
결론
이런 사람들에게 토이프로젝트를 강력하게 추천합니다.
• 신 기술에 관심이 많다.
• 회사 프로젝트에 새로운걸 할 여유가 없다.
결론
이런 사람들에게 토이프로젝트를 강력하게 추천합니다.
• 신 기술에 관심이 많다.
• 회사 프로젝트에 새로운걸 할 여유가 없다.
• 재미있게 자기 개발을 하고싶다.
결론
이런 사람들에게 토이프로젝트를 강력하게 추천합니다.
• 신 기술에 관심이 많다.
• 회사 프로젝트에 새로운걸 할 여유가 없다.
• 재미있게 자기 개발을 하고싶다.
• 용돈을 벌고 싶다.
결론
이런 사람들에게 토이프로젝트를 강력하게 추천합니다.
• 신 기술에 관심이 많다.
• 회사 프로젝트에 새로운걸 할 여유가 없다.
• 재미있게 자기 개발을 하고싶다.
• 용돈을 벌고 싶다.
주기적으로 토이 프로젝트를 하자!

Más contenido relacionado

Destacado

[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)Young-Ho Cho
 
주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상
주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상
주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상Darion Kim
 
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)Darion Kim
 
Dagger 2.0 을 활용한 의존성 주입
Dagger 2.0 을 활용한 의존성 주입Dagger 2.0 을 활용한 의존성 주입
Dagger 2.0 을 활용한 의존성 주입승용 윤
 

Destacado (6)

Kotlin.md
Kotlin.mdKotlin.md
Kotlin.md
 
[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)
 
주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상
주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상
주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상
 
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)
 
MVP 패턴 소개
MVP 패턴 소개MVP 패턴 소개
MVP 패턴 소개
 
Dagger 2.0 을 활용한 의존성 주입
Dagger 2.0 을 활용한 의존성 주입Dagger 2.0 을 활용한 의존성 주입
Dagger 2.0 을 활용한 의존성 주입
 

Similar a 토이 프로젝트를 하자.Pptx

커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님NAVER D2
 
백엔드 개발자로 1인분하기
백엔드 개발자로 1인분하기백엔드 개발자로 1인분하기
백엔드 개발자로 1인분하기민건 주
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원NAVER D2
 
My Way, Your Way
My Way, Your WayMy Way, Your Way
My Way, Your WayChris Ohk
 
BD Talk 2017 봄 - 원정코딩
BD Talk 2017 봄 - 원정코딩BD Talk 2017 봄 - 원정코딩
BD Talk 2017 봄 - 원정코딩Sumin Byeon
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기NAVER Engineering
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기Seokjae Lee
 
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며NAVER Engineering
 
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)Jaewon Choi
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법선협 이
 
오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼Kenu, GwangNam Heo
 
3주차 language
3주차 language3주차 language
3주차 language준혁 이
 
개발자와 커뮤니티 - 기묘한 이야기
개발자와 커뮤니티 - 기묘한 이야기개발자와 커뮤니티 - 기묘한 이야기
개발자와 커뮤니티 - 기묘한 이야기Lee WonJae
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기nexusz99
 
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)NAVER D2
 
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵Javajigi Jaesung
 
git + Pull Request + Code Review and Project Management with Agile
git + Pull Request + Code Review and Project Management with Agilegit + Pull Request + Code Review and Project Management with Agile
git + Pull Request + Code Review and Project Management with AgileWooseong Kim
 
INFCON2023-지속 가능한 소프트웨어 개발을 위한 경험과 통찰
INFCON2023-지속 가능한 소프트웨어 개발을 위한 경험과 통찰INFCON2023-지속 가능한 소프트웨어 개발을 위한 경험과 통찰
INFCON2023-지속 가능한 소프트웨어 개발을 위한 경험과 통찰Myeongseok Baek
 
모던 마크업 개발
모던 마크업 개발모던 마크업 개발
모던 마크업 개발Toby Yun
 
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한..."행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...Myeongseok Baek
 

Similar a 토이 프로젝트를 하자.Pptx (20)

커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
백엔드 개발자로 1인분하기
백엔드 개발자로 1인분하기백엔드 개발자로 1인분하기
백엔드 개발자로 1인분하기
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
 
My Way, Your Way
My Way, Your WayMy Way, Your Way
My Way, Your Way
 
BD Talk 2017 봄 - 원정코딩
BD Talk 2017 봄 - 원정코딩BD Talk 2017 봄 - 원정코딩
BD Talk 2017 봄 - 원정코딩
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
 
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
 
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
 
오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼
 
3주차 language
3주차 language3주차 language
3주차 language
 
개발자와 커뮤니티 - 기묘한 이야기
개발자와 커뮤니티 - 기묘한 이야기개발자와 커뮤니티 - 기묘한 이야기
개발자와 커뮤니티 - 기묘한 이야기
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기
 
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
 
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
 
git + Pull Request + Code Review and Project Management with Agile
git + Pull Request + Code Review and Project Management with Agilegit + Pull Request + Code Review and Project Management with Agile
git + Pull Request + Code Review and Project Management with Agile
 
INFCON2023-지속 가능한 소프트웨어 개발을 위한 경험과 통찰
INFCON2023-지속 가능한 소프트웨어 개발을 위한 경험과 통찰INFCON2023-지속 가능한 소프트웨어 개발을 위한 경험과 통찰
INFCON2023-지속 가능한 소프트웨어 개발을 위한 경험과 통찰
 
모던 마크업 개발
모던 마크업 개발모던 마크업 개발
모던 마크업 개발
 
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한..."행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
 

Más de Myeongin Woo

DroidKnight 2018 State machine by Selaed class
DroidKnight 2018 State machine by Selaed classDroidKnight 2018 State machine by Selaed class
DroidKnight 2018 State machine by Selaed classMyeongin Woo
 
Lezhin kotlin jetbrain
Lezhin kotlin jetbrainLezhin kotlin jetbrain
Lezhin kotlin jetbrainMyeongin Woo
 
Kotlin collections
Kotlin collectionsKotlin collections
Kotlin collectionsMyeongin Woo
 

Más de Myeongin Woo (9)

Goodbye null
Goodbye nullGoodbye null
Goodbye null
 
Fp basic-kotlin
Fp basic-kotlinFp basic-kotlin
Fp basic-kotlin
 
DroidKnight 2018 State machine by Selaed class
DroidKnight 2018 State machine by Selaed classDroidKnight 2018 State machine by Selaed class
DroidKnight 2018 State machine by Selaed class
 
Lezhin kotlin jetbrain
Lezhin kotlin jetbrainLezhin kotlin jetbrain
Lezhin kotlin jetbrain
 
Kotlin collections
Kotlin collectionsKotlin collections
Kotlin collections
 
Kotlin standard
Kotlin standardKotlin standard
Kotlin standard
 
Kotlin class
Kotlin classKotlin class
Kotlin class
 
Kotlin expression
Kotlin expressionKotlin expression
Kotlin expression
 
Kotlin with fp
Kotlin with fpKotlin with fp
Kotlin with fp
 

토이 프로젝트를 하자.Pptx

  • 1. Toy Project (Kotlin, Mvp, Dagger, Rx, FireBase 적용기) 우 명 인
  • 2. Toy Project • 재미삼아, 취미로, 호기심, 공부를 목적으로 하는 프로젝트
  • 3. Toy Project • 재미삼아, 취미로, 호기심, 공부를 목적으로 하는 프로젝트 • 개인 혹은 팀을 만들어 하는 프로젝트
  • 4. Toy Project • 재미삼아, 취미로, 호기심, 공부를 목적으로 하는 프로젝트 • 개인 혹은 팀을 만들어 하는 프로젝트 • 배포에 목적을 두지 않는 프로젝트
  • 5. Toy Project • 재미삼아, 취미로, 호기심, 공부를 목적으로 하는 프로젝트 • 개인 혹은 팀을 만들어 하는 프로젝트 • 배포에 목적을 두지 않는 프로젝트 • 회사 업무시간이 아닌 개인시간(퇴근 후, 주말 등) 을 이용하는 프로젝트
  • 6. Toy Project • 재미삼아, 취미로, 호기심, 공부를 목적으로 하는 프로젝트 • 개인 혹은 팀을 만들어 하는 프로젝트 • 배포에 목적을 두지 않는 프로젝트 • 회사 업무시간이 아닌 개인시간(퇴근 후, 주말 등) 을 이용하는 프로젝트 • 기능과 스펙에 제한이 없는 프로젝트
  • 7. Toy Project • 재미삼아, 취미로, 호기심, 공부를 목적으로 하는 프로젝트 • 개인 혹은 팀을 만들어 하는 프로젝트 • 배포에 목적을 두지 않는 프로젝트 • 회사 업무시간이 아닌 개인시간(퇴근 후, 주말 등) 을 이용하는 프로젝트 • 기능과 스펙에 제한이 없는 프로젝트 • 규모와 일정에 제한이 없는 프로젝트
  • 8. Why? • Kotlin으로 Android를 개발 할 수 있다는데?
  • 9. Why? • Kotlin으로 Android를 개발 할 수 있다는데? • 요즘 Reactive가 유행이라던데?
  • 10. Why? • Kotlin으로 Android를 개발 할 수 있다는데? • 요즘 Reactive가 유행이라던데? • Mvp 패턴을 사용하면 개발과 유지보수에 좋다는데?
  • 11. Why? • Kotlin으로 Android를 개발 할 수 있다는데? • 요즘 Reactive가 유행이라던데? • Mvp 패턴을 사용하면 개발과 유지보수에 좋다는데? • Dagger를 쓰면 Android 에서도 쉽게 DI를 쉽게 할 수 있다는데?
  • 12. Why? • Kotlin으로 Android를 개발 할 수 있다는데? • 요즘 Reactive가 유행이라던데? • Mvp 패턴을 사용하면 개발과 유지보수에 좋다는데? • Dagger를 쓰면 Android 에서도 쉽게 DI를 쉽게 할 수 있다는데? • FireBase를 사용하면 별도로 서버를 만들지 않아도 된다는데?
  • 13. Why? • Kotlin으로 Android를 개발 할 수 있다는데? • 요즘 Reactive가 유행이라던데? • Mvp 패턴을 사용하면 개발과 유지보수에 좋다는데? • Dagger를 쓰면 Android 에서도 쉽게 DI를 쉽게 할 수 있다는데? • FireBase를 사용하면 별도로 서버를 만들지 않아도 된다는데? • 내가 사용할만한 App을 만들어 보고 싶다.
  • 14. Problem • Framework, Library, Pattern 들을 회사 프로젝트에 적용을 해볼까?
  • 15. Problem • Framework, Library, Pattern 들을 회사 프로젝트에 적용을 해볼까? • 팀원들도 나와 같은 관심들을 갖고 있을까?
  • 16. Problem • Framework, Library, Pattern 들을 회사 프로젝트에 적용을 해볼까? • 팀원들도 나와 같은 관심들을 갖고 있을까? • 서비스중인 프로젝트에 적용을 해도 괜찮을까? • 개발해야 될 일들도 많은데… • 프로젝트 규모가 큰데 언제 다 적용하지?
  • 17. Goal •내가 사용 할 App을 만들자 •일상생활에서 자주 쓰는 App을 만들자. •세상에 없는 App을 만들 생각은 없다. •마음대로 기획도 하고 개발도 하자.
  • 18. Goal •내가 사용 할 App을 만들자 •일상생활에서 자주 쓰는 App을 만들자. •세상에 없는 App을 만들 생각은 없다. •마음대로 기획도 하고 개발도 하자. •개발자 스러운 앱을 만들고 싶지 않다. •디자이너와 같이 협업을 하자
  • 19. Goal •내가 사용 할 App을 만들자 •일상생활에서 자주 쓰는 App을 만들자. •세상에 없는 App을 만들 생각은 없다. •마음대로 기획도 하고 개발도 하자. •개발자 스러운 앱을 만들고 싶지 않다. •디자이너와 같이 협업을 하자 •배포까지 해보자 •잘되면 좋고, 안 되도 그만!
  • 20. Goal •내가 사용 할 App을 만들자 •일상생활에서 자주 쓰는 App을 만들자. •세상에 없는 App을 만들 생각은 없다. •마음대로 기획도 하고 개발도 하자. •개발자 스러운 앱을 만들고 싶지 않다. •디자이너와 같이 협업을 하자 •배포까지 해보자 •잘되면 좋고, 안 되도 그만! •Kotlin, Rx, Mvp, Dagger2, FireBase를 쓰자! •시간이 오래 걸리더라도 위에 있는 5개를 다 사용해보자 •완벽을 추구하지 말고, 점진적 리펙토링을 통해 개선하자.
  • 21. Kotlin ? • Android 개발을 할 수 있다는데?
  • 22. Kotlin ? • Android 개발을 할 수 있다는데? O (프로젝트는 현재 릴리즈)
  • 23. Kotlin ? • Android 개발을 할 수 있다는데? O (프로젝트는 현재 릴리즈) • Java랑 100% 호환 된다는데?
  • 24. Kotlin ? • Android 개발을 할 수 있다는데? O (프로젝트는 현재 릴리즈) • Java랑 100% 호환 된다는데? O (프로젝트는 현재 100% Kotlin , 초기에는 자바와 같이 개발을 했었음)
  • 25. Kotlin ? • Android 개발을 할 수 있다는데? O (프로젝트는 현재 릴리즈) • Java랑 100% 호환 된다는데? O (프로젝트는 현재 100% Kotlin , 초기에는 자바와 같이 개발을 했었음) • Fp를 할 수 있다는데? •Scala보다 심플 하다는데?
  • 26. Kotlin ? • Android 개발을 할 수 있다는데? O (프로젝트는 현재 릴리즈) • Java랑 100% 호환 된다는데? O (프로젝트는 현재 100% Kotlin , 초기에는 자바와 같이 개발을 했었음) • Fp를 할 수 있다는데? O (멀티 패러다임 언어) • Scala보다 심플 하다는데? O (Scala와 문법은 비슷하지만 Scala보다는 심플하다고 느낌)
  • 27. Kotlin ? • Android 개발을 할 수 있다는데? O (프로젝트는 현재 릴리즈) • Java랑 100% 호환 된다는데? O (프로젝트는 현재 100% Kotlin , 초기에는 자바와 같이 개발을 했었음) • Fp를 할 수 있다는데? O (멀티 패러다임 언어) • Scala보다 심플 하다는데? O (Scala와 문법은 비슷하지만 Scala보다는 심플하다고 느낌) •아직 써도 될까?
  • 28. Kotlin ? • Android 개발을 할 수 있다는데? O (프로젝트는 현재 릴리즈) • Java랑 100% 호환 된다는데? O (프로젝트는 현재 100% Kotlin , 초기에는 자바와 같이 개발을 했었음) • Fp를 할 수 있다는데? O (멀티 패러다임 언어) • Scala보다 심플 하다는데? O (Scala와 문법은 비슷하지만 Scala보다는 심플하다고 느낌) •아직 써도 될까? O (시작 할 당시 에는 0. 대 베타 버전 이었지만, 프로젝트 규모가 크지 않아 큰 무리가 없었다. 지금은 정식 릴리즈된 상태)
  • 29. Kotlin ! • 홈페이지 문서가 잘 되어 있다.
  • 30. Kotlin ! • 홈페이지 문서가 잘 되어 있다. • 우려 했던 것과 달리 러닝커브가 높지 않았다. • Scala를 어느정도 알고 있어서 문법이 익숙했다.
  • 31. Kotlin ! • 홈페이지 문서가 잘 되어 있다. • 우려 했던 것과 달리 러닝커브가 높지 않았다. • Scala를 어느정도 알고 있어서 문법이 익숙했다. • Null safe가 잘 되어 있다.
  • 32. Kotlin ! • 홈페이지 문서가 잘 되어 있다. • 우려 했던 것과 달리 러닝커브가 높지 않았다. • Scala를 어느정도 알고 있어서 문법이 익숙했다. • Null safe가 잘 되어 있다. • Fp를 적용 할 수 있다.
  • 33. Kotlin ! • 홈페이지 문서가 잘 되어 있다. • 우려 했던 것과 달리 러닝커브가 높지 않았다. • Scala를 어느정도 알고 있어서 문법이 익숙했다. • Null safe가 잘 되어 있다. • Fp를 적용 할 수 있다. • Android Extention, Lambda 를 통해, 많은 보일러 플레이트 들을 제거 할 수 있다. • 코드가 간결 해지고, 로직에 더 집중 할 수 있다.
  • 34. MVP ? • MVP 패턴으로 개발을 하면 좋다는데? • Model, View, Presenter 가 뭐지?
  • 35. MVP ? • MVP 패턴으로 개발을 하면 좋다는데? • Model, View, Presenter 가 뭐지? Model - App에서 사용되는 Data View - Ui에 관련된 동작들을 정의한 Interface Presenter - 비즈니스 로직을 담당.
  • 36. MVP ? • MVP 패턴으로 개발을 하면 좋다는데? • Model, View, Presenter 가 뭐지? Model - App에서 사용되는 Data View - Ui에 관련된 동작들을 정의한 Interface Presenter - 비즈니스 로직을 담당. • Android에도 잘 적용이 될까?
  • 37. MVP ? • MVP 패턴으로 개발을 하면 좋다는데? • Model, View, Presenter 가 뭐지? Model - App에서 사용되는 Data View - Ui에 관련된 동작들을 정의한 Interface Presenter - 비즈니스 로직을 담당. • Android에도 잘 적용이 될까? O (Android에 매우 적합, Android dependency와 관련된 문제만 잘 처리 한다면.. )
  • 38. MVP ! • 래퍼런스가 많다. (이론, 코드 모두)
  • 39. MVP ! • 래퍼런스가 많다. (이론, 코드 모두) • 초기 러닝커브는 높지 않았다.
  • 40. MVP ! • 래퍼런스가 많다. (이론, 코드 모두) • 초기 러닝커브는 높지 않았다. • Android dependency 들이 골치 •Ui 및 Android dependency 들은 View로 분리 •순수 비즈니스 로직만 Presenter에 구현 •자연 스럽게 비즈니스 로직과 UI가 분리 •Presenter는 unit test만 하면 됨 •View는 Ui test만 하면됨
  • 41. MVP ! 아직도 고민 중... • Ui와 비즈니스 로직이 많지 않은 구조도 굳이 MVP를 적용하는게 맞을까? •그렇다면 어떤 부분은 MVP로 되어있고, 어떤 부분은 MVP로 되어 있지 않다면 이건 올바른 걸까?
  • 42. Dagger2 ? • DI를 사용하면 개발이 편하다는데? • 그런데 DI가 뭐지?
  • 43. Dagger2 ? • DI를 사용하면 개발이 편하다는데? • 그런데 DI가 뭐지? Dependency Injection의 약자로 의존성 주입을 말함. 간단하게 정리하자면, 클래스간 의존 관계를 클래스 내부에서 정하지 않고, 컨테이너를 통해 주입 시켜 주는 것을 말합니다.
  • 44. Dagger2 ? • DI를 사용하면 개발이 편하다는데? • 그런데 DI가 뭐지? Dependency Injection의 약자로 의존성 주입을 말함. 간단하게 정리하자면, 클래스간 의존 관계를 클래스 내부에서 정하지 않고, 컨테이너를 통해 주입 시켜 주는 것을 말합니다. • Dagger는 뭐지?
  • 45. Dagger2 ? • DI를 사용하면 개발이 편하다는데? • 그런데 DI가 뭐지? Dependency Injection의 약자로 의존성 주입을 말함. 간단하게 정리하자면, 클래스간 의존 관계를 클래스 내부에서 정하지 않고, 컨테이너를 통해 주입 시켜 주는 것을 말합니다. • Dagger는 뭐지? Android 에서 DI를 쉽게? 할 수 있도록 도와주는 라이브러리를 말함.
  • 46. Dagger2 ? • DI를 사용하면 개발이 편하다는데? • 그런데 DI가 뭐지? Dependency Injection의 약자로 의존성 주입을 말함. 간단하게 정리하자면, 클래스간 의존 관계를 클래스 내부에서 정하지 않고, 컨테이너를 통해 주입 시켜 주는 것을 말합니다. • Dagger는 뭐지? Android 에서 DI를 쉽게? 할 수 있도록 도와주는 라이브러리를 말함. • 좋은 자료
  • 47. Dagger2 ! • Dagger2를 사용하기 위해 DI 를 공부하게 됨.
  • 48. Dagger2 ! • Dagger2를 사용하기 위해 DI 를 공부하게 됨. • 보다 많은 재사용을 가능하게 해준다.
  • 49. Dagger2 ! • Dagger2를 사용하기 위해 DI 를 공부하게 됨. • 보다 많은 재사용을 가능하게 해준다. • 보다 높은 decoupling 을 가능하게 해준다.
  • 50. Dagger2 ! • Dagger2를 사용하기 위해 DI 를 공부하게 됨. • 보다 많은 재사용을 가능하게 해준다. • 보다 높은 decoupling 을 가능하게 해준다. • 생각보다 러닝커브다 높았다.
  • 51. Dagger2 ! • Dagger2를 사용하기 위해 DI 를 공부하게 됨. • 보다 많은 재사용을 가능하게 해준다. • 보다 높은 decoupling 을 가능하게 해준다. • 생각보다 러닝커브다 높았다. • 완벽하게 이해하지 못하고 사용을 했었는데, 문제가 생길 때마다 많은 시간과 노력이 들었다.
  • 52. Rx ? • Rx.. 너무나도 여기저기서 유행이다.
  • 53. Rx ? • Rx.. 너무나도 여기저기서 유행이다. • 왠지 나도 당연히 알아야 만 할것 같았다.
  • 54. Rx ? • Rx.. 너무나도 여기저기서 유행이다. • 왠지 나도 당연히 알아야 만 할것 같았다. •Reactive는 뭐지?
  • 55. Rx ? • Rx.. 너무나도 여기저기서 유행이다. • 왠지 나도 당연히 알아야 만 할것 같았다. •Reactive는 뭐지? 반응형 프로그래밍
  • 56. Rx ? • Rx.. 너무나도 여기저기서 유행이다. • 왠지 나도 당연히 알아야 만 할것 같았다. •Reactive는 뭐지? 반응형 프로그래밍 • 그런데 Rx가 뭐지?
  • 57. Rx ? • Rx.. 너무나도 여기저기서 유행이다. • 왠지 나도 당연히 알아야 만 할것 같았다. •Reactive는 뭐지? 반응형 프로그래밍 • 그런데 Rx가 뭐지? ReactiveX, 이벤트 주도 반응형 프로그래밍
  • 58. Rx ? • Rx.. 너무나도 여기저기서 유행이다. • 왠지 나도 당연히 알아야 만 할것 같았다. •Reactive는 뭐지? 반응형 프로그래밍 • 그런데 Rx가 뭐지? ReactiveX, 이벤트 주도 반응형 프로그래밍 • 굳이 Android에서 사용 할 필요가 있을까?
  • 59. Rx ? • Rx.. 너무나도 여기저기서 유행이다. • 왠지 나도 당연히 알아야 만 할것 같았다. •Reactive는 뭐지? 반응형 프로그래밍 • 그런데 Rx가 뭐지? ReactiveX, 이벤트 주도 반응형 프로그래밍 • 굳이 Android에서 사용 할 필요가 있을까? O (Stream, 비동기, 병렬 처리를 하는데 있어서 매우 적합하다.)
  • 60. Rx ! • Android call back 지옥에서 벗어날수 있게 해준다.
  • 61. Rx ! • Android call back 지옥에서 벗어날수 있게 해준다. • 비동기 처리를 쉽게 할 수 있다.
  • 62. Rx ! • Android call back 지옥에서 벗어날수 있게 해준다. • 비동기 처리를 쉽게 할 수 있다. • 러닝커브는 보통이라고 생각한다.
  • 63. Rx ! • Android call back 지옥에서 벗어날수 있게 해준다. • 비동기 처리를 쉽게 할 수 있다. • 러닝커브는 보통이라고 생각한다. • Stream 을 사용 할 수 있다. • Kotlin 을 사용하고 있어서 큰 이득은 없었지만, 초기 Java로 개발하던 시기에는 Rx를 사용해 Stream을 처리했었다. • 여러 이벤트들을 합치고 분리 하는 등 여러 관리 할 수 있다.
  • 64. Rx ! • Android call back 지옥에서 벗어날수 있게 해준다. • 비동기 처리를 쉽게 할 수 있다. • 러닝커브는 보통이라고 생각한다. • Stream 을 사용 할 수 있다. • Kotlin 을 사용하고 있어서 큰 이득은 없었지만, 초기 Java로 개발하던 시기에는 Rx를 사용해 Stream을 처리했었다. • 여러 이벤트들을 합치고 분리 하는 등 여러 관리 할 수 있다. • Thread를 관리 쉽게 할 수 있도록 도와준다.
  • 65. FireBase ? • 구글 IO이후에 너무 Hot 하다.
  • 66. FireBase ? • 구글 IO이후에 너무 Hot 하다. • 별도의 서버 없이도 서버에서 하는 일을 할 수 있다는데? •푸시도 가능하다는데? O (가능) •Analytic도? O (가능 Ga와는 비슷하면서도 다르다.) •CrashReport도? O (가능 Fabric보다는 2% 부족, 구글이 Fabric을 인수)
  • 67. FireBase ! • 사용 초기에는 문서가 매우 좋지 않았지만, 현재는 잘 되어 있다.
  • 68. FireBase ! • 사용 초기에는 문서가 매우 좋지 않았지만, 현재는 잘 되어 있다. • 참고할 문서나 코드가 지속적으로 늘어나고 있다.
  • 69. FireBase ! • 사용 초기에는 문서가 매우 좋지 않았지만, 현재는 잘 되어 있다. • 참고할 문서나 코드가 지속적으로 늘어나고 있다. • 정말 별도의 서버를 만들지 않고도 많은 걸 할 수 있다. • Notifications 사용 • RemoteConfig 사용 • Analytics 사용 • RealTimeDataBase 사용 할 예정
  • 71. 협업 •이슈 관리는 Trello •문서도 Trello (format은 구글Doc, 링크 등 마음 대로)
  • 72. 협업 •이슈 관리는 Trello •문서도 Trello (format은 구글Doc, 링크 등 마음 대로) •소스 관리는 GitHub
  • 73. 협업 •이슈 관리는 Trello •문서도 Trello (format은 구글Doc, 링크 등 마음 대로) •소스 관리는 GitHub •미팅은 주기적으로, 유동적으로 •초기에는 기획을 해야 하기 때문에 매주, •중간에는 각자 작업 해야 할 일들이 있기 때문에, 2주에 한번 •막판에는 프로젝트가 루즈해 지지 않고, 마무리를 하기 위해 매주
  • 74. 협업 •이슈 관리는 Trello •문서도 Trello (format은 구글Doc, 링크 등 마음 대로) •소스 관리는 GitHub •미팅은 주기적으로, 유동적으로 •초기에는 기획을 해야 하기 때문에 매주, •중간에는 각자 작업 해야 할 일들이 있기 때문에, 2주에 한번 •막판에는 프로젝트가 루즈해 지지 않고, 마무리를 하기 위해 매주 •미팅은 되도록 정해진 장소, 정해진 시간에!
  • 76. 회고 •기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게, 개발에 더 집중을 할 수 있을것 같다.
  • 77. 회고 •기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게, 개발에 더 집중을 할 수 있을것 같다. •루즈해 지거나 흐지부지 되기 쉽다.
  • 78. 회고 •기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게, 개발에 더 집중을 할 수 있을것 같다. •루즈해 지거나 흐지부지 되기 쉽다. 미팅, 중간점검 등 을 적절히
  • 79. 회고 •기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게, 개발에 더 집중을 할 수 있을것 같다. •루즈해 지거나 흐지부지 되기 쉽다. 미팅, 중간점검 등 을 적절히 •무리하게 되면 일상생활이 힘들어 진다.
  • 80. 회고 •기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게, 개발에 더 집중을 할 수 있을것 같다. •루즈해 지거나 흐지부지 되기 쉽다. 미팅, 중간점검 등 을 적절히 •무리하게 되면 일상생활이 힘들어 진다. 선택과 집중의 필요성 (너무 무리 하게 되면 일상생활, 회사 생활에 악 영향을 미친다.)
  • 81. 회고 •기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게, 개발에 더 집중을 할 수 있을것 같다. •루즈해 지거나 흐지부지 되기 쉽다. 미팅, 중간점검 등 을 적절히 •무리하게 되면 일상생활이 힘들어 진다. 선택과 집중의 필요성 (너무 무리 하게 되면 일상생활, 회사 생활에 악 영향을 미친다.) •내가 제대로 하고 있는 건지? •잦은 리펙토링으로 인한 일정딜레이
  • 82. 회고 •기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게, 개발에 더 집중을 할 수 있을것 같다. •루즈해 지거나 흐지부지 되기 쉽다. 미팅, 중간점검 등 을 적절히 •무리하게 되면 일상생활이 힘들어 진다. 선택과 집중의 필요성 (너무 무리 하게 되면 일상생활, 회사 생활에 악 영향을 미친다.) •내가 제대로 하고 있는 건지? •잦은 리펙토링으로 인한 일정딜레이 제대로 공부하고 있다는 증거다!
  • 83. 회고 •기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게, 개발에 더 집중을 할 수 있을것 같다. •루즈해 지거나 흐지부지 되기 쉽다. 미팅, 중간점검 등 을 적절히 •무리하게 되면 일상생활이 힘들어 진다. 선택과 집중의 필요성 (너무 무리 하게 되면 일상생활, 회사 생활에 악 영향을 미친다.) •내가 제대로 하고 있는 건지? •잦은 리펙토링으로 인한 일정딜레이 제대로 공부하고 있다는 증거다! •혼자 할 껄, 괜히 같이했나? •나 혼자 열심히 한다고 진도가 빨라지지 않는다. (답답함) •쉬고싶은데 억지로 하게 된다. (퀄리티 저하) •의사결정이 늦어진다. (일정연기)
  • 84. 회고 •기획의 수정, 원복 반복… 기획을 어느정도 마무리 해놓고 진행 하는게, 개발에 더 집중을 할 수 있을것 같다. •루즈해 지거나 흐지부지 되기 쉽다. 미팅, 중간점검 등 을 적절히 •무리하게 되면 일상생활이 힘들어 진다. 선택과 집중의 필요성 (너무 무리 하게 되면 일상생활, 회사 생활에 악 영향을 미친다.) •내가 제대로 하고 있는 건지? •잦은 리펙토링으로 인한 일정딜레이 제대로 공부하고 있다는 증거다! •혼자 할 껄, 괜히 같이했나? •나 혼자 열심히 한다고 진도가 빨라지지 않는다. (답답함) •쉬고싶은데 억지로 하게 된다. (퀄리티 저하) •의사결정이 늦어진다. (일정연기) 토이 프로젝트를 빨리 한다고 누가 상을 주거나 하지 않는다. 시간은 걸려도 초기에 설정한 목표를 만족시키는데 집중하자.
  • 86. 잃은 점 •건강 시간을 정해 두고 무리하지 않음.
  • 87. 잃은 점 •건강 시간을 정해 두고 무리하지 않음. •가족과의 시간
  • 88. 잃은 점 •건강 시간을 정해 두고 무리하지 않음. •가족과의 시간 와이프가 잠든 이후, 혼자 있는 시간에
  • 89. 잃은 점 •건강 시간을 정해 두고 무리하지 않음. •가족과의 시간 와이프가 잠든 이후, 혼자 있는 시간에 •게임 할 시간
  • 90. 잃은 점 •건강 시간을 정해 두고 무리하지 않음. •가족과의 시간 와이프가 잠든 이후, 혼자 있는 시간에 •게임 할 시간 가끔은 게임보다 재미있을 때가 있다.
  • 91. 얻은 점 •Dagger2, Rx, Firebase, Mvp, Kotlin 경험
  • 92. 얻은 점 •Dagger2, Rx, Firebase, Mvp, Kotlin 경험 •사람
  • 93. 얻은 점 •Dagger2, Rx, Firebase, Mvp, Kotlin 경험 •사람 •소수이지만 팀을 만들고 관리, 운영 해봤다.
  • 94. 얻은 점 •Dagger2, Rx, Firebase, Mvp, Kotlin 경험 •사람 •소수이지만 팀을 만들고 관리, 운영 해봤다. •PlayStore에 앱을 등록
  • 95. 얻은 점 •Dagger2, Rx, Firebase, Mvp, Kotlin 경험 •사람 •소수이지만 팀을 만들고 관리, 운영 해봤다. •PlayStore에 앱을 등록 •자신감 Up
  • 100. 결론 이런 사람들에게 토이프로젝트를 강력하게 추천합니다. • 신 기술에 관심이 많다.
  • 101. 결론 이런 사람들에게 토이프로젝트를 강력하게 추천합니다. • 신 기술에 관심이 많다. • 회사 프로젝트에 새로운걸 할 여유가 없다.
  • 102. 결론 이런 사람들에게 토이프로젝트를 강력하게 추천합니다. • 신 기술에 관심이 많다. • 회사 프로젝트에 새로운걸 할 여유가 없다. • 재미있게 자기 개발을 하고싶다.
  • 103. 결론 이런 사람들에게 토이프로젝트를 강력하게 추천합니다. • 신 기술에 관심이 많다. • 회사 프로젝트에 새로운걸 할 여유가 없다. • 재미있게 자기 개발을 하고싶다. • 용돈을 벌고 싶다.
  • 104. 결론 이런 사람들에게 토이프로젝트를 강력하게 추천합니다. • 신 기술에 관심이 많다. • 회사 프로젝트에 새로운걸 할 여유가 없다. • 재미있게 자기 개발을 하고싶다. • 용돈을 벌고 싶다. 주기적으로 토이 프로젝트를 하자!