SlideShare a Scribd company logo
1 of 21
음성메신저 Hay 개발 후기
네오위즈게임즈
김태우
발표 내용?
발표 내용!
1. Hay 서비스 개요
2. 클라이언트의 화면 구성
3. 서버-클라이언트 구성도
4. 스크럼 개발방법론 적용 후의 반성
5. 클라이언트 개발시 TDD 적용 후의 반성
6. 적용한 오픈 소스 라이브러리 소개
7. 당면했던 문제 및 해결 방법
1. Hay 서비스 개요
How are you?
지인과의 비실시간 음성 커뮤니케이션
서비스
음성 변조, 음성 스티커로 재미 요소 강화
2. 클라이언트의 화면 구성(1)
2. 클라이언트의 화면 구성(2)
2. 클라이언트의 화면 구성(3)
2. 클라이언트의 화면 구성(4)
3. 서버-클라이언트 구성도
4. 스크럼 적용 후의 반성(1)
스크럼?
4. 스크럼 적용 후의 반성(2)
기획 디자인 개발
QA
기존 개발 방법
4. 스크럼 적용 후의 반성(3)
스크럼이란?
애자일
짧은 개발주기의 반복을 통한
점진적 개발방법론
4. 스크럼 적용 후의 반성(4)
개발 과정 요약
1) 구성: 제품 책임자, 스크럼 마스터, 팀원
2) 제품 백로그를 만든다.
3) 스프린트 계획회의를 통해 스프린트와
스토리들을 정하고 스프린트 백로그를 만든다.
4) 일일 스크럼을 진행한다.
5) 스프린트의 목표가 달성되었거나, 정해진
시간이 되었다면, 데모한다.
6) 스프린트에 대하여 회고한다.
4. 스크럼 적용 후의 반성(5)
1) 독립적인 팀 구성 필요
(의사결정의 범위가 팀을 벗어나지
않아야 한다.)
2) 기획, 디자인, 개발 단계의 통합
다시 한다면?
5. 클라이언트 개발시 TDD 적용 후의 반성(1)
TDD란?
1) Test Driven Development
(테스트 주도 개발)
2) 어떻게 테스트할지를 먼저
고민한다.
3) 테스트케이스를 먼저 만든다.
5. 클라이언트 개발시 TDD 적용 후의 반성(2)
어려웠던 점
1) UI에 대한 테스트케이스는 비용 대비
효과가 낮다.
(UI 개발 70% + 서비스 로직 개발 30%)
2) 앱의 생명주기와 관련한 동작 테스트
3) 라이브러리가 시스템 자원을
비동기적으로 사용하는 경우
5. 클라이언트 개발시 TDD 적용 후의 반성(3)
TDD보다는 TBD?
1) Test Based Development
2) 테스트를 우선하자는 전제를 버리고,
테스트를 기반으로 개발하면,
행복해진다!
3) 테스트 프로젝트와 TestActivity 병행
6. 적용한 오픈소스 라이브러리 소개
1) MP3 인코딩:
LAME => libmp3lame (jni)
2) MP3 디코딩:
JLayer => jl1.0.1.jar
3) 음성 변조:
soundtouch (jni)
7. 당면했던 문제 및 해결 방법(1)
음성 변조에 대한 사용자 반응성 개선
문제)
1분짜리 음성을 변조하는데 20초??
해결)
여러 조각으로 나누고, 한조각씩 결과 파일에
반영한다!
주의사항)
1) 완료전 다른 파일을 변조할 경우 기존 동작은 종료
처리
2) 변조후 조각이 작아질 수 있다.
7. 당면했던 문제 및 해결 방법(2)
음성 변조 과정에서의 메모리 문제
해결
문제)
메시지 전송시 OutOfMemory 오류 발생
해결)
많은 메모리를 요하는 작업은 다른 프로세스의
Service에서 실행한다.
감사합니다.

More Related Content

What's hot

Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationDonghyun Seo
 
[D2 CAMPUS] Dodge the Dodge - GoN
[D2 CAMPUS] Dodge the Dodge - GoN[D2 CAMPUS] Dodge the Dodge - GoN
[D2 CAMPUS] Dodge the Dodge - GoNNAVER D2
 
5.yobi를 활용한 개발자 협업 및 배포 프로세스
5.yobi를 활용한 개발자 협업 및 배포 프로세스5.yobi를 활용한 개발자 협업 및 배포 프로세스
5.yobi를 활용한 개발자 협업 및 배포 프로세스NAVER D2
 
성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기DomainDriven DomainDriven
 
[오픈소스컨설팅]Session 4. dev ops 구성 사례와 전망
[오픈소스컨설팅]Session 4. dev ops 구성 사례와 전망[오픈소스컨설팅]Session 4. dev ops 구성 사례와 전망
[오픈소스컨설팅]Session 4. dev ops 구성 사례와 전망Hee Jae Lee
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기nexusz99
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님NAVER D2
 
Welcome to Android Studio
Welcome to Android StudioWelcome to Android Studio
Welcome to Android StudioWonKyun Lim
 
플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in Flitto플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in FlittoYongjun Kim
 
DevOps 발표 자료 다운로드
DevOps 발표 자료 다운로드DevOps 발표 자료 다운로드
DevOps 발표 자료 다운로드Opennaru, inc.
 
[오픈소스컨설팅] DevOps 체험교육 소개
[오픈소스컨설팅] DevOps 체험교육 소개[오픈소스컨설팅] DevOps 체험교육 소개
[오픈소스컨설팅] DevOps 체험교육 소개Brian HAN 한진규
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기Soojin Ro
 
학교에선 알려주지 않는 오픈소스이야기 - 박치완님
학교에선 알려주지 않는 오픈소스이야기 - 박치완님학교에선 알려주지 않는 오픈소스이야기 - 박치완님
학교에선 알려주지 않는 오픈소스이야기 - 박치완님NAVER D2
 
개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님NAVER D2
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼Kenu, GwangNam Heo
 
[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on lab[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on labNAVER D2
 
소프트웨어 개발 프로세스 배경 설명
소프트웨어 개발 프로세스 배경 설명소프트웨어 개발 프로세스 배경 설명
소프트웨어 개발 프로세스 배경 설명Andrew Sungjin Kim
 
04 워터폴모델-개발프로세스
04 워터폴모델-개발프로세스04 워터폴모델-개발프로세스
04 워터폴모델-개발프로세스Andrew Sungjin Kim
 

What's hot (20)

Git flow
Git flowGit flow
Git flow
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
[D2 CAMPUS] Dodge the Dodge - GoN
[D2 CAMPUS] Dodge the Dodge - GoN[D2 CAMPUS] Dodge the Dodge - GoN
[D2 CAMPUS] Dodge the Dodge - GoN
 
5.yobi를 활용한 개발자 협업 및 배포 프로세스
5.yobi를 활용한 개발자 협업 및 배포 프로세스5.yobi를 활용한 개발자 협업 및 배포 프로세스
5.yobi를 활용한 개발자 협업 및 배포 프로세스
 
성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기성장하는 스타트업의 프로세스 개척기
성장하는 스타트업의 프로세스 개척기
 
[오픈소스컨설팅]Session 4. dev ops 구성 사례와 전망
[오픈소스컨설팅]Session 4. dev ops 구성 사례와 전망[오픈소스컨설팅]Session 4. dev ops 구성 사례와 전망
[오픈소스컨설팅]Session 4. dev ops 구성 사례와 전망
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
Welcome to Android Studio
Welcome to Android StudioWelcome to Android Studio
Welcome to Android Studio
 
플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in Flitto플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in Flitto
 
DevOps 발표 자료 다운로드
DevOps 발표 자료 다운로드DevOps 발표 자료 다운로드
DevOps 발표 자료 다운로드
 
[오픈소스컨설팅] DevOps 체험교육 소개
[오픈소스컨설팅] DevOps 체험교육 소개[오픈소스컨설팅] DevOps 체험교육 소개
[오픈소스컨설팅] DevOps 체험교육 소개
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
 
학교에선 알려주지 않는 오픈소스이야기 - 박치완님
학교에선 알려주지 않는 오픈소스이야기 - 박치완님학교에선 알려주지 않는 오픈소스이야기 - 박치완님
학교에선 알려주지 않는 오픈소스이야기 - 박치완님
 
개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님
 
Dev team chronicles
Dev team chroniclesDev team chronicles
Dev team chronicles
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
 
[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on lab[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on lab
 
소프트웨어 개발 프로세스 배경 설명
소프트웨어 개발 프로세스 배경 설명소프트웨어 개발 프로세스 배경 설명
소프트웨어 개발 프로세스 배경 설명
 
04 워터폴모델-개발프로세스
04 워터폴모델-개발프로세스04 워터폴모델-개발프로세스
04 워터폴모델-개발프로세스
 

Similar to 음성메신저 Hay 개발 후기

ALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsTaeyoung Kim
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)SangIn Choung
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스Hee Jae Lee
 
[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동NAVER D2
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016Amazon Web Services Korea
 
Dev ops Introduction
Dev ops IntroductionDev ops Introduction
Dev ops Introduction영기 김
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법SangIn Choung
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원NAVER D2
 
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화KTH, 케이티하이텔
 
모바일 앱 개발을 위한 Agile 적용
모바일 앱 개발을 위한 Agile 적용모바일 앱 개발을 위한 Agile 적용
모바일 앱 개발을 위한 Agile 적용Kevin Kim
 
SoundHub 프로젝트 발표 자료
SoundHub 프로젝트 발표 자료SoundHub 프로젝트 발표 자료
SoundHub 프로젝트 발표 자료HeeJuMun
 
EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다이상한모임
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션SangIn Choung
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재NAVER D2
 
제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발Terry Cho
 
[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정Ji-Woong Choi
 
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화Terry Cho
 
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용Terry Cho
 
DevOps와 자동화
DevOps와 자동화DevOps와 자동화
DevOps와 자동화DONGSU KIM
 
토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드Justin Park
 

Similar to 음성메신저 Hay 개발 후기 (20)

ALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOps
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
 
[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
 
Dev ops Introduction
Dev ops IntroductionDev ops Introduction
Dev ops Introduction
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
 
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
 
모바일 앱 개발을 위한 Agile 적용
모바일 앱 개발을 위한 Agile 적용모바일 앱 개발을 위한 Agile 적용
모바일 앱 개발을 위한 Agile 적용
 
SoundHub 프로젝트 발표 자료
SoundHub 프로젝트 발표 자료SoundHub 프로젝트 발표 자료
SoundHub 프로젝트 발표 자료
 
EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
 
제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발
 
[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정
 
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
 
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
 
DevOps와 자동화
DevOps와 자동화DevOps와 자동화
DevOps와 자동화
 
토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드
 

음성메신저 Hay 개발 후기

  • 1. 음성메신저 Hay 개발 후기 네오위즈게임즈 김태우
  • 3. 발표 내용! 1. Hay 서비스 개요 2. 클라이언트의 화면 구성 3. 서버-클라이언트 구성도 4. 스크럼 개발방법론 적용 후의 반성 5. 클라이언트 개발시 TDD 적용 후의 반성 6. 적용한 오픈 소스 라이브러리 소개 7. 당면했던 문제 및 해결 방법
  • 4. 1. Hay 서비스 개요 How are you? 지인과의 비실시간 음성 커뮤니케이션 서비스 음성 변조, 음성 스티커로 재미 요소 강화
  • 10. 4. 스크럼 적용 후의 반성(1) 스크럼?
  • 11. 4. 스크럼 적용 후의 반성(2) 기획 디자인 개발 QA 기존 개발 방법
  • 12. 4. 스크럼 적용 후의 반성(3) 스크럼이란? 애자일 짧은 개발주기의 반복을 통한 점진적 개발방법론
  • 13. 4. 스크럼 적용 후의 반성(4) 개발 과정 요약 1) 구성: 제품 책임자, 스크럼 마스터, 팀원 2) 제품 백로그를 만든다. 3) 스프린트 계획회의를 통해 스프린트와 스토리들을 정하고 스프린트 백로그를 만든다. 4) 일일 스크럼을 진행한다. 5) 스프린트의 목표가 달성되었거나, 정해진 시간이 되었다면, 데모한다. 6) 스프린트에 대하여 회고한다.
  • 14. 4. 스크럼 적용 후의 반성(5) 1) 독립적인 팀 구성 필요 (의사결정의 범위가 팀을 벗어나지 않아야 한다.) 2) 기획, 디자인, 개발 단계의 통합 다시 한다면?
  • 15. 5. 클라이언트 개발시 TDD 적용 후의 반성(1) TDD란? 1) Test Driven Development (테스트 주도 개발) 2) 어떻게 테스트할지를 먼저 고민한다. 3) 테스트케이스를 먼저 만든다.
  • 16. 5. 클라이언트 개발시 TDD 적용 후의 반성(2) 어려웠던 점 1) UI에 대한 테스트케이스는 비용 대비 효과가 낮다. (UI 개발 70% + 서비스 로직 개발 30%) 2) 앱의 생명주기와 관련한 동작 테스트 3) 라이브러리가 시스템 자원을 비동기적으로 사용하는 경우
  • 17. 5. 클라이언트 개발시 TDD 적용 후의 반성(3) TDD보다는 TBD? 1) Test Based Development 2) 테스트를 우선하자는 전제를 버리고, 테스트를 기반으로 개발하면, 행복해진다! 3) 테스트 프로젝트와 TestActivity 병행
  • 18. 6. 적용한 오픈소스 라이브러리 소개 1) MP3 인코딩: LAME => libmp3lame (jni) 2) MP3 디코딩: JLayer => jl1.0.1.jar 3) 음성 변조: soundtouch (jni)
  • 19. 7. 당면했던 문제 및 해결 방법(1) 음성 변조에 대한 사용자 반응성 개선 문제) 1분짜리 음성을 변조하는데 20초?? 해결) 여러 조각으로 나누고, 한조각씩 결과 파일에 반영한다! 주의사항) 1) 완료전 다른 파일을 변조할 경우 기존 동작은 종료 처리 2) 변조후 조각이 작아질 수 있다.
  • 20. 7. 당면했던 문제 및 해결 방법(2) 음성 변조 과정에서의 메모리 문제 해결 문제) 메시지 전송시 OutOfMemory 오류 발생 해결) 많은 메모리를 요하는 작업은 다른 프로세스의 Service에서 실행한다.