파헤치기 #2. iOS App Programming Guide (2) App Design Basics

# 오늘의 주제

1. App Design Basics

파헤치기 두 번째 입니다~^^

처음 문서 파헤치기는 어땠나요?
좀 허접..아니 많이 허접하고... 이거 왜 쓰나 싶기도 하죠?

네... 뭐 ... 일단 해보고 보는겁니다 ㅎㅎ

일단 칼을 들었으면 무라도 베어봐야죠?

참...!! 

공개 수배 합니다!

함께 이 일을 해나가실 분이 있으면 좋겠습니다!!

100% 완벽 번역과 해석을 요하는 것이 아닙니다.

중요 포인트를 짚어서 반(?)번역 이라도 함께 해 주실 분을 찾습니다!

아무래도 생각보다 시간이 많이 걸리네요...

물론 원문 그대로 보는 것이 훨씬 좋겠지만, 그래도 우리나라 글로 풀어 쓴다면 조금이나마 장벽을 낮출 수 있지 않을까 싶습니다.

저를 도와주실 의향이 있으시다면 주저마시고 이메일 yagomsoft@gmail.com 또는 덧글로 말씀해 주시면 고맙겠습니다.

아니면 혼자 꿋꿋히 해보는 수밖에요...^^

자, 그럼 이제 본론으로 들어가 볼까요????

## App Design Basics

앱 디자인 기초

만약 당신이 iOS 앱 개발이 처음이라면 어디서부터 시작해야 할지 알고 싶을 것입니다. 앱을 만들이 위한 아이디어를 생각해 냈다면 앱으로 구현하기 위한 행동계획을 세워야 겠지요. 

만약 iOS 앱 개발이 처음이라면 기본 개념에 친숙해지기 위한 시간이 필요합니다. 곧바로 코드작성을 시작하고 싶다면 몇몇 튜토리얼들이 있습니다만, 기본 패턴과 개념들을 위한 시간을 조금만 투자한다면 이것이 후에 엄청난 도움이 될 것입니다.

* 제 생각과 똑같습니다...ㅎㅎㅎ

## Doing Your Initial Design
앱을 디자인 하는 방법은 여러가지가 있습니다. 그리고 코드를 작성하는 것은 대부분 좋은 접근방법이 아닙니다. 좋은 앱의 시작은 모든 기능을 상세히 설명해 놓은 것을 확장하는 것입니다. High-level의 기능들을 작성하는 것이 아이디어를 구현하는 것에 필요합니다. 사전 조사는 유저들을 당신의 목적에 얼마나 끌어들일 수 있는지 이해할 수 있게 합니다. 그리고 당신의 앱이 어떻게 생겼을지 눈에 보이도록 종이에 스케치 하십시오.

내부 디자인의 궁극적인 목표는 당신의 앱에 대한 중요한 질문의 해답입니다. 기능들과 기초 스케치는 코드를 작성하기 시작할 때 어떤 것이 필요한지 생각할 수 있게 합니다. 

물론 가장 중요한 것은 앱 내부 디자인을 하기 전에 iOS Human Interface Guidelines 를 읽어보는 것입니다. 이 문서는 내부 디자인을 할 때 사용할 수 있는 많은 전략들이 담겨있습니다. 또한 iOS 내부에서 앱이 잘 동작할 수 있도록 만드는 팁들이 담겨있습니다. 그리고 iOS Technology Overview를 읽으면 iOS의 능력과 이 능력을 사용하여 어떻게 목표를 이룰 수 있는지에 대해 이해할 수 있을 것입니다.

* 뭐... 너무나 당연하고 좋은 이야기들이라서...^^; 실전 경험이 있는 분들은 충분히 와닿고... 때로는 뼈에 사무치는 말일지도 모르겠습니다..ㅎㅎ
오역, 의역 그리고 빼놓은 부분도 종종 있습니다^^;

## Learning the Fundamental iOS Design Patterns and Techniques

핵심적인 iOS 디자인 패턴과 테크닉 배우기

어떤 앱을 만들던지 코드를 작성하기 전에 필수로 알아야 하는 디자인 패턴과 테크닉이 있습니다. iOS에서 시스템 프레임워크는 중요한 기반을 제공하고 하드웨어에 접근할 수 있는 방법이 하나뿐인 경우도 있습니다. 다시말해서, 시스템 프레임워크는 많은 세부 디자인 패턴을 사용하며 당신은 그것과 친숙해 져야한다는 말입니다. 이 디자인 패턴을 이해하는 것은 당신의 앱을 만드는 데 있어서 첫 걸음입니다.

당신이 꼭 알아야 할 중요한 디자인 패턴입니다.

Model-View-Controller - 이 디자인 패턴이 앱의 모든 구조를 관리합니다.
Delegation - 이 디자인 패턴은 객체간 정보나 자료를 전송하는데 용이합니다.
Target-action - 이 디자인 패턴은 유저의 행동을 당신의 코드에 전달하는 역할을 합니다.
Block objects - 비동기와 콜백 코드를 구현하기 위해 블럭을 사용할 수 있습니다.
Sandboxing - 모든 iOS은 시스템과 다른 앱에 의해 보호받도록 sandbox에 위치해 있습니다. 샌드박스 구조는 앱의 동작에 관여한 파일의 위치에 영향을 줍니다.

메모리 관리와 정확성은 iOS 앱에서 중요합니다. 앱은 데스크탑에 비하여 사용가능한 메모리가 적기 때문입니다. 앱은 메모리 효율을 관리하기 위하여 컴파일러의 ARC를 사용합니다. 비록 ARC가 필수는 아니지만 우리는 적극 추천하는 바입니다. ARC를 사용하지 않는다면 당신이 직접 메모리 관리를 해주어야 합니다.

* 사견이 필요없네요...;

## Translating Your Initial Design into an Action Plan

당신 안의 디자인을 행동으로 옮기기
iOS앱은 Model-View-Controller 디자인 패턴을 사용하는 것을 가정합니다. 

* 데이터 모델에 기본 접근을 선택합니다.
  @ 이미 존재하는 데이터 모델 코드 - 만약 C언어를 기반으로 한 데이터 모델 코드를 가지고 있다면 iOS앱에 직접 적용할 수 있습니다.
  @ 커스텀 객체 데이터 모델 - 커스텀 객체는 간단한 데이터의 집합입니다.
  @ 구조적 데이터 모델 - 만약 데이터가 데이터베이스를 쓸 정도로 구조적이라면 코어 데이터 또는 SQLite를 사용하면 됩니다. SQLite는 iCloud에 적용될 수 없지만 코어 데이터는 가능합니다.

* 도큐먼트를 지원할 것인지 결정하기
   도큐먼트는 유저에게 필요한 파일을 저장하는 공간으로 쓰입니다. 이 파일은 유저에 의하여 관리될 수도, 아닐 수도 있습니다. 도큐먼트를 사용하는 가장 큰 장점은 UIDocument 클래스가 iCloud와 상호작용할 수 있도록 하고 로컬 파일 시스템이 더욱 심플해 지는 것입니다. 코어데이터를 사용하여 컨텐츠를 저장하는 것과 유사한 UIManagedDocument라는 클래스가 제공됩니다.

* 유저 인터페이스에 접근하는 방법 고르기
   @ 빌딩 블럭 접근 - 유저 인터페이스를 만드는 가장 쉬운 방법은 주어진 view 객체를 이용하는 방법입니다. view는 테이블, 버튼, 텍스트 필드 등과 같은 눈에 보이는 요소들을 나타냅니다. 뷰를 있는 그대로 사용할 수 있지만, 당신이 원하는 대로 하려면 커스터마이즈를 할 수도 있습니다. 뷰를 사용하는 장점은 더 적은 코드로 복잡한 인터페이스를 빠르게 작성할 수 있고 유저에게 익숙한 인터페이스를 제공한다는 것입니다.
   @ OpenGL ES기반 접근 - 세련된 렌더링이 필요하거나 잦은 화면 업데이트가 필요하다면 컨텐츠들을 OpenGL ES를 사용하여 표현하는 것이 필요할 것입니다. 최고의 퍼포먼스를 필요로 하거나, 세련된 그래픽 또는 게임에 주로 사용됩니다.

* 사실 제가 써놓고도... 이게 무슨말인지;;; 영어를 우리말로 바꿔놓으니 영 어색하고 잘 맞지를 않네요 ㅠㅠ

## Starting the App Creation Process

앱 제작 시작하기

행동 계획을 세웠따면 코딩을 시작할 때입니다. iOS 앱 제작이 처음이라면 Xcode 내장 템플릿을 살펴보는 시간을 갖는 것이 좋습니다. 이 템플릿들은 몇 분 안에 앱을 만들어 실행 할 수 있을 정도로 간략화 되어있습니다. 마지막으로, Xcode 프로젝트를 만들 때, 당신은 다음 질문들의 대답을 마음속에 가지고 있어야 합니다.

* 기본 인터페이스 스타일은 무엇인가?
 - 다른 타입의 앱은 다른 타입의 뷰와 뷰 컨트롤러들이 필요합니다. 언제라도 인터페이스를 변경 할 수 있지만, 먼저 정하는 것이 프로젝트를 시작하기 쉽습니다.

* iPhone 또는 iPad만을 위한 앱을 만들 것인가, 아니면 둘 다를 위한 앱을 만들 것인가?
 - Universal 앱을 만드는 것은 동적으로 iPhone과 iPad를 위한 뷰와 뷰 컨트롤러들을 선택하도록 지정해 주어야 합니다. 더 많은 기기를 지원할 수 있기 때문에 Universal 앱을 만드는 것이 더 선호되지만, 각각의 플랫폼에 맞도록 코드가 가공되어야 합니다. Universal 앱이 코드작성에 미치는 영향을 알고싶다면 Creating a Universal App을 보십시오.

* 스토리보드를 사용할 것인가?
 - 스토리보드는 뷰와 그 동작을 한 번에 볼 수 있기 때문에 디자인 프로세스를 간략화 해줄 수 있습니다. 스토리보드는 iOS 5 이상에서 지원합니다. 그 미만의 버전에서 동작하게 하려면 nib 파일을 사용해야 합니다.

* 데이터 모델을 위해 코어데이터를 사용 할 것인가?
 - 코어데이터를 사용하여 얻을 수 있는 이점을 알고싶다면 Core Data Programming Guide를 참고하세요.

이 질문들을 통하여 코딩 시작을 위하여 Xcode를 사용합니다.

1. Xcode가 설치되어 있지 않다면 설치하고, iOS development team을 구성하세요. Xcode 개발환경 세팅에 대하여 자세히 알고 싶다면 Developing for the App Store를 참고하세요.

2. 첫 Xcode 프로젝트를 생성합니다.

3. 코드를 작성하기 전에 새로운 프로젝트에서 빌드와 실행을 합니다. iOS 시뮬레이터를 타켓으로 한다면 실행되는 것을 볼 수 있을 것입니다.

4. 앱 코드를 작성합니다.

5. 앱 상태변화를 지원하기 위한 기능을 추가합니다.

6. 필요한 리소스를 제작합니다.

7. 필요하다면 앱과 관련된 적절한 동작을 구현합니다.

8. 앱이 특별해지기 위한 발전된 기능을 추가합니다.

9. 기본적인 퍼포먼스 튜닝을 합니다.

10. 이것을 반복합니다.

아... 정말 이 짧은거 하는데도 시간 정말 오래 걸리네요 ㅠㅠ

그냥 포스팅 몇개는 하겠네요...;;;;;;;;;

으악... 힘들어요~

이거 계속 할 수 있을런지 모르겠네요... 여러분의 도움이 절실히 필요합니다..
 
오역 번역 발번역 항상 넘칩니다... 이점 참고하시구요, 부족한 부분이 있다면 덧글 주시면 보충해 드릴게요^^;

그럼 전 이만!

by yagom

facebook : https://facebook.com/yagompage
twitter : http://twitter.yagom.net ( @yagomsoft )

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   

 


댓글 남기기

Close