본문 바로가기

Home > 열린마당 > 공개SW 소식

공개SW 소식

“코딩을 퍼즐 게임처럼” 애플 스위프트 플레이그라운드 써보니...

OSS 게시글 작성 시각 2016-07-20 15:12:00 게시글 조회수 4447

2016년 7월 20일 (수)

ⓒ ITWorld, Susie Oschs | Macworld



코딩을 이렇게 재미있게 배울 수 있을까? 애플이 iOS 10이 설치된 아이패드용으로 새로 출시한 스위프트 플레이그라운드(Swift Playgrounds) 앱은 코딩 경험의 유무와 관계없이 중학생 정도의 청소년과 성인을 대상으로 스위프트 프로그래밍 언어를 가르치는 앱이다. 하지만 실제로 해보면 퍼즐 게임처럼 느껴진다. 새총으로 새를 쏘는 대신 명령, 함수, For 루프 등을 사용해서 퍼즐을 푼다는 점이 다를 뿐이다.

필자는 이 앱에 완전히 반했다. 올해 WWDC에서 지금까지 소개된 것 중 가장 마음에 든다. 올해 가을 정식 출시되면 iOS 10의 하이라이트 중 하나가 될 것이 분명하다.

호환되는 아이패드(4세대 이상)에 iOS 10 공개 베타를 설치하면 무료 스위프트 플레이그라운드를 지금 바로 즐길 수 있다. 베타에 참여할 경우 홈 화면에 이 앱이 자동으로 추가되지만 올 가을 iOS 10이 출시되면 앱 스토어에서 무료 다운로드 형식으로 제공된다.

강좌 찾기
앱을 실행하면 기능(Featured) 섹션에 코드 배우기 1: 스위프트의 기본(Learn to Code 1: Fundamentals of Swift), 코드 배우기 2: 고급 기술(Learn to Code 2: Beyond the Basics)이라는 강좌 팩이 표시된다. 그 아래에는 드로잉 사운드(Drawing Sounds), 블링크(Blink)로 시작되는 도전 과제가 있다. 강좌 팩과 도전 과제는 앞으로 더 추가된다. 강좌는 RSS 기반이므로 애플은 앱 자체를 업데이트하지 않고도 새 콘텐츠를 추가할 수 있다.


강좌 팩 또는 과제를 다운로드하면 아이북스(iBooks)의 선반 비슷한 내 플레이그라운드(My Playgrounds) 탭에 추가된다. 새 플레이그라운드를 만들거나 다운로드할 수도 있다. 애플 스스로도 WWDC에서 스위프트 플레이그라운드가 아이패드의 하드웨어와 소프트웨어 기능을 온전히 활용하는 모습을 보여주기 위해 스피로(Sphero)라는 플레이그라운드를 만들어 소개했다. 블루투스를 통해 연결되어 스피로 로봇 공에 명령을 내리는 플레이그라운드다. 애플의 도구 및 기술 제품 마케팅 담당 이사인 윌리 호지스는 실제로 스피로가 자체 플레이그라운드를 만들어서 사이트에 배포할 수 있다고 설명했다.

이 선반에서 플레이그라운드를 복제하거나 초기화할 수 있다. 예를 들어 아이가 강의를 절반 정도 진행한 상태에서 동생도 하고싶어 하는 경우, 플레이그라운드를 복제해서 복사본을 만든 다음 복사본을 최초 상태로 초기화하면 된다. (스위프트 플레이그라운드는 iOS 9.3에 추가된 교사용 학급 관리 기능과도 호환된다.)

코딩 배우기
필자는 스위프트 경험이 없었으므로 사전 지식이 없는 초보자를 위한 코드 배우기 1부터 시작했다. 친밀한 도입 화면은 각각의 새로운 주제를 소개하고 누구나 이해하기 쉽게 설명해준다. 예를 들어 첫 강좌 그룹은 기본적인 명령을 다루는데, 도입 화면에서는 이를 레시피나 일련의 지침을 따르는 데 비유해 설명한다. 이후 For 루프에서는 작은 꽃밭을 만들고 이 작업을 계속 반복하는 것에 비유해 설명한다.

일단 개념 설명을 마친 뒤에는 함수 호출, 루프 명령, if 문, 조건부 코드 등 더 이상 비유가 아닌 실제 용어를 사용한다. 특수 용어들은 화면에서 빨간색으로 표시되므로 이 빨간 단어를 두드리기만 하면 해당 용어의 정의를 볼 수 있다.



인터페이스는 두 개의 창으로 나뉜다. 왼쪽은 텍스트로, 상단에 과제에 대한 설명이 나오고 그 아래는 프로그램 작성을 위한 공간이 표시된다. 화면 오른쪽에는 결과가 표시되며 내 코드 실행(Run My Code)이라는 레이블이 달린 큰 빨간색 플레이 버튼이 있다. 코드 배우기 1 강좌에서는 바이트(Byte)라는 익살맞은 만화 마스코트에게 명령을 내린다. 바이트는 이리저리 돌아다니면서 보석을 모으고 스위치를 작동시킨다. (참고: 바이트를 두드리면 캐릭터 모델이 바뀐다. 3개 중에서 선택 가능)


처음 시작할 때 몇 가지 명령이 주어진다. 예를 들어 바이트에게 moveForward와 turnLeft를 지시해서 스위프트 명령이 실제로 어떻게 표현되는지 예제를 통해 알아볼 수 있다. 그러나 turnRight 명령은 기본적으로 없기 때문에, 필자의 첫 과제는 turnLeft 명령 3개를 조합해서 turnRight 함수를 만드는 것이었다. 각 명령을 입력한 후 프로그램을 실행하거나, QuickType에서 명령을 두드리거나 전체 키보드를 확장해 프로그램 전체를 한꺼번에 쓸 수도 있다. 미리 보기 창은 멀티 터치를 지원하므로 게임 환경을 스크롤해서 살펴볼 수 있으며 확대/축소가 가능하다. 예를 들어 바이트가 왼쪽으로 돌기 전에 몇 개의 사각형을 전진해야 하는지, 화면을 확대해서 정확히 볼 수 있다.


스위프트 플레이그라운드는 아이패드의 터치스크린 인터페이스의 이점을 활용한다.
하단의 목록을 두드려서 명령을 입력할 수 있고, 전체 키보드를 불러오거나 코드의 각 아이템을 문맥 아이템으로 불러올 수도 있다.


코드 배우기 1에서는 바이트가 보석을 수집하고 스위치를 작동시키면서 스위프트 도구를 다양한 상황에서 응용하고 반복 작업을 줄일 수 있음을 보여준다. 올 가을 스위프트 플레이그라운드 최종 버전과 함께 출시될 코드 배우기 2는 1탄과는 다른 환경을 제공한다.

코더처럼 생각하기
스위프트 플레이그라운드는 창의적인 문제 해결을 독려한다. 유일한 해결 방법도 없고, "최선의" 해결 방법이라는 것도 없다. 코드 라인을 얼마나 적게 쓰느냐, 또는 얼마나 많은 함수를 쓰느냐에 따라 평가를 받는 일도 없다. 앱은 반복되는 패턴 찾기, 함수에 알아보기 쉬운 이름을 써서 기억하기 쉽게 하기 등 좋은 코딩 습관을 가르친다. 또한 예를 들어 공식적으로 루프를 배우기 전에 루프를 코드에 추가하는 등 사용자가 진도보다 앞서나갈 경우 칭찬도 한다.


스위프트 플레이그라운드는 칭찬을 자주 해주며, 지속적으로 실제 능력을 키우고 있다는 사실을 알려준다.


전체적으로 칭찬이 무척 후하다. 덕분에 다음 강좌까지 계속 이어서 하고싶은 동기 부여가 된다. 또한 가로막히는 경우에도 힌트 버튼을 사용해 좌절하지 않고 계속 진행할 수 있다. 힌트 팝업은 처음에는 과제에 대한 사고의 방법을 제시한다. 도움이 더 필요하면 과제를 여러 부분으로 분할하는 방법에 대한 단서를 주고, 그래도 해결이 안 되면 최종적으로 올바른 코드를 보여준다. 그러나 힌트에 나온 코드를 복사해 코드 편집기에 붙여넣을 수는 없고 수동으로 입력해야 한다. 이 부분 역시 학습에 도움이 된다.

스위프트 플레이그라운드에서 놀면서 좋은 코드와 구문의 바탕이 되는 개념을 배우는 것도 재미있지만 그게 끝은 아니다. 코드를 녹화하고 그 영상을 공유할 수 있으며 영상에 자신의 기술을 과시하는 해설을 덧붙이거나 에어드롭, 메시지, 메일을 통해 전체 플레이그라운드를 공유할 수도 있다. 아이패드는 아직 완전한 개발 플랫폼은 아니지만(애플이 앞으로 어떤 계획을 갖고 있는지도 알 수 없음) 플레이그라운드에서 맥의 엑스코드(Xcode)로 코드를 내보낼 수 있다.

이 앱의 독보적인 부분
애플은 2014년 WWDC에서 스위프트를 공개했고 지난해 12월 스위프트를 오픈 소스화했다. 스위프트는 이미 앱 스토어에 있는 100,000개 이상의 앱에 사용되고 있으며 이 중에는 리프트(Lyft), 슬랙(Slack), 스트라바(Strava)와 같은 최고의 인기 앱들도 있다. 호지스는 "스위프트에 대한 반응이 아주 좋다"면서 스위프트가 빠르게 성장하는 프로그래밍 언어라고 강조했다.

스위프트의 장점은 오브젝티브-C와 같은 컴파일 언어 수준으로 빠르고 강력한 동시에 스크립팅 언어만큼 친숙하고 읽기 쉽다는 데 있다. 명령과 함수는 사람이 읽기 쉬운 단어로 만들어진다. 필자는 80년대에 처음 코딩을 접했는데, 당시 여름 캠프에서 BASIC을 배우면서 실제 코드를 실행하기 전에 코드를 읽는 것만으로 그 결과를 예상할 수 있다는 점이 무척 마음에 들었다. 스위프트는 그 때의 경험을 연상시킨다. 또한 스위프트 플레이그라운드의 분할 화면 보기 덕분에 이 시각화 과정이 더욱 쉬워진다. 코드가 실행되는 가상 환경 바로 옆, 화면 왼쪽에 코드가 표시되기 때문이다.

스위프트 플레이그라운드는 (당연히) 스위프트로 작성된 앱이며 코드 편집기에서
사용자가 작성하는 코드는 화면 오른쪽에 실행되는 프로그램에 바로 삽입된다. 한 번은 실수로 괄호를 삭제하는 바람에 코드가 망가졌다. 바이트는 잘못된 명령에 따라 엉뚱한 방향으로 이동하는 것이 아니라 구문을 수정할 때까지 전혀 움직이지 않았다. 이는 키 입력 하나 하나가 중요하다는 사실을 새삼 깨닫게 된 경험이었다. 게임 환경은 iOS 전반에 사용되는 씬킷(SceneKit), 메탈(Metal), 3D 가속을 똑같이 사용한다.


미리 보기 창은 인터랙티브하게 움직인다. 확대해서 자세히 살펴보고 바이트를 두드려 캐릭터를 변경할 수 있다.


애플은 애플 소프트웨어 엔지니어들이 생각하는, 소프트웨어 엔지니어를 배우는 최선의 방법을 기반으로 스위프트 플레이그라운드 자체를 위한 커리큘럼을 개발했다. 스위프트 플레이그라운드는 순수한 학문적 활동보다는 사용자가 코더처럼 생각하면서 문제를 분해해서 논리를 적용하도록 유도하는 측면이 강하다. 애플 개발자 도구의 제품 마케팅 담당자인 팀 트리엠스트라는 "애플에서 소프트웨어를 개발하는 사람들이 만든 앱이다. 따라서 실제 프로그래밍이 어떻게 작동하는지를 잘 가르쳐준다"고 말했다.

교육 수준을 정하고 동기 부여를 위한 대사 등을 제작하기 위해 전문적인 교육자와 어린이 테스터도 앱 개발에 참여했다. 애플 소프트웨어 엔지니어링 사업부 부사장인 셰릴 토마스는 "컴퓨터 과학을 가르치기 위한 적절한 방법을 찾기 위해 교육자들과 협력했다. 남자 아이와 여자 아이들에게 모두 매력 있는 평등한 앱을 만들고자 했다"고 말했다.

모든 강좌는 즉시 사용 가능하므로 하나씩 잠금을 풀거나 특정 순서대로 플레이할 필요가 없다. 목표는 재미를 주는 것이므로 앱에는 사용자의 흥미를 유지하기 위한 많은 고민이 녹아 있다. 방금 배운 내용을 더 심층적으로 알고 싶은 마음에 "하나만 더 하고 끝내자"는 생각이 자꾸 드는 중독성을 가진 스위프트 플레이그라운드는 교육용 앱보다는 게임에 가깝게 느껴진다.

스위프트 플레이그라운드는 iOS 10 공개 베타와 함께 제공되며 코드 배우기 1과 과제가 포함되어 있다. 올 가을 iOS 10이 출시될 때 함께 나올 정식 최종 버전에는 더 많은 강좌가 포함될 예정이다.



※ 본 내용은 한국IDG(주)(http://www.itworld.co.kr)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒITWORLD. 무단전재 및 재배포 금지


[원문출처 : http://www.itworld.co.kr/news/100394]

맨 위로
맨 위로