안녕하세요.
1인 개발팀 이들러입니다.

회사를 그만두고 하고 싶은 일을 하려고 덤빈지 이제 반년쯤 되었습니다.

최근 세번째 제품이 출시되었습니다.

오늘은 앱 개발 작업하면서 썼던 도구들을 정리하도록 하겠습니다.

지난 번 앱에 썼던 도구들을 그대로 사용한 것도 있는데요.

일단은 전체적으로 나열하도록 하겠습니다.


앱개발을 준비하시는 분들께 조금이나마 도움이 되셨으면 좋겠습니다.


제품명 : 모노리얼 다이어리

주제 : 하루 한 편 자신만을 위한 글을 쓰세요.

앱주소 : http://goo.gl/Ti93mz


!출시배경!

제가 글쓰기를 좋아하고, 최근 이런저런 글쓰기를 하면서

하루 한 편 자신을 위한 습작노트 같은 다이어리앱이 필요했습니다.

사진 위에 글을 쓰는 개념으로 카드뉴스 형식의 한장 짜리 글을 손쉽게 작성하길 원했습니다.
그래서 랜덤하게 이미지를 제공하고 그 이미지 위에 글씨를 쓰는 형태를 생각했습니다.
물론 포토라이브러리에서 자신의 사진도 직접 올릴 수 있어야 한다고 생각했습니다.
화면은 전체화면이 하나의 사진처럼 보이길 원했습니다.
그래야 배경화면 등으로도 사용할 수 있으니까요.
사진은 글쓰기의 배경컨셉이라서 정밀하게는 조정될 필요는 없었으나,
위치 또는 모노리얼의 컨셉에 맞게 흑백처리를 할 수 있어야 한다고 생각했습니다.


오늘 제가 언급할 내용들입니다.
이 내용들은 제가 모노리얼 다이어리를 제작하면서 실제로 사용했던 자원 및 서비스들의 목록입니다.

00. 컴퓨터
01. 개발IDE, 언어

02. 관련클래스

03. 할일관리 도구

04. 소스관리

05. 이미지 서비스

06. 분석도구

07. 광고

08. 아이콘 제작

09. 스크린샷 제작

10. 소개글 작성



!컴퓨터!
2011년도에 구매한 맥북에어를 이용했습니다.
11인치 모니터, i5 1.6GHz, RAM 4G, 126SDD 구성입니다.
화면이 좀 작긴 했지만 앱 자체가 화면이 많은 고사양앱이 아니라서 작업시 그렇게 불편하진 않았습니다.
다만 아이패드 등의 시뮬레이터 등을 돌릴 때 클릭 한 번씩이 좀 오래 기다려야 하는 불편함이 있었습니다.
아이패드 시뮬레이터는 스크린샷을 찍을 때와 테스트 때만 조금 돌렸기 때문에 많이 불편하진 않았습니다.


!개발IDE, 언어!

Xcode를 이용했습니다.

Xcode는 사용할 수록 좋다는 생각이 듭니다. 각종 안내도 잘 되어 있고, 훌륭한 기능에 의외로 빠릅니다.
언어는  Swift 를 이용했으며,  iOS 8.0 이상 사용자가 사용할 수 있도록 제작하였습니다.
데이터가 쌓이는 형태라 데이터베이스가 필요했는데요. CoreData 를 이용했습니다.
iOS의 앱을 개발하기 위해서는 언어로는 오브젝트C 또는 Swift를 이용해야 하는데요.
애플이 앞으로 Swift 로 나간다고 해서 언어는 초기 진입시에  Swift 로 정했습니다.


!관련클래스!

앱을 제작하며 다뤘던 객체들입니다.

전체는 아니지만 직접적으로 손으로 타이핑을 쳐야하는 부분 중점적으로 나열하였습니다.

00. UILabel : 화면에 글자를 표시할 때 사용합니다.

01. UIButton : 화면에 버튼을 배치합니다.

02. UIImageView, UIImage : 화면에 이미지를 표시할 때 사용합니다.

03. UIViewController : 하나의 화면 틀에 사용됩니다.

04. UITableView: 여러 개의 내용을 목록형태로 표시할 때 사용합니다.

05. UITableViewCell : UITableView에서 한 칸에서의 내용을 정합니다.

06 UIPickerView: 여러 개의 목록 중 값을 선택할 때 사용됩니다.

07. GADBannerView : Admob 배너광고를 표시할 때 사용됩니다.

08. GADInterstitial : Admob 전면광고를 표시할 때 사용됩니다.

09. UIActivityIndicatorView : 처리중 사용자에게 기다리라는 의미로 사용됩니다.

10. UIImagePickerController : 사진라이브러리에서 사진을 선택할 때 사용됩니다.

11. UISearchBarDelegate : 검색창을 구성할 때 사용됩니다.

12. SKPaymentTransaction : 인앱결제를 구성할 때 사용됩니다.

13. SKProductsRequest : 인앱결제 목록을 가져올 때 사용됩니다.

14. NSUserDefaults : 각종 사용자 설정값을 저장할 때 사용됩니다.

15. NSManagedObjectContext : 코어데이터 다량의 데이터를 구조적으로 저장할 때 사용됩니다.

저는 처음 시작시에 어떤 기능을 붙여야할 경우 어떤 오브젝트를 써야할지 몰라서 고민했던 기억이 있습니다.

여러 다양한 책들과 구글의 도움을 많이 받았는데요. 여러 다양한 예제들을 많이 봐두시면 도움이 될듯합니다.


!할일관리 도구!

스케쥴을 관리할 할일관리 도구가 필요했습니다. 트렐로 서비스를 이용했습니다.

https://trello.com

이 서비스를 이용하는 첫번째 이유는 무엇보다! 무료 -_-;

유료버젼도 있으나, 무료만 사용하더라도 간단한 하나의 프로젝트 관리는 충분히 가능합니다.

해야할일, 하고있는일, 완료된일, 배운점 등으로 보드를 나눠서 사용했는데요.

칸반형태로 일을 진행하시고자 하시는 분들에게는 익숙한 패턴입니다.



!소스관리!

Git(https://git-scm.com/)을 이용했습니다. 호스팅서비스로는 https://bitbucket.org/ 을 이용했습니다.


Git은 브랜치 등으로 프로젝트를 다른 방면으로 작업 후에 합치거나 할 때 유용합니다.

물론 저희는 혼자서 작업하는게 대부분이라 코드의 병합 문제 등이 거의 발생하지 않았으나,

코드가 어느 시점에서 어떤 상태였는지 확인하는 것은 추후 유지관리 부분에서 굉장히 중요하므로,

소스관리 시스템을 꼭 사용하시기 바랍니다.



!이미지 서비스!

글쓰기 화면에서 보여질 랜덤한 이미지가 필요했습니다.

다양한 디바이스 크기에 맞춰질 고퀄리티의 이미지가 필요했습니다.

물론 라이센스에서도 문제가 없어야 했습니다.

https://unsplash.com/ 서비스를 이용했습니다. API 신청시 시간당 5000콜 커버가 가능합니다.

API에서는 랜덤한 이미지를 임의의 크기로 제공하는 서비스를 제공합니다.

저희 같은 가난한 팀에게는 신의 은총 같은 서비스입니다. +______+



!분석도구!

Firebase(https://firebase.google.com/)를 이용했습니다.

분석도구는 앱의 사용주기를 확인하기 위해서 필요했습니다. 유료앱이 아닌 무료앱이기에

구매로 이벤트가 끝나는 것이 아니라, 사용자가 앱을 오랫동안 사용할 수 있는 방식을 계속 고민해야 했습니다.

그러다보니 첫번째는 어느 지역의 누가 어떤 버튼을 얼마나 누르는지 알고 싶은게 제 마음이었습니다.

그래서 분석툴이 필요했는데요. 그런 과정에서 Firebase를 선택하게 되었습니다.

서비스는 앱을 생성 후 필요한 파일을 다운로드 후에 작업프로젝트에 추가해주는 방식이었습니다.

저도 처음해봐서 약간 헷갈리는 부분이 있어서 추후에 다시 정리할 생각입니다.



!광고!

애드몹(https://apps.admob.com/)입니다. 구글의 광고플랫폼을 이용하기로 했습니다.

Firebase 설치시 Admob이 포함되어 있어서 함께 설치하였습니다.

뷰를 추가하고 해당 뷰에 광고를 넣어주는 함수를 실행하는 형태였습니다.

광고는 사용자가 사용중 광고를 클릭하면 클릭당 금액이 적립되도록 되어 있습니다.

이러한 광고로 얼마만큼 효용이 있는지는 아직 미지수지만 일단 지켜볼 생각입니다.

애드몹은 스크린샷이 없습니다. 홈화면에 무조건 제 수익 등이 보여서 부끄럽더라구여 >,.<;;

많았으면 자랑삼아 올렸을텐데.. 초라한 성적에 -_-ㅋㅋ



!아이콘 제작!

아이콘 제작은 1024x1024 크기의 png 파일 하나가 필요합니다.

해당 파일로 나머지 다른 아이콘 크기는 리사이즈 해주는 툴(App Icon Resizer)로 리사이즈 하면 되었습니다.

우선은 포토샵으로 1024x1024 크기의 아이콘을 제작한 후 App Icon Resizer 로 각 디바이스에 맞는 아이콘 크기로 리사이징 했습니다.

App Icon Resizer는 1024x1024 크기의 png 파일을 드래그앤드롭으로 프로그램에 넣으면 폴더를 지정하게 됩니다.

폴더를 선택하면 각각 디바이스의 요구사항에 맞는 크기로 리사이징을 해줍니다.

리사이징 된 각각의 아이콘을 Xcode상에서 아이콘에 배치해주면 됩니다.



!스크린샷 제작!

런치킷(https://launchkit.io/) 서비스를 이용하시면 보다 편리하게 스크린샷을 만드실 수 있습니다.

최근에는 단순 디바이스에서의 캡춰화면이 아닌 디바이스틀도 보이고 화면 위아래에 글자를 넣는 형태가 일반적인데요.

이 곳의 서비스를 이용하면 손쉽게 그러한 이미지를 만들 수 있습니다.

최근 아이튠즈커넥트의 변경으로 모든 디바이스 크기의 스크린샷을 다 올리는 것이 아니라,
레이아웃의 큰 변화만 없다면, 5.5인치의 스크린샷 하나로 전체 디바이에 적용 가능합니다.
예전에는 스크린 크기별로 이미지를 조정해야 했기 때문에 이러한 서비스가 필수적이었다면, 이제는 5.5인치 하나만 만들어서
전체적용해도 되므로, 서비스의 매력은 조금 떨어진 것이 사실입니다.
그러나 여전히 틀에 이미지를 선택하고 글씨를 선택하고 간단한 클릭 몇번만으로 훌륭한 스크린샷이 나온다는 것은 참으로 매력적인 서비스입니다.


!소개글 작성!

소개글 작성은 한글과 영문으로 작성을 해야 합니다.

저희 팀은 영어를 그리 잘하는 인원이 없으니, 일단은 한글로 작성 후 번역을 의뢰하는 것이 그동안의 수순이었습니다.

저희가 사용한 번역서비스는 플리토(https://www.flitto.com/)입니다.

이 곳은 한 장이나 단락별로 번역을 요청할 수 있으마, 제품소개글 정도의 간단한 페이지라면 2,3천원 선이면 번역이 가능합니다.

회원가입 후 포인트를 구매하고 그 포인트로 번역의뢰를 할 수 있습니다.

글자 기준으로 금액을 책정하다보니, 의뢰 전에 한글부터 가다듬는 작업이 필요합니다.




지난 번 앱에 이어서 진행되다보니 별다른 도구의 변화는 없었습니다.

무료버젼의 특성상 광고가 추가되고, 그러다보니 사용자분석이 필요해져서 추가적인 분석툴이 추가되었습니다.

물론 이러한 툴만 있다고 개발이 되진 않습니다. 대부분 많은 고민과 기획, 디자인적인 부분, 개발부분에서의 문제해결 등이 필요합니다.

다만 이러한 내용이 있다는걸 정리하면서 저도 제 머리속에서 한 번 정리를 하고

이 글을 읽으시는 아이폰앱개발을 시작하시고자 하시는 분들에게 조금이나마 도움이 되고자 하였습니다.

쓰다보니 글이 길어졌습니다. 긴글 읽어주셔서 감사합니다.  ^^


아 중요한 목적. 모노리얼 다이어리 많이 이용해 주세요. ^^

공유버튼을 이용해서 페이스북이나 트위터에 내용을 공유하시면 일정기간 광고가 사라져서 광고 없이도 사용이 가능합니다.^^

의견이 있으실 경우 monorial@eedler.com 으로 보내주시면 적극 반영하겠습니다.^^

앱주소 : http://goo.gl/Ti93mz

+ Recent posts