iCloud 프로그래밍 디자인 가이드: 인트로덕션 (iOS & Mac 프로그래밍 가이드)

0

 

들어가며…

애플 플랫폼 개발에 있어서 공식 가이드는 iOS, OS X 프로그래밍의 특정 토픽을 시작하기에 앞서 읽어보면 많은 도움이 됩니다. 하지만 모두 영어로 되어있죠. 제가 영어를 읽을 줄 알긴 하지만 네이티브 수준으로 하는 것도 아니고 아무래도 전문기술 분야이다보니 저 역시도 영어로 기술문서를 읽는 다는 게 굉장히 피곤합니다. 단지 읽는 것만으로도 말이죠. 차후엔 잊게되어서 아리송할 때가 많고 다시 찾기 힘들어 몇 몇은 필요한것만 번역해두곤 했습니다.

이제 제 블로그를 마련한 시점에서 이와같은 번역하게되는 문서를 함께 공유하고자 합니다. 단지 읽는것과 번역하는 것은 매우 큰차이가 있습니다. 저는 되도록이면 읽는 문체가 편안하게 느껴지도록 하는데 중점을 두는데 제가 모르는 플랫폼의 기술용어는 번역이 잘 못 되었거나 일반적으로 안쓰는 용어로 번역할 수도 있다는 점 상기해주기 바랍니다. 잘못된점이 발견되면 언제든 알려주시기 바랍니다. 아울러 가이드문서를 읽는데 있어서 iOS, macOS 플랫폼과 프로그래밍에 대한 배경지식을 필요로 할 것입니다.

 

이 글은 Apple의 공식문서인 아이클라우드  디자인 가이드 중  첫 소개부분을 개인적으로 번역한 것입니다. 아이클라우드 프로그래밍 디자인 가이드 번역 시리즈 연재작으로 해당 공식문서 전체를 챕터별로 나누어 번역할 것입니다.

 

공식 도큐멘트 원본:  iCloud Design Guide 애플 프로그래밍 가이드

공식 도큐멘트 리비전 히스토리

  • 2015-12-17 Applied minor edits throughout.
  • 2014-09-17 Added information about CloudKit.

 

iCloud Design Guide 인트로덕션 : iCloud를 앱에 통합하는 방법

iCloud는 무료서비스로서 사용자가 자신의 개인적인 콘텐트를 자신의 모든 디바이스에서 무선으로, 그리고 자동으로 애플 ID를 통해 접근할 수 있게 해준다. 아이클라우드는 이것을 네트워크 기반의 저장공간을 OS와 완전히 융화된 전용 API와 결합해서 해낸다. 애플은 서버 시설과 백업, 사용자 계정을 제공해서 개발자인 당신이 iCloud가 활성화된 훌륭한 앱을 만드는데 집중할 수 있게 해준다.

 

세 가지의 iCloud 스토리지 서비스가 있는데 key-value storage, document storage, 그리고 CloudKit 이 그것이다. key-value 와 document 스토리지 뒤의 핵심 아이디어는 기기 간의 명시적인 동기화를 제거하는 것이다. 사용자는 동기화에대해 생각해야할 필요없고 당신의 앱은 결코 iCloud 서버와 직접적으로 소통하지 않는다. 이 문서에 설명된 것처럼 이런 API를 당신이 채택할 때, 아이클라우드 계정에 연결된 모든 기긱를에 변경사항이 자동으로 나타난다. 당신의 사용자는 어디에서나 자신들의 개인적인 콘텐트에 안전하고 일관성있고 투명한 접근을 갖게된다.

 

CloudKit은 당신이 앱과 사용자의 데이터를 레코드(records)로서 당신 앱의 사용자들끼리 공유하는 공개(public) 데이터베이스 안에, 또는 현재 사용자에 의해서만 접근가능한 비공개(private) 데이터베이스안에 저장하게 해준다. 하지만, 레코드를 언제 페치(fetch)하고 저장할지 결정하는 것은 당신이 책임진다.이 데이터는 공유되기 때문에 당신의 앱은 로컬 레코드의 동기화를 유지할 필요가 있다. 네이트브 앱에 대해, CloudKit은 CloudKit 프레임워크를 제공하고, 웹앱(web apps)의 경우 CloudKit JS 라이브러와 이런 데이터베이스에 접근하기위한 웹서비스를 제공한다. 

 

당신의 앱타입을 위한 아이클라우드 서비스의 가용성을 확인해보려면  App Distribution GuideSupported Capabilities 를 확인할 것.

 

훑어보기

iCloud는 콘텐트에 대한 것이라서, 이것을 지원하기 위한 당신의 수고는 앱의 모델 레이어(MVC패턴의 M)에 집중된다. 사용자의 다른 기기에 돌고있는 당신 앱의 인스턴스는 로컬앱 인스턴스의 데이터 모델을 변경할 수 있기 때문에 당신은 그런 변경사항을 다룰 수 있도록 앱을 디자인한다. iCloud기반의 파일이나 데이터를 나타내기 위해서 UI를 변경해야할 수도 있다.

한가지 중요한 예로, Cocoa는 당신을 위해 iCloud를 채택해주는데, OS X 10.8(마운틴 라이언) 이상을 위한 문서 기반(document-based) 앱의 경우 NSDocument 클래스의 능력 덕에 iCloud 채택에 있어서 매우 약간의 작업만 요구될 뿐이다. 

아이클라우드 스토리지를 사용할 수 있는 여러가지 방법과 그것에 접근하기위한 다양한 기술을 이용가능하다. 이 문서는 모든 iCloud storage API를 소개하고 iCloud의 상황속에 어떻게 당신앱을 디자인할지 가이드를 제공한다.

 

iCloud는 사용자 작업흐름(User Workflow)을 지원한다.

Cloud key-value 와 document  스토리지를 당신앱에 채택하면 당신의 사용자는 작업을 이쪽 기기에서 시작해서 다른쪽에서 끝낼 수 있게 해준다.

당신이 팟캐스트 앱을 제공한다고 해보자. 한 출퇴근 사용자가 직장으로 가는 길에 자신의 아이폰에서 팟캐스트를 구독하고 첫 20분을 듣는다. 사무실에서 그는 아이패드에서 당신앱을 실행시킨다. 듣던 팟캐스트 에피소드가 자동으로 다운로드되고 재생포인트가 그가 듣던 시점으로 당겨진다.

그림그리기 앱의 경우, 한 건축자가 클라이언트를 만나는 동안 그녀의 아이패드에서 몇몇 스케치를 그린다. 자신의 스튜디오로 돌아와 그녀는 iMac에서 당신의 앱을 실행시킨다. 앞서 그렸던 모든 새로운 스케치는 이미 Mac에 있게되고 열어서 작업을 계속할 수 있다.

위의 팟캐스트앱에 대한 상태정보를 iCloud에 저장하기위해 당신은 iCloud key-value 스토리지를 이용할 것이다. 그림앱에서 스케치를 아이클라우드에 저장하려면 당신은 iCloud document를 사용할 것이다.

관련챕터: iCloud Fundamentals (Key-Value and Document Storage)

 

여러종류의 iCloud 스토리지

선택할 수 있는 4가지의 iCloud storage APIs가 있다. 당신앱에 알맞는 하나(또는 복합적)를 선택하기위해 각각의 목적과 기능을 이해하도록 하자. iCloud 스토리지 유형은 다음과 같다:

  • Key-value storage : 환경설정, 세팅, 간단한 앱 상태같은 개별적인 값을 저장하기 위함.
  • iCloud document storage: 워드프로세싱 문서, 그림 같은 사용자가 볼 수 있는 파일기반의 정보와 그리고 복합적인 앱상태를 저장하기 위함.
  • Core Data storage: shoebox 스타일 앱과 서버기반, 구조화된 콘텐트를 위한 멀티디바이스 데이터베이스 솔루션을 위한 코어 데이터 스토리지.  iCloud Core Data 스토리지는 iCloud document 스토리지에 기반해 설계되고 같은 iCloud APIs를 채용한다.  
  • CloudKit storage: iCloud에 당신 자신의 구조화된 데이터를 관리하고 당신의 사용자간에 데이터를 공유하기 위함.

 

연재작 다음편에서 계속됩니다.

댓글은 익명이나 SNS, wordpress.com 로그인 지원). 마크다운 문법 사용가능(Shift+~ 키로 특정문구 혹은 위아래 ~~~으로감싸서 여러줄을 코드블락으로 작성)