알짜배기 예제로 배우는 iOS 프로그래밍

2017-11-30 / 유용호 저


무슨 책인가.

 제목은 '알짜배기 예제로 배우는 iOS 프로그래밍' 책이다. 앱을 개발하고자 하는 시작 단계의 사람들을 위한 흐름 소개서다. 개발 내용을 가장 많이 다루고 있지만, 책의 전체 내용은 앱 출시과정을 위해 어떠한 일을 해야하는지 다룬다. 예제를 통해 앱 개발의 전반적인 내용을 다루며, 무엇을 학습하고, 무엇을 준비해야하는지 알려준다. iOS 앱의 출시만을 목표로 다른 것은 염두에 두지 않는다. 프로그래밍 기초적인 내용도 출시와 상관 없다면 뺐다. 차라리 출시과정을 한 번 간접체험하고 다른 책, 웹사이트, 강좌 등을 이용해 보다 구체적인 학습의 단계로 넘어가는 것이 좋다고 생각했다. 그래서 두께가 두꺼워지지 않도록 신경썼다. 두꺼우면 끝까지 보지 않으니까. 이 책에 나온 각 내용을 상세히 다룬다면 지금의 몇 배의 두께를 감당해야 할 것이고, 그것은 초심자를 위한 것이 아니라고 생각했다. 무쪼록 내가 앱을 만들어왔던 이 발자취가 누군가의 막연함을 덜어주는데 조금이나마 도움이 됐으면 한다.


누구를 위한 것인가.

 철저하게 초심자를 위한 책이다. 최대한 초심자를 위해 쓰려고 노력했다. 전문가가 보기엔 오히려 이상한 부분도 있을 것이다. 설명을 최대한 간략히 하려고 노력했기 때문이다. 사실 앱 제작을 위한 입문서가 할 일은 특정 부분을 상세히 알려주는 것보단, 전체적인 흐름을 체험하고, 무엇을 더 학습해야 하는지 알려주는 것에 있다고 나는 믿는다. 처음 앱을 개발해서 출시하고자 하면 막연하고 답답한 마음이 있다. 나역시 처음 너무도 막막했기에 그 기분을 잘 알고, 다른 누군가가 나와 똑같은 느낌을 느끼는게 싫었다. 초심자와 전문가는 사실 막막함의 차이가 가장 크다. 전문가도 특정 분야에 대해 무엇이든 다 알진 못한다. 다만 전문가들은 그들 스스로 길을 찾아갈 줄 알며, 무엇을 더 익혀야 하는지 알기 때문에, 방향을 고민하진 않는다. 전문가는 자신이 무엇이 부족한지 알고 있고, 그 부족함을 어떻게 채워야 하는지도 알고 있다. 자신이 알고 있는 길을 그냥 걸어가면 되는 것이다. 초심자는 다르다. 자신이 무엇을 모르는지 조차 모른다. 초심자 강의에서 모르는 것을 물어보라고 하면 대부분은 질문이 없다. 이는 초심자가 모르는게 없어서가 아니라, 무엇을 물어봐야하는지 조차 모르기 때문이다. 이 책이 초심자들 스스로 무엇을 모르는지 깨닫는데 조금이나마 도움이 되길 바란다.

무엇이 들어있는가.

 나의 입장에서 이 책은 누군가를 위한 학습서라기 보다는 나의 족적을 돌아볼 수 있는 일기장에 가까운 느낌이다. 이 책에 있는 내용들은 내가 실제 앱을 만들며 겪었던 과정을 그대로 담고 있다. 우선은 앱을 기획하기 위한 도구들을 설명한다. 이러한 도구들은 실제로 내가 앱을 제작하며 사용했던 도구들이다. 생각을 정리하고, 방향을 설정하고, 무엇보다 중요한 것은 어디까지만 구현할지 정하는 것이다. 이 책은 각 챕터별 설명을 위한 앱을 따로 제작하지 않았다. 내가 갖고싶은 앱을 만들고, 그 앱의 제작기를 제공하는 형태다. 그 과정에서 내가 도움을 받았던 도구들과 작성했던 코드들을 거의 그대로 넣었다. 쓰일지 말지 모르는 개념을 넣어서 책을 두껍게 만들기보다는 딱 내가 사용한 개념만을 넣으려고 노력했다. 앱 출시의 간접경험을 제공하고자 하는 목적이었기에 외주에 대한 소개도 넣었다. 모든 걸 혼자할 수는 없기 때문이다. 돈 많으면 다 해결되겠지만, 내가 돈이 없었으므로, 돈 많이 드는 프로그래밍 개발 부분이 주된 내용이다. 출시를 위해 준비해야하는 다른 주변 상황들과 앞으로 무엇을 더 학습해야 하는지도 넣었다.

어떻게 보아야 하는가.

 책에 소개된 내용을 한 번 보고나서, 자신만의 앱을 만든다. 글자도 넣어보고, 입력 칸도 넣어보며, 책이 안내한 모양과는 다른 자신만의 앱을 이리저리 만들길 추천한다. 심화단계의 앱은 앱스토어에 올려져 있다. 어차피 무료이니 다운로드 받아서 이것저것 눌러보면 좋다. 그 기능을 어떻게 코드로 타이핑했는지 알려고 하기 보다는, 이러한 형태가 있구나, 정도의 느낌만 알면된다. 추후 비슷한 기능이 필요할 때 그 부분을 찾아서 그대로 타이핑 치거나, 소스코드를 다운받아 참고해도 된다. 시간 상 하나하나 상세히 살펴보기 힘들다면, 소설책처럼 눈으로 쭈욱 읽어나가기만 해도 된다. 소스코드도 넓게보면 하나의 패턴이므로, 우선은 그러한 패턴에 익숙해지길 바란다. 소스코드 뿐만이 아닌 앱 기획, 디자인, 관리 웹사이트 등에 대한 정보를 어떤 방향으로 접근해야하는지의 시각으로 봐주길 바란다. 어떤 분야든 책 한, 두 권 보고 전문가 수준으로 올라가는 분야는 없다. 내가 이 책으로 이루고자 하는건 간단하다. 이 책을 보고 누군가가 이제 자신의 다음 책, 다음 강좌, 또는 다음 질문을 깨닫게 된다면, 나는 그것으로 만족하려 한다.


알라딘: 바로가기

예스24: 바로가기

교보문고: 바로가기

안녕하세요.

오늘은 아이폰 일기장 어플 모노리얼 다이어리 사용법을 설명드리겠습니다.

감성적인 일기장 어플을 찾으신다면 모노리얼 다이어리를 추천합니다.^^


간단 소개.

이름 : 모노리얼 다이어리

취지 : 하루 한 편, 나만을 위한 글쓰기를 해보세요.

iOS 앱스토어 : https://goo.gl/Ti93mz


모노리얼 다이어리는 기억을 흑과 백 이라는 색상을 가지고 표현하고 싶어서 시작된 일기장 어플입니다.

하루 한 편 나만을 위한 글쓰기를 해보자라는 시작이었습니다.

한 장의 사진 위에 자신의 생각을 간단하게 적는 방식으로 글을 작성합니다.

기본적으로 모노리얼 다이어리의 배경색은 전자책 배경색 기반의 부드러움을 제공합니다.

글자색 역시 전자책의 색상을 사용해서 최대한 눈에 피로감을 없애고자 하였습니다.


스크린샷은 캡춰를 위해 실행한 데모프로그램이라 영문이지만, 실제 일기장 어플은 한글을 지원합니다.

설명은 한글 메뉴를 기준으로 설명드리겠습니다.^^


■ 목록보기 : 목록은 위에 선택된 월을 기준으로 표시됩니다.


특징은 Any라는 선택이 있어서 Any를 선택할 경우 해당 부분에 대해서는 모두 표시됩니다.

연도 선택부분을 Any라고 선택하고 월 선택부분을 Oct 라고 선택할 경우.

모든 연도에 10월에 작성된 글들을 모아서 볼 수 있습니다.



연도 선택부분을 2016 이라고 선택하고 월 선택부분을 Any 라고 선택할 경우.

2016년에 작성된 모든 글들을 모아서 볼 수도 있습니다.




연도 선택부분을 Any, 월 선택부분도 Any 라고 선택할 경우 모든 글들을 볼 수 있습니다.

목록에서 날짜부분의 하얀색 동그라미는 '오늘'을 나타냅니다.


■ 글쓰기 : 목록화면에서 오른쪽 아래쪽의 연필 모양을 탭하면 글쓰기가 시작됩니다.


0. 글쓰기

무슨 생각을 하고 있나요?

부분을 탭하시면 글을 작성할 수 있습니다.^^

작성 후 완료를 클릭하시면 기타 다른 효과나 레이아웃을 편집할 수 있으며, 바로 오른쪽 상단의 연필 모양을 클릭하시면 바로 글쓰기가 되기도 합니다.


1. 날짜 변경

위쪽의 날짜 버튼을 클릭하면 다른 날짜의 글을 작성할 수 있습니다.


다른 일기장 어플과 다르게 모노리얼 다이어리 일기장 어플은 미래의 날짜를 선택할 수 있습니다.

미래의 꿈을 명확히 꾸고자 하는 제작자 본인이 쓰려고 만든 일기장 어플답게 미래의 일기를 작성할 수 있습니다.

저는 미래에 제가 이루고 싶은 날짜에 원하는 꿈을 적곤 합니다. 그 날 일기에는 . 저의 꿈이 이미 이루어진 것처럼 적기도 합니다.


2. 사진 변경하기 : 하단의 사진모양 아이콘을 클릭하면 사진관련 메뉴가 표시됩니다.


사진은 자신의 사진을 넣을 수도 있고,

랜덤 이미지를 새롭게 불러올 수도 있습니다.

사진없이 그냥 흰바탕에 글을 쓸 수도 있습니다.


3. 글자형태 변경하기: 하단의 문서모양 아이콘을 클릭하면 글자형태관련 메뉴가 표시됩니다.


폰트의 사이즈와 정렬 방식을 선택할 수 있습니다.


4. 색상 조정하기 : 하단의 색상조정 아이콘을 클릭하시면 관련 메뉴가 표시됩니다.


처음엔 사진도 무조건 흑백으로만 볼 수 있었으나, 제작과정에서 원본색상도 선택할 수 있도록 변경되었습니다.
폰트의 색상도 설정가능하며,
글자 뒤의 검은색 바탕의 투명도를 설정할 수 있습니다.
사진을 배경으로 넣게 되면 사진 뒤쪽의 흰바탕에는 사진의 흐릿한 이미지가 배경으로 표시됩니다. 이 항목의 투명도도 선택 가능합니다.

5. 위치 이동하기 : 사진을 드래그 하거나, 텍스트 칸의 아이콘을 드래그 할 경우 위치를 조정할 수 있습니다.


사진의 위치에 따라 글자의 위치도 변경해보세요. 또다른 느낌의 글이 됩니다.

하단의 리셋버튼을 클릭하면 초기 레이아웃으로 변경됩니다.


■ 내용보기 : 목록 화면 중 보고 싶은 내용을 탭하시면 글 내용을 볼 수 있습니다.


왼쪽, 오른쪽으로 스와이프 하면 이전 글과 다음 글이 표시됩니다.

새로운 글이 표시된 후에 위쪽에 잠시동안 그 날의 날짜가 표시됩니다.


내용보기 화면에서 화면을 탭할 경우 메뉴가 표시됩니다.


0. 공유하기 - 하단의 공유하기 버튼으로 해당 이미지를 다른 프로그램으로 공유할 수 있습니다.

페이스북이나, 트위터에 내용을 공유해보세요. 광고가 일정기간 사라지는 효과도 있습니다.

1. 다운로드 - 버튼 클릭시 한 장의 사진처럼 해당 화면이 캡춰되어 사진갤러리에 저장됩니다.


■ 삭제하기 : 목록화면에서 삭제하고자하는 글을 왼쪽으로 스와이프 하실 경우 해당 글을 삭제할 수 있습니다.

삭제하신 글은 백업해놓지 않은 이상은 다시 살릴 수 없습니다. 꼭 주의해서 삭제하시기 바랍니다^^


■ 설정하기 : 목록화면에서 왼쪽 상단의 메뉴 버튼을 클릭하게 되면 설정 메뉴가 보입니다.


설정하기는 앱을 사용할 때의 이런저런 환경을 설정할 수 있습니다.^^



0. 잠금 - 해당 앱은 다이어리 앱입니다. 누군가가 보면 부끄럽겠죠? ^^;

잠금 기능을 켜면 비밀번호를 설정하고 잠금 기능이 설정됩니다. 터치ID가 가능한 기기일 경우 손가락 모양의 버튼이 생깁니다. 버튼 클릭시 인증시 터치ID도 사용이 가능합니다.

비밀번호를 잊게 되면 다시는 재설정할 수 없습니다. 비밀번호는 꼭 잘 기억해주세요.^^


1. 사진 모노 기본값 - 처음 글쓰기를 켤 때 사진이 흑백이 처리될지 선택여부입니다. 기본값은 모노리얼 이름대로 켜져있습니다.

끌 경우 처음 글쓰기에 나오는 사진이 원본색상으로 표시됩니다.


2. 테마 - 글쓰기에 기본 표시되는 사진은 수만장의 사진 중 랜덤하게 표시됩니다. 특정 테마를 원하신다면 선택하면 해당 테마에 걸맞는 사진 위주로 표시됩니다.


3. 알림 - 하루 한 번 글쓰기를 도와주도록 알림을 설정할 경우 해당 시간이 되면 알림이 울립니다. 저는 매일밤 10시 반이면 모노리얼이 울립니다.


4. 백업 - 요즘은 기기를 변경하더라도 아이폰전체백업을 했다가 그대로 복원하면 되므로, 기기를 변경한다해도 딱히 데이터가 날아가는 일은 없는데요.

혹시라도 모를 백업 기능합니다. 간혹 비밀번호를 잊으셨다면, 백업 후에 일기장 어플을 지우셨다가 다시 설치하고 복원하셔야 합니다.



여기까지 일기장 어플 모노리얼 다이어리 사용법을 소개해드렸습니다.

모노리얼은 애초에 글쓰기를 좋아하는 제작자 본인을 위해 제작하였습니다. 보다 글 자체에 집중하고, 글의 느낌을 더 잘 전달하기 위헤 노력하였습니다.

글쓰기 자체에 집중하기 위해 과도한 화려함은 오히려 피했습니다. 화려한 글자색, 배경색은 제외했습니다. 이러한 컨셉이 글자 색상이 흰색과 검은색의 중간 단계에서만 선택하게 된 이유이기도 합니다. 여러분들도 보여지는 화려함보다 글쓰기 그 자체에 집중해보시기 바랍니다.

최근에는 사용자분들이 다양한 요청사항을 주셔서 이런저런 사항들에 대한 업데이트를 고려 중입니다.

리뷰를 남겨주신다면, 저희에겐 커다란 힘이 됩니다.^^

일기장 어플 추천하실 때는 모노리얼 다이어리를 기억해주세요.^^

아래 주소로 메일을 주시면 언제라도 적극 검토하여 최대한 개선하도록 노력하겠습니다.^^


앞으로도 계속적으로 개선해서 다양한 분들의 '하루 한 편, 나만을 위한 글쓰기' 를 돕도록 하겠습니다.

감사합니다.^^


모노리얼 다이어리 Monorial Diary

앱스토어 : https://goo.gl/Ti93mz


홈페이지 : http://eedler.com/

이메일 : monorial@eedler.com

페이스북 : https://www.facebook.com/eedler.co

모노리얼 다이어리 앱을 소개합니다 ^^
앱스토어 : http://goo.gl/Ti93mz
모노리얼 다이어리는 자신을 위해 쓰는 하루 한 편의 글이라는 주제로 세상에 나오게 되었습니다.
앱소개

하루 한 편 나를 위한 글을 쓰세요.

누군가에게 보이기 위한 글이 아닌 자신만을 위한 글.


카페에서 우두커니 누군가를 기다릴 때.

지하철에서 사람들의 모습을 바라보면서.

길에서 우연히 하늘을 올려다봤을 때.

잘 쓸 필요도 없고, 거창할 필요도 없습니다.

나만을 위한 것이니까요.


따뜻한 위로의 글도 좋습니다.

칭찬 섞인 격려의 글도 좋습니다.


우리는 조금 더 자신을 위할 필요가 있습니다.

우린 지금까지도 잘해왔으니까요.



우린 너무 바쁘게 지내고 있습니다.

하루에 한 번쯤은 자신을 위한 위로의 글 하나쯤은 괜찮잖아요.^^


모노리얼은 하나의 사진 위에 간단한 글을 쓸 수 있습니다.

마치 한 장의 사진처럼. 하나의 카드뉴스처럼 글을 볼 수 있습니다.

좌, 우로 쓸어넘기시면 앞 뒤의 글 내용을 볼 수 있습니다.


무슨 생각을 하고 계신가요? 글을 작성해 주세요.


새로운 사진을 부를 수도 있고, 포토라이브러리에서 선택할 수도 있습니다.

사진을 없애고 노트처럼 쓸 수도 있습니다.

사진의 위치와 글의 위치는 드래그해서 위아래를 조정할 수 있습니다.

글쓰기 칸의 사각형들을 위아래로, 화살표를 위아래로 조정하면 위치와 크기를 조정할 수 있습니다.


글씨의 크기, 정렬도 조정하구요.


사진의 흑백처리 여부도 선택할 수 있습니다.

글자의 색, 배경, 뒤쪽의 흐릿한 사진의 투명도까지 조정이 가능합니다.


새로고침 버튼은 최초의 레이아웃으로 조정해줍니다.


설정에서는 기본사진의 흑백처리 여부를 선택할 수 있습니다.

나오는 랜덤이미지의 테마도 고를 수 있습니다.

쓴 글은 iCloud에 백업이 가능합니다.


쓴 글은 목록으로 날짜와 함께 보여지는 단순한 구조를 갖고 있습니다.


위쪽의 연도와 월을 클릭해 보세요. 그 해 그 달에 쓴 글을 볼 수 있습니다.

Any를 선택하시며 모든 기간을 볼 수 있습니다.

연도를 Any 월도 Any 를 선택한다면? 당연히 모든 글을 볼 수 있습니다.^^


작성된 글은 이미지로 다운로드가 가능하며, 공유버튼을 이용해 손쉽게 공유가 가능합니다.

공유버튼을 이용해 페이스북, 또는 트위터에 공유하실 경우 일정기간 광고가 사라지는 기능도 넣었습니다.

광고 제거 결제를 하지 않으셔도 광고 없이 사용이 가능합니다.^^



모노리얼은 흐릿한 기억이라는 매개를 흑백으로 표현하고자 했습니다.

모노리얼을 이용해서 하루 한 편 자신을 위한 글을 써보세요.


칭찬의 글이든, 격려의 글이든.

자신에게 이야기 해보세요.


따뜻한 세상이란건 없을지도 모릅니다.

늘 세상은 그대로 입니다.

이제 우리는 세상을 어떻게 바라볼지 선택해야 합니다.

그 시작은 스스로에게 던지는 아주 작은 위로부터 일겁니다.


모노리얼 : http://goo.gl/Ti93mz



JustOneLine 한 줄 메모장 소개


JustOneLIne 한 줄 메모장을 소개합니다.

한 줄만 메모할 수 있는 메모입니다.

앱스토어주소 : https://goo.gl/q5wpte




실행하면 그동안 썼던 메모들이 보입니다.


글쓰기 버튼을 클릭하면 글을 쓸 수 있는데. 글은 200자, 추가 문구는 100자까지 입력가능합니다.

한 줄만 입력할 수 있어서. 개행을 입력할 수 없습니다.


작성완료시 랜덤의 사진과 랜덤의 글자크기 랜덤의 글자 위치로 글이 보여집니다.


화면 간단 클릭시 나오는 메뉴에서 SNS에 공유하거나 갤러리에 다운로드, 수정, 삭제가 가능합니다.


목록에서 제가 작성한 글이 보입니다.


작성된 글들은 카드뉴스를 보듯이 옆으로 쓸어서 보시면 됩니다.


메뉴에서 다양한 설정도 가능합니다. 환경설정(Config) 메뉴에서 카드가 보여지는 랜덤형식의 범위를 지정할 수 있습니다.


정렬. 날짜형식. 글자크기의 범위. 정렬 범위 등이 가능합니다.


글자의 정렬이 오른쪽만 정렬하도록 설정해보았습니다.


화면에서 쓸어내려주면 그 때마다 랜덤한 형태로 글이 바뀌어져서 보여집니다.


설정에서 오른쪽 정렬만 지정했기 때문에 글은 계속 오른쪽에 배치됩니다.






앱스토어주소 : https://goo.gl/q5wpte

감사합니다.


JustOneLine 개발관련 개요


안녕하세요. 혼자면서 자신을 팀이라고 부르는 아이폰 앱을 만드는 팀 eedler입니다.

작업 중인 아이폰용 앱이 출시되었습니다.

iOS 앱을 제작하는 과정에서 알게 된 여러가지를 남겨볼까 합니다.

공유의 목적이라기 보다는 작업을 하면서 알게된 여러가지 사항을 머리 속에서 한 번 정리하고

추후에 유지보수 등의 작업을 할 때 참고하기 위함입니다.

개발자 관련 일을 하신다면 대부분 아는 내용일텐데요. 하지만 처음 iOS로 앱을 개발하기 위해 공부 또는 준비하는 분이시라면 아래 내용을 한 번 참고하시기 바랍니다. 다른 분들은 제가 겪었던 시행착오들을 조금이라도 덜 겪게 되길 바랍니다.



앱소개

이름 : JustOneLine

앱스토어 : https://goo.gl/q5wpte

개요 : 생각을 한 줄로 작성하는 앱.





순간순간의 생각을 간단하게 메모하기 위한 앱입니다.

단순하게 작성하는걸 좋아하는 제작자의 성격대로 극단적으로 한 줄만 쓸 수 있는 앱을 만들었습니다.

글을 작성시 랜덤한 형식으로 저장된 사진과 함께 간단한 카드 형태로 표시되며, 이를 페이스북이나 트위터에 쉽게 공유 할 수 있습니다.

또는 사진첩에 저장해서 배경화면 등으로 사용가능 합니다.



앱출시배경

처음엔 단순한 의도였습니다.

일주일에 두 개 정도 영어와 한글이 함께 보이는 페이스북페이지 운영이 목적이었습니다.

주소 : https://www.facebook.com/Justoneline-555549504615174

그런데 명언만 올리자니 심심해서 이미지를 삽입하려 했는데 이미지를 구하는 것도 힘들었고, 이미지편집 프로그램으로 사진에 글씨를 넣는 것도 상당히 불편했습니다. 그래서 화려하진 않지만, 글을 쓰면 간단하게 표준적인 형태를 제공해주는 앱이 필요했습니다.

기존 사진 수정 앱들이 사진에 글씨를 넣게 해주지만 기록의 의미가 약했습니다. 

사진에 글을 쓰는 개념이 아닌 글을 쓰면 이를 사진 위에 보여주는 개념입니다.

랜덤한걸 좋아하는 제작자의 성격대로 자신의 사진을 배경으로 쓰거나 직접 글자의 정렬 등을 설정해서 저장하는 개념은 처음부터 제외했습니다.

환경설정에서 랜덤의 범위를 설정할 수 있으나, 기본적으로 모든 것은 랜덤하게 표시됩니다.



작업도구 및 환경, 서비스

내용들은 아래 항목입니다.

하나씩 다시 소개하겠습니다.


0. 컴퓨터 -> MacBookAir

1. 할일관리 -> https://trello.com

2. 소스관리 -> https://bitbucket.org/https://www.sourcetreeapp.com/

3. 사진이미지 -> https://unsplash.com/, https://pixabay.com/https://tinypng.com/

4. 개발환경 -> Xcode7, Swift2, iOS 9.0, SQLite

5. 앱 소개글 작성 -> https://www.flitto.com/https://launchkit.io/




0. MacBook Air

2011년도에 대세에 휩쓸려서 구매한 맥북입니다. -_-;

11인치 모니터, i5 1.6 GHz, RAM 4GB, SSD 126G 의 사양입니다.

다른건 없습니다. 외부모니터도, 매직마우스도 없습니다.

느립니다. 화면은 작습니다. 특히 Storyboard를 편집할 때는 스크롤의 압박을 받게 됩니다.

마우스를 구매하고 싶었으나 돈이 없어서 터치패드로 끝까지. ㅋㅋ

코드 작성이라던지 레이아웃 편집을 할 때 살짝 끊기는 현상만 있을 뿐 의외로 개발이 불편하진 않았습니다.

시뮬레이터를 돌릴 때도 약간 기다려주면 문제 없이 잘 돌아갔습니다. 이 부분에는 애플에게 감사해야겠습니다.

사실 5년 전 프로그램으로 이런 비주얼감 넘치는 IDE는 좀 무리일까 생각했었는데. 생각보다 무리 없이 돌아가서 행복했습니다.

어여 돈 많이 벌어서 장비를 업하고 싶네여. ㅋㅋ




1. 할일관리 https://trello.com

우선은 할 일을 적어놓는 칠판이 필요했습니다.

저희가 사용했던 서비스는 trello.com 입니다.


웹사이트와 앱을 이용해 팀간에 공유해야 할 내용을 포스트잇 형태로 정리할 때 유용합니다.

각각의 리스트에서 다른 리스트로 드래그앤드롭으로 옮기면서 작업이 가능하며, 팀원간에 실시간으로 반영됩니다.

기본적인 기능만을 사용한다면 무료로 사용가능합니다.


아래는 JustOneLine을 만들 때 사용했던 보드입니다.

저 같은 경우 1. 할일, 2. 하고있는일, 3. 완료된일, 4. 배운점. 네 개의 리스트를 만들고

할일에 목록을 작성 후 작업 하기 전에 하고있는일로 이동시키고 작업합니다.

작업이 완료되면 완료된 일로 옮기며 작업했습니다. 추후까지 기억해야 할 내용이나 재미있었던 내용은 배운점 리스트로 이동해서 잊지 않도록 수시로 확인했습니다.

처음엔 할일에만 목록이 너무 길어서 가슴이 갑갑하지만 시간이 지날 수록 하나씩 빼내서 작업하는 맛이 있습니다.

태스크관리나 이슈관리툴로는 다양한 서비스들이 있지만 저희 같은 극소수의 인원들이 작업하는 경우 https://trello.com 가 맞다고 생각하여 적용하였습니다.

기존 회사에 다닐 때는 Redmine(https://redmine.org/) 을 회사 서버에 설치하여 사용하였으나, 소수인원의 팀이 사용하기에는 오히려 초기세팅부터 부담되어 제외되었습니다.

그 외에 할일관리툴이라면 Wunderlist(https://www.wunderlist.com/) 서비스가 좋습니다.

trello.com와 wuderlist는 성격이 약간 다르지만 프로젝트를 진행함에 있어서 소수인원이 할일관리를 하기에는 더없이 좋습니다.

체크리스트, 댓글, 파일첨부, 기한관리, 멤버도 관리 가능합니다.

기기간의 데이터연동이 자유로워 스마트폰앱과 노트북을 이용한 웹. 이곳저곳에서 작업하는 경우 매우 유용합니다.

다들 좋은 서비스들입니다. 무엇보다 무료이니까요.




2. 소스관리 https://bitbucket.org/https://www.sourcetreeapp.com/

소스버젼관리로는 Git을 사용하고 있습니다.

Git은 분산버젼관리시스템으로 최근에 많은 곳에서 사용되고 있습니다.

소스코드를 어떤 특정시점으로 되돌리는 것도 가능하고, 기기간의 소스코드 공유, Branch를 만들어서 테스트나 새로운 기능의 시도 후 머징하는 것까지

Git을 사용해야 하는 이유는 넘치고 있습니다. 개인이 혼자 개발하는 경우 귀찮아서 버젼관리를 사용하지 않는 개발자분들을 몇 분 뵌적이 있는데, 저는 사용하실 것을 적극 추천드립니다. 최근엔 툴도 좋아져서 그리 귀찮지 않게 사용 가능합니다.

Git을 호스팅으로 제공하는 서비스들이 있습니다. 대표적인 곳이 https://github.com/ 이며 이미 많은 개발자분들이 사용 중입니다.

제가 선택한 서비스는 https://bitbucket.org/ 입니다.

팀원이 5인 이하라면 private 공간을 무료로 사용할 수 있습니다.

소스트리(https://www.sourcetreeapp.com/)는 bitbucket과 함께 Atlassian이 제공하는 프로그램입니다. 

명령어로 작동하는 git을 툴로서 사용하기 쉽게 제공하는 프로그램입니다.

SourceTree는 기존에 다니던 회사에서 동료의 추천으로 사용하게 되었습니다. Xcode를 사용하니 그 안에 있는 SourceControl을 사용하면 되는데 Xcode를 처음 사용하는 저는 약간 어색했고, 예전 웹 관련 작업을 할 때부터 사용해오던 소스트리가 그냥 익숙해서 좋았습니다. 그냥 쓰던거 쓰는걸 좋아하는 제 성격상 별 고민없이 그냥 소스트리를 선택했습니다. 프로그램상에서 커밋, 푸시, 등등의 기능을 손쉽게 버튼 하나만으로 사용 가능합니다. 최근 나온 다양한 IDE 또는 에디터들은 Git을 포함하고 있는 경우가 많이 있습니다. 아니면 플러그인 형태로 제공을 하던지. 처음 배우시는 분들이라면 Git이든 SVN이든 어찌됐건 다른 사람과의 협업을 위한 관리시스템은 꼭 다뤄보시기 바랍니다.




3. 사진 이미지 https://unsplash.com/https://pixabay.com/

앱에 사용할 이미지를 구입해야 하는 상황이 왔습니다.

그래서 저렴한 금액의 이미지소스 사이트를 여기저기 찾아보던 중 https://www.graphicstock.com/ 을 찾게 되었습니다.

그러나 제가 이미지를 결제해서 사용하더라도 저희 앱을 사용하는 사용자들이 앱화면을 캡춰해서 공유할 경우 저작권이 애매해지는 경우가 발생하였습니다. 저는 정당히 지불하였으나, 앱의 사용자들이 해당 이미지를 구매한 것이 아니므로, 함부로 공유하면 안되는 결론이 되서,

결국은 CCO 이미지를 사용하기로 하였습니다. 너무 많이 사용해야 해서 양심이 좀 찔렸지만, 저희는 가난한 개발팀이라 -_-;;

상업적으로 무료로 사용할 수 있는 이미지를 구하는 사이트는 다양하지만 저희가 선택한 사이트는 https://unsplash.com/https://pixabay.com/  두 군데입니다. 무료이미지 관련 내용은 http://blog.eedler.com/9 에서 다시 정리하였습니다.

이미지를 웹상의 서버에서 제공할지 아니면 이미지사이트의 API를 이용할지, 앱 리소스에 포함시킬지 고민했습니다만,

제가 남미여행 중에 생각한 아이디어라서 인터넷이 되지 않는 환경을 고려해야겠다고 생각했습니다. 그에 따라 용량을 차지하지만 앱의 리소스에 포함시키기로 하였습니다. 앱을 개발할 때 사용하는 이미지는 대부분 PNG, JPG가 대부분일 것입니다. 하지만 그 파일들은 높은 퀄리티가 보장될 수록 용량을 많이 필요로 합니다. 저는 이미지를 100장 정도 사용할 예정이었는데 만약 이미지당 500kb라고 하면 용량이 너무 커지고. 사진이미지에 수십메가의 용량을 사용하긴 싫었습니다.

그래서 이용한 곳이. https://tinypng.com/ 입니다.

png나 jpg 파일을 올릴 경우 사람 눈으로 봐서는 구분 못하는 정도로 이미지가 압축되며, 사이즈가 줄어듭니다. 많게는 70% 이상.

물론 하나씩 이미지관련 프로그램으로 조정 후 리사이징이 가능합니다. 다른 분들은 가능하시겠지만 저희는 그런 것조차 쉽지 않은 디자이너의 유전자가 조금도 섞이지 않은 순수 무감각, 무센스를 자랑하는 개발그룹이므로. -_-

사용 방법은 간단합니다. 사이트가 접속 후 Drop 공간에 파일만 Drop 해주면 바로 처리되고 다운로드 할 수 있습니다.




4. 개발환경 Xcode7, Swift2, iOS 9.0, SQLite

iOS 앱을 개발할 것이기 때문에 Xcode의 사용은 당연했습니다. 버젼 7.x 입니다.

언어의 선택은 Swift와 Objective-C 에서 선택해야 했는데. 어차피 둘 다 할 줄 몰랐고, 새로 배워야 하는 입장에서는 애플에서 밀고 있는 Swift를 익히고 적용하는 것이 앞으로를 위해서도 더 낫겠다고 판단하였습니다.

데이터를 저장할 공간에 대해서 고민을 하게 되었습니다. 첫번째 앱 CCWidget(http://goo.gl/YUbPqd/) 의 경우 저장해야 할 데이터가 환경설정된 값 정도로 적었기 때문에 학습의 목적으로 PropertyList에 저장하기로 했고, Widget과의 연동은 AppGroup에서 하니 데이터의 저장공간이 특별히 상관 없었습니다. 그런데 JustOneLine 앱의 경우 글이 계속적으로 쌓이는 형태의 앱이다보니 DB적인 형태가 필요했습니다.

iOS에서의 DB는 CoreData 를 이용해서 처리한다는 것을 찾게 되고 데이터의 CRUD를 구현하였으나, 세세한 접근이나 세팅이 오히려 저에겐 부담이었습니다. 웹작업을 할 때 주로 SQL Query를 직접 작성했던 저로서는 Query를 직접 작성하는게 오히려 편했고, DB파일을 iCloud에 단순 저장할 수 있는 형태가 좋았습니다. 따라서 SQlite 파일을 직접 생성하고 쿼리로 제어할 수 있는 FMDB(https://github.com/ccgus/fmdb)를 적용하게 되었습니다.

아래 항목은 제작하면서 사용했던 작업방식, 라이브러리, 패턴, iOS 클래스 또는 프로토콜 등의 목록입니다.

구글링을 해보니 대부분 영어 자료였습니다. 예상했던 것보다도 한글 자료를 찾기가 힘들어서 각 항목에 대해서는 추후 하나씩 다시 사용법을 작성하려고 합니다.

- View (기본적인 뷰, subview를 담기위한 컨테이너 역할, 키보드액세서리뷰)

- UILabel, UIButton, UITextField, UITextView, UIImage (전반적 내용표시, 입력, 수정, 삭제)

- UITableView (리스트 표시용)

- PageViewController (상세내용 카드표시용)

- NSUserDefaults (환경설정 저장용)

- PickerView (환경설정 선택창용)

- NSFileManager (파일 제어용)

- Sqlite3 (데이터저장용)

- FMDB (sqlite3 제어용)

- FontAwesome (아이콘표시용)

- Localizable.string (다국어지역화)

- Singleton Pattern, Delegate Pattern (클래스디자인)


5. 앱 소개글 작성 -> https://www.flitto.com/https://launchkit.io/, App Icon Resizer

앱스토어에 제품을 올리기 전에 해야할 일

- 아이콘 만들기

- 설명글 작성하기

- 스크린샷 준비하기 

등등이 있습니다.


아이콘 만들기

앱스토어에 제출을 위해서는 다양한 크기의 아이콘 파일이 필요한데, 단순함을 추구하는 저희의 철학대로 최대한 간단한 형태의 아이콘을 만들었습니다.

아이콘선별과정 : http://blog.eedler.com/11

불편한 사항은 앱에는 홈스크린과 검색 또는 알림센터 등에 나오는 아이콘 등 다양한 크기의 아이콘을 함께 제공해야 합니다.

그럴 때 사용한 프로그램이 App Icon Resizer 입니다. 원래는 유료프로그램으로 알고 있는데 제가 다운받을 때는 무료이벤트 중이었습니다. 앱스토어에서 보여질 메인 아이콘 1024크기의 png파일 하나만 있으면 자동으로 각 종류에 필요한 아이콘파일로 리사이징 해줍니다. 물론 크기가 변경되면서 이미지의 깨짐현상을 어느정도 감수해야 하는데, 사람 눈으로 보기에 별 차이가 없어서 무시하기로 했습니다.


설명글 작성하기

한글(무조건 좋은말), 영어... 응?-_-;

설명글을 작성해야 했습니다. 일단 앱의 버젼이 영어, 한국어 두 개의 환경에 반영되도록 만들었고, 영어는 피할 수 없다는게 사실이므로,

한글로 작성한 소개글을 영어로 번역하는 작업이 필요했습니다. 하지만 저희는 영어를 유창하게 하는 사람이 없고, 있다해도 이런저런 비교를 위해 번역을 의뢰하기로 하였습니다. 간단한 앱 소개글이라 직접 작성해도 되지만 아무래도 다른 사람들 의견이 들어간 내용을 참고해서 그대로 쓰던, 수정을 하던 하는 것이 옳다고 판단하였습니다.

이용했던 서비스는 플리토(https://www.flitto.com/)입니다.

플리토는 집단지성을 이용한 번역서비스입니다. 누구라도 번역의뢰를 할 수 있으며, 누구라도 번역가가 될 수 있습니다. 이 곳에 번역하고자 하는 텍스트를 올리면 글자수에 준해서 금액을 지불하게 됩니다. 포인트 구매 후 해당 포인트를 번역비용으로 지불하게 되는데요.

단순 앱 소개글 정도의 내용이라면 2,000원 내외로 가능하므로, 참고를 위한 단순 번역의뢰로 상당히 매력적입니다. 번역가를 지정할 수도 있고, 번역비용의 견적을 문의할 수도 있는 다양한 기능이 있습니다. 번역해준 포인트를 모아서 다른 물품을 구매할 수도 있습니다. 외국어를 공부하시거나 어느 정도 외국어에 능력이 되시는 분이라면 지하철에서 오고가며, 번역요청된 글을 번역하셔도 소일거리(?)로서 상당히 좋습니다.


스크린샷 준비하기

최근 앱의 스크린샷은 디바이스나 시뮬레이터에서의 단순 캡춰 말고도, 다양한 형태의 이미지를 올리는 경향입니다.

그 중 가장 많은 형태는 텍스트를 넣고, 아래 캡춰이미지가 들어가는 아래 같은 형태입니다.


게다가 앱스토어의 등록을 위한 스크린샷은 다양한 디바이스 크기를 만족해야 합니다. 그 디바이스들마다 해상도도 다 다릅니다.

물론 인터넷에 찾아보면 기기별 해상도를 템플릿으로 만들어놓은 포토샵용 파일들도 있으나, 저희는 포토샵을 그리 잘하는 인원이 없고,

아이폰 기기 이미지도 크기마다의 스크린샷을 만드는게 여간 힘든 일이 아니었습니다.

그래서 저희가 선택한 서비스는 https://launchkit.io/ 이었습니다.


해당 사이트에 가면 스크린샷빌더라는 서비스를 제공하는데 기기별 해상도와 기본적 프레임을 제공해주며, 캡춰한 이미지를 선택해주기만 하면 기기별로 다운로드가 가능합니다. 


그런데! 두둥! 유료-_-; 1년 99달러였습니다. 가난한 팀에게 적은 돈은 아니지만 앱을 하나만 만드는게 아니고 유지보수도 생각하니 버젼별로 관리도 쉬워서 이용하게 되었습니다. 전체적으로 서비스는 만족스럽습니다.




이상 기본적인 개요에 대한 설명이었습니다. 각 틀에 대한 간단한 소개만 했습니다.

생각보다 글이 길어져서 사용했던 기능들에 대한 보다 자세한 소개는 각각의 포스트를 다시 작성하도록 하겠습니다.

이 글 또는 JustOneLine 앱 관련해서 궁금하신 사항이 있으시면 언제라도 justoneline@eedler.com 으로 문의 주시기 바랍니다.

JustOneLine 많은 이용바랍니다. eedler였습니다. 감사합니다.^^

JustOneLIne 앱스토어 링크

  1. 해랑 2016.06.21 15:32 신고

    완전 멋있으십니다. ㅎㅎ 혼자개발은 아니지만 따로 혼자 프로젝트 해보려고 할 때마다 게으름에 부딪혀서 실패했었는데.
    여러가지로 자극도 받고 좋은 정보들 얻어서 갑니당~~!!1

    • yongho.yu 2016.06.21 15:57 신고

      예상보다 글이 너무 길어져서 작성하는 저도 좀 당황했는데요... 좋게 봐주셔서 감사합니다.^^

  2. Kyeongan 2016.06.22 06:28 신고

    생활코딩보고 왔는데, 글 너무 잘 읽었습니다. 우연히 테마도 저와 같아서 놀랐구요. :)

    • yongho.yu 2016.06.22 15:06 신고

      테마. 이게 제일 이뻐서.^^;; 도움이 되셨다면 좋겠네요. 감사합니다.^^

  3. kon 2016.06.22 08:45 신고

    정말 좋은내용이네요. 즐독 했습니다. 좋은 포스팅 감사합니다!

+ Recent posts