알라딘

헤더배너
상품평점 help

분류

이름:조경빈

최근작
2021년 8월 <손쉬운 로블록스 게임 코딩>

모던 자바스크립트 Modern JavaScript

자바스크립트는 이미 20년에 가까운 역사를 가진 언어며, 오랜 역사를 지닌 만큼 자바스크립트를 다룬 책은 이미 많이 나왔습니다. 당연한 이야기지만, 저자의 손을 거쳐 세상에 빛을 보는 모든 책은 다들 자신들의 책이 단연 최고라고 말합니다. 이 책에서조차 '이 책은 이제까지 나온 자바스크립트 서적 중 단언컨대 최고입니다.'라고 말한다면 너무 진부하게 들릴 수 있다는 사실 또한 잘 알고 있습니다. 하지만 지금까지 몇 권의 자바스크립트 책을 읽었던 독자라면, 이 책을 펴서 몇 페이지만 읽어봐도 왜 제가 이 책을 최고의 자바스크립트 책으로 추천하는 데 주저하지 않는지 이해하리라 생각합니다. 이 책의 본문에도 언급되는 내용으로 자바스크립트와 자바는 태생과 언어적 특성에서 본질적으로 전혀 다른 언어임에도 불구하고 자바스크립트라는 이름 탓에 자바 언어와 혼동하는 분을 많이 볼 수 있습니다. 심지어 국내 유명 온라인 서점조차도 JAVA(자바)라는 카테고리의 하위에 자바스크립트 관련 서적을 배치하고 있으니 말입니다. 자바스크립트는 IT 업계 종사자뿐만 아니라 해당 분야와 직접 관련이 없는 사람조차도 개인 홈페이지나 블로그를 만들면서 한두 번 정도는 들어보셨거나 사용해본 경험이 있을 정도로 우리에게 친숙한 언어입니다. 하지만 이 언어를 제대로 이해하고 사용하는 사람의 수도 작고 제대로 다루는 책도 적은 것이 현실입니다. 자바스크립트라는 언어가 가진 특유의 낮은 진입장벽으로 인해서 이 언어를 사용하는 개발자나 다루는 책에서조차도 자바스크립트를 간단한 기능이나 재미있는 요소를 추가하는 데 사용하는 가벼운 기술이라 여겨온 것 또한 사실입니다. 하지만 요즘의 웹 환경에서 자바스크립트는 매우 중요한 역할을 맡고 있으며 더는 가볍게 여길 수 없는 핵심 언어로 자리를 잡았습니다. 이 책은 지금까지 자바스크립트에 대해 사람들이 가져온 오해나 편견을 바로잡고 인식을 개선하는 데 주요한 목적을 두고 있습니다. 과거의 정적이고 단순한 웹 서비스와 달리 날로 복잡해지고 동적 기능을 요구하는 최신의 웹 서비스를 구현하려면 무엇보다도 자바스크립트에 대한 제대로 된 이해가 필수며, 제대로 된 크로스브라우저 지원을 위해서도 자바스크립트에 대한 정확한 이해는 반드시 필요합니다. 저는 몇 년 전 인프라웨어에서 일할 당시 브라우저의 엔진 개발 업무를 맡아 수행하면서 자바스크립트라는 언어를 사용해서 웹 사이트를 구현하는 업무가 아닌 자바스크립트 엔진의 동작 자체를 구현하는 일을 경험했고, 당시 브라우저마다 서로 다른 자바스크립트 엔진 동작 형태에 대해 깊은 고민을 한 적이 있습니다. 일반적으로 언어를 배울 때 직접 언어의 문법을 익히고 활용하는 과정을 거치게 되는 데 반해, 저는 운 좋게도 브라우저를 개발하면서 자바스크립트의 기능을 직접 구현하는 소중한 경험을 했고, 이는 자바스크립트라는 언어를 좀 더 제대로 이해하는 데 큰 도움이 되었습니다. 이때 이후로 단순한 활용서 수준의 자바스크립트 서적에 많은 아쉬움을 느끼던 차에 이 책을 만났고 정말 제대로 자바스크립트를 다룬 책이라는 사실을 확인했을 때 아주 반가운 마음이 들었습니다. 이 책의 번역을 맡은 일은 제겐 영광스러운 경험이었고 제대로 된 자바스크립트 서적을 자신 있게 소개할 수 있어서 기분이 좋습니다. 이런 좋은 기회를 주신 에이콘출판사 모든 분께 진심으로 감사합니다. 무엇보다도 이 책을 선택해 이 글을 읽고 있는 독자 여러분에게 진심으로 고맙습니다. 부디 여러분이 자바스크립트 고급 개발자로 나아가는 데 이 책이 큰 도움이 되기를 희망합니다.

손쉬운 로블록스 게임 코딩

세컨드라이프 등 기존에도 인터넷 기반의 가상월드에 대한 다양한 시도가 있어 왔으나, 세상이 기대했던 것에 비해서는 그리 큰 성공을 거두지 못한 게 사실이다. 기대만큼의 성공을 거두지 못한 이유는 여러 가지 있겠으나 아마도 인류의 라이프 스타일 변화 속도의 한계, 하드웨어 성능과 네트워크 속도의 한계 등이 복합적으로 작용했다고 생각한다. 본래 변화와 혁신은 한 번에 되는 일이 잘 없고 두세 번에 걸쳐서 일어난다. IT 혁명도 처음에는 IT 버블이었던 것처럼, 메타버스 역시 세컨드라이프 시절이 메타버스 버블이었다면 이제야 비로소 진정한 메타버스 혁명이 시작되는 출발선에 있다고 볼 수 있다. 누구나 가상월드에 대한 환상을 가지고 산다. '누구나'라는 워딩이 다소 성급한 일반화의 오류를 범하는 듯 들리겠지만, 꿈을 꾸는 존재인 인류의 잠재의식 속에는 늘 여러 개의 다른 세계관이 공존한다고 생각하는 게 그리 급진적인 발상은 아닐 수도 있다. 나 또한 어린 시절부터 내가 사는 현실 공간이 아닌 또 하나의 다른 세상에 대한 동경이 있어 왔고, 구체적인 예로는 초등학생이던 시절, '온 세상이 다 놀이공원이라면 우리 인류가 평생 얼마나 행복하게 살 수 있을까?', '왜 학교나 회사 같은 걸 만들어서 이렇게 힘들게 살아가는 것일까?'하는 철없는 상상을 하기도 했었다. 하지만 이런 철없는 상상이 적어도 메타버스 월드에서는 어쩌면 철없는 상상이 아닐 수도 있겠다고 생각하게 된다. 오히려 이런 철없는 상상이 극대화되는 그런 공간이 우리가 바라는 미래의 메타버스 공간일지도 모른다. 최근 상장한 로블록스의 1분기 매출이 공개됐다. 연간 조 단위의 매출을 바라보고 있을 정도로 이미 메타버스 월드는 가능성을 넘어 대세가 되고 있으며, 이는 곧 게임 개발자들에게는 큰 기회 중 하나로 다가오고 있다. 로블록스가 확보하고 있는 충성 고객의 수는 단일 게임 플랫폼으로는 상당한 규모로 이 시장에 관심을 가진 개발자들에게 좋은 기회를 제공한다. 잘 짜여진 로블록스 경제 생태계에 들어가서 자신만의 경쟁력을 갖춘 콘텐츠를 제공한다면 기존의 모바일 게임 생태계보다 더 매력적일 수 있는 단일 공간이 로블록스 생태계다. 이 책은 로블록스 개발 환경에 대한 설명, Roblox Studio와 루아 프로그래밍 언어에 대한 설명을 기반으로 자신만의 게임을 만드는 데 필요한 모든 내용을 체계적으로 설명하고 있다. 게임 메카닉, 수익화 기법, 마케팅 기법 등 실제 게임의 개발뿐만 아니라 수익성 있는 사업으로 발전시키는 데 필요한 내용도 비중 있게 다루고 있다. 또한 프로젝트 관리 및 다른 작업자와의 협업에 대한 조언도 빼놓지 않는다. 이 책의 내용을 충실히 따른다면 원하는 게임의 개발뿐만 아니라 사업적인 성과를 내는 데 필요한 지식도 함께 얻을 수 있다. 지금 이 글을 읽고 계신 독자 여러분께 감사드린다. 부디 이 책이 로블록스 게임 개발자로 성장해나가는 데 큰 도움이 되길 기대한다.

유니티 게임 AI 프로그래밍

8비트 컴퓨터로 프로그래밍을 처음 공부하던 중학생 시절 구구단 프로그램을 만들거나 각종 도형을 그리는 연습 프로그래밍을 마쳤을 무렵, 가장 먼저 만들어 보고 싶던 주제가 바로 인공지능이었습니다. 누가 시킨 것도 아니고 딱히 어디에서 본 게 있는 것도 아니었지만, 본능적으로 컴퓨터가 마치 사람처럼 생각할 수 있다면 얼마나 신기하고 재미있겠느냐는 생각에 이르렀습니다. 당시 스스로 인공지능이라는 용어를 사용했는지는 잘 기억나지 않지만, 제법 그럴듯한 인공지능 알고리즘을 연습장에 설계해가면서 컴퓨터와 제가 대결하는 게임을 하나 만든 적이 있는데, 바로 사목이라는 게임이었습니다. 사목을 아직 접해보지 못한 분들도 계실 텐데, 오목과 달리 사목은 비교적 경우의 수가 적고 규칙이 제한적이어서 별다른 지식이 없는 상태였음에도 해볼 수 있지 않을까 하는 자신감에 무작정 개발을 시작했습니다. 오랜 시행착오를 거친 끝에 결국 사목 프로그램을 완성했는데, 처음으로 프로그램을 완성한 후 첫 대결에서 너무도 허무하게 컴퓨터에 졌던 기억이 납니다. 당시 가지고 있던 8비트 컴퓨터가 너무 느려서 제가 한 수를 두고 나면 한 5분쯤 후에 컴퓨터가 한 수를 두곤 했는데, 이 시간 동안 컴퓨터가 정말로 마치 사람처럼 열심히 생각하는 것 같은 착각이 들기도 했습니다. 어린 나이여서 더 그랬는지도 모르겠지만, 당시에는 마치 제가 조물주라도 된 양 기분이 들떴고, 아무런 능력도 없는 쇳덩어리가 사람과 대등하게 사목이라는 게임을 겨루는 능력을 갖췄다고 생각했을 때의 흥분은 아직도 잊을 수가 없습니다. 여러 가족을 컴퓨터 앞에 앉혀가면서 이겨보라고 도발하기도 했고 컴퓨터가 이길 때마다 마치 저의 분신이 이긴 것 같아 기분이 좋았던 기억이 납니다. 이후 컴퓨터 서적이 아니더라도 인공지능을 다루는 주제의 소설이나 과학 서적 등을 우연히 서점에서 만나면 그냥 지나치지 못하고 어쩔 수 없는 이끌림에 그 책을 사서 보곤 했던 기억이 날 정도로, 인공지능이라는 주제는 아직도 제 가슴을 설레게 하는 힘이 있는 분야입니다. 최근에 구글이나 애플에서 열심히 개발 중인 자동주행 자동차도 지능을 부여하여 스스로 운전을 하도록 만들었다는 점에서 인공지능의 좋은 사례라고 할 수 있을 텐데요, 이런 큰 프로젝트가 아니더라도 주위를 둘러보면 가전제품부터 다양한 분야와 접목된 전자기기 등 정말 다양한 분야에 인공지능이 적극적으로 활용되고 있음을 확인할 수 있습니다. 이 책은 유니티 환경에서 인공지능을 다루는 방법을 설명한 책으로 인공지능에 대한 기본적인 소개부터 시작해 유한 상태 기계의 개념, 랜덤과 확률, 센싱 기술의 구현, 길 찾기 알고리즘, 행동 트리 등 게임 제작에 필요한 인공지능 기법과 이를 유니티가 지원하는 환경에서 어떻게 구현할 수 있는지를 비교적 초보자의 시선에서 차근차근 상세히 설명하고 있습니다. 일부 장르를 제외하면 대부분의 게임은 수준과 정도의 차이는 있지만 인공지능을 적용해야만 하는 상황이 발생하는데 이때 이 책에서 다루는 내용만 제대로 익혀놔도 실전에서 별다른 부족함 없이 원하는 의도대로 만들어 낼 수 있을 거라 생각합니다. 인공지능이라는 흥미로운 주제를 유니티 환경에서 다룬 이 책의 번역을 맡은 일은 제겐 영광스러운 경험이었고 유니티 환경에서 게임을 개발하는 개발자에게 인공지능 프로그래밍의 기초를 탄탄하게 다져줄 수 있는 좋은 서적을 소개할 수 있어서 기분이 좋습니다. 부디 이 책이 인공지능 프로그래밍의 기초를 다지는 데 큰 도움이 되기를 희망합니다.

유니티 게임 AI 프로그래밍 2/e

우리는 얼마 전 대한민국 땅에서 인공지능 역사에 한 획을 그은 사건을 생생하게 목격할 수 있었습니다. 온 대중매체가 연일 집중해 생중계와 보도를 쏟아내며 세기의 대결이라 칭했던 구글의 인공지능 알파고와 천재 바둑기사 이세돌 간의 대국이 바로 그 대상이었는데요. 바둑이라고는 아주 기초적인 규칙밖에 모르는 저도 넋을 놓고 지켜볼 만큼 인류 역사에 있어서 매우 흥미로운 인간과 인공지능 간의 대결이었습니다. 이미 출간을 마친 『유니티 게임 AI 프로그래밍』의 옮긴이의 말을 쓸 때 제가 초등학교 시절 8비트 컴퓨터를 가지고 인공지능 바둑 게임을 만들어서 대결을 펼치며 흥분과 환희를 느낀 이야기를 적었는데, 이젠 인공지능이 세계 최고의 천재 바둑 기사를 이기는 시대가 된 것입니다. 인류 역사를 돌이켜볼 때 인공지능 분야는 상대적으로 매우 짧은 시간에 비약적인 발전을 했습니다. 저뿐만 아니라 많은 분들이 알파고와 이세돌의 생중계를 지켜보면서 알파고가 단순한 소프트웨어를 넘어서서 마치 영혼마저 있는 것 같은 느낌을 받았다고 말합니다. 그만큼 인공지능은 앞으로 우리의 삶에 성큼성큼 다가올 것입니다. 이 책은 전작인 『유니티 게임 AI 프로그래밍』의 단순한 후속판으로 보기엔 너무 많은 내용이 변경됐습니다. 일단 가장 눈에 띄는 변화로 책의 모든 내용이 유니티 5를 기본으로 구성됐으며 인공지능에 대한 기본적인 소개부터 시작해 유한 상태 기계의 개념, 랜덤과 확률, 센싱 기술의 구현, 길 찾기 알고리즘, 행동 트리, 퍼지 로직 등 게임 제작에 필요한 인공지능 기법과 이를 유니티가 지원하는 환경에서 어떻게 구현할 수 있는지를 비교적 초보자의 시선에서 차근차근 상세히 설명하고 있습니다. 일부 장르를 제외하면 대부분의 게임은 수준과 정도의 차이는 있지만, 인공지능을 적용해야만 하는 상황이 발생하는데, 이때 이 책에서 다루는 내용만 제대로 익혀놔도 실전에서 별다른 부족함 없이 원하는 의도대로 만들어 낼 수 있을 것으로 생각합니다. 물론 이 책에서 다루고 있는 인공지능이 앞서 이야기한 인류의 삶을 근본적으로 변화시키는 기술과는 지향점이 다르다는 점은 이해해야 합니다. 게임 인공지능의 목표는 인류의 삶에 영향을 주는 것보다는 게임 자체에서 느낄 수 있는 재미를 늘리는 데 있으며 이 책은 그런 목표를 달성하는 데 필요한 기술에 집중하고 있기 때문입니다. 부디 이 책이 인공지능 프로그래밍의 기초를 다지는 데 큰 도움이 되기를 희망합니다.

유니티 애니메이션 에센셜

8비트 컴퓨터로 처음 게임을 만들던 시절, 제게 게임은 ‘움직이는 그림’이었다. 속으로 ‘게임이 뭐 별건가. 그림이 움직이고 그게 재미있으면 게임이지.’라며 치기 어리지만 용감한 생각을 하던 때가 기억이 난다. 게임 제작을 직업으로 삼고 있는 지금도 그때와 그리 많이 생각이 달라지지 않았다. 물론 지금 정의하는 게임은 대표적인 첨단 복합 예술로 그 격이 많이 올라갔지만, 애니메이션 요소는 게임에서 따로 떼어 놓고는 도저히 생각할 수 없는 필수적인 구성 요소라는 것은 틀림없다. 보통 애니메이션이라고 하면 컴퓨터 애니메이션을 상상한다. 애니메이션은 컴퓨터가 발명되기 이전부터 인류와 함께해온 요소다. 고대 인류는 동굴 벽화로 애니메이션 요소를 그렸다. 동굴 벽화의 캐릭터의 자세가 단계별로 변하는 그림이 그려진 것이 현재의 애니메이션으로 진화하게 된 것이다. 학창 시절에 교과서 한 귀퉁이에 조금씩 변하는 그림을 그려 넣고 빠르게 넘기면서 각자의 애니메이션을 만들고 자랑하던 기억이 있을 것으로 생각한다. 그것 역시 애니메이션이다. 컴퓨터의 발전과 보급으로 게임 제작 기법도 진화를 거듭해왔고, 현재는 단순히 연속적으로 움직이는 그림을 넘어서서 기술적으로도 다양한 2D/3D 애니메이션 기법이 개발된 상태이다. 이 책은 우리가 실제로 게임 개발에 사용할 유니티(Unity)라는 통합 개발 도구가 제공하는 각종 애니메이션 기법을 기초 형태부터 진화된 형태까지 차례로 설명하고 있다. 전통적인 2D 스프라이트 애니메이션부터 네이티브 애니메이션, 비캐릭터 애니메이션과 캐릭터 애니메이션 그리고 블렌드 트리와 블렌드 쉐잎, 무비 텍스처까지 고급 기법도 함께 다루고 있다. 이 서적 하나면 앞으로 개발할 게임에서 필요한 대부분의 애니메이션 기법을 소화하는 데 무리가 없을 것이다. 게임 애니메이션이라는 흥미로운 주제를 유니티 환경에서 구현하는 방법을 다룬 이 책의 번역을 맡은 일은 제겐 영광스러운 경험이었다. 또 유니티 환경에서 게임을 개발하는 개발자에게 애니메이션 제작의 기초를 탄탄하게 다져줄 수 있는 좋은 서적을 소개할 수 있어서 기분이 좋다.

파이썬을 활용한 비지도 학습

제가 따로 이야기를 꺼내지 않더라도 최근 머신 러닝이 얼마나 많은 관심을 받고 있는지는 여러분이 더 잘 아실 거라 생각합니다. 인공지능의 역사는 생각보다 꽤 깁니다. 1940년대 후반에서 1950년대 초반 수학이나 철학, 공학, 경제 등 다양한 영역의 과학자들로부터 인공적인 두뇌의 가능성이 논의되기 시작했는데, 1956년에 이르러서 인공지능이 본격적으로 학문의 분야에 들어오게 됩니다. 하지만 반세기가 넘는 긴 역사에도 불구하고 인공지능은 그리 큰 발전을 만들어내지 못했습니다. 1950년대 중반부터 1970년대 중반까지 인공지능은 다양한 성과를 내면서 황금기를 여는 듯 했으나 이후 여러 복잡한 문제를 해결하는 데 연이어 실패하면서 꽤 오랜 기간 어두운 시기를 지나왔습니다. 그리고 다시 최근에 들어와서 컴퓨팅 파워의 증가와 인공지능 기술의 발전이 4차 산업혁명 시대와 만나면서 전 세계의 관심을 한 몸에 받는 분야가 됐습니다. 특히 우리나라 사람들이 인공지능의 발전을 피부로 크게 느낀 사건은 아마도 알파고와 이세돌의 대결이 아니었나 싶습니다. 저 또한 바둑을 잘 모름에도 그 긴 대국을 흥미롭게 지켜볼 정도였으니 말입니다. 이세돌과 대국했던 알파고는 인간의 기보를 바탕으로 지도 학습을 통해 만들어진 인공지능입니다. 지도 학습은 기본적으로 정답을 알고 있는 방대한 데이터를 기반으로 학습을 하는 방식을 말합니다. 아마존이 보유하고 있는 방대한 고객의 구매 패턴 데이터를 정답 데이터로 삼아 고객이 다음에 구매할 가능성이 높은 제품을 추천해주는 것이 한 예가 될 수 있습니다. 반면 비지도 학습은 정답을 알지 못하는 데이터로부터 패턴과 관계를 찾아내면서 의미를 파악해내는 접근 방법입니다. 인간 세상에서 우리가 얻을 수 있는 데이터는 정답이 없는 데이터인 경우가 더 많기에 비지도 학습은 매우 중요하고 유용한 머신 러닝 기법입니다. 이 책은 파이썬과 다양한 파이썬 라이브러리를 활용해 비지도 학습의 다양한 예시와 사례를 통해 독자가 이해하기 쉬운 방법으로 친절하게 설명하고 있습니다. 머신 러닝에 대한 사전 지식이 전혀 없더라도 이 책의 내용을 이해하는 데 큰 어려움은 없을 것이고 이 책을 시작으로 머신 러닝의 매력에 흠뻑 빠져들 것이라 확신합니다.

C++를 사용한 언리얼 엔진 4 개발 2/e

언리얼 엔진은 소개가 필요 없는 세계 최고의 3D 엔진으로, 에픽게임즈(Epic Games)에서 개발했으며, 그래픽 성능과 다양한 옵션, 시장 변화에 빠르게 대응하는 모습 등으로 게임 엔진 산업을 주도하고 있다. PC나 콘솔, 모바일용 기기에서 돌아가는 대작 게임에 주로 활용되던 언리얼 엔진은 이제 그 영역을 가상현실이나 영화, 애니메이션, 건축 설계 등으로 계속 확장해나가고 있다. 1998년 언리얼 엔진 1을 사용한 첫 출시작 <언리얼(Unreal)>은 항상 압도적인 그래픽이라는 수식어를 달고 다니면서 시장에 큰 반향을 일으켰다. 유니티와 같은 경쟁 엔진의 기세가 만만치 않은 지금까지도 최고의 성능이란 수식어는 언제나 언리얼 엔진의 차지가 되고 있다. 게임 산업의 규모는 매년 커지고 있으며, 여기에 여러 가지 사회적인 분위기가 겹치면서 앞으로도 게임 산업은 성장을 거듭할 것으로 기대된다. 예전보다 점점 더 많은 사람이 현실보다는 온라인에서 더 오랜 시간을 함께 보내고 있으며, 게임 세상 안에서 삶의 일부를 공유하는 시간도 점차 길어지고 있다. 또한 게이머와 비게이머의 경계가 점점 사라지고 있으며, 누구나 손안에 게임기를 들고 다니는 세상이 된 지 이미 오래다. 이런 세상을 지탱하는 큰 역할을 언리얼 엔진이 담당하고 있는 것이다. 현재 게임 엔진 시장은 사실상 유니티와 언리얼의 '양강 구도'로 평가된다. 유니티가 개발 편의성에 중점을 두고 있다면, 언리얼은 최고의 그래픽 성능에 중점을 두고 있다. 따라서 어떤 게임을 만드는지에 따라 엔진을 선택하는 분위기다. 캐주얼 성향이 강한 게임은 대체로 유니티 엔진을 사용해 개발 효율을 높이는 전략을 택하고, 그래픽 성능에 중점을 두는 게임은 언리얼 엔진을 사용하는 전략을 택하는 것이 일반적이다. 국내에서는 <리니지2>가 언리얼 엔진 2를 사용하면서 언리얼 엔진이 유명해지기 시작했으며, 이후 웬만한 중대형 게임 개발사들이 마치 경쟁이라도 하듯이 앞다퉈 언리얼 엔진으로 게임을 개발하기 시작했다. 또한 게임을 소개할 때도 언리얼 엔진을 사용했다는 것을 광고할 정도로 언리얼 엔진은 높은 브랜드 파워를 갖고 있으며, 이로써 대작이라는 이미지를 게임에 심어줄 뿐 아니라 그래픽 품질에 대한 신뢰도도 높여준다. 유니티 엔진에 비해 진입 장벽이 높을 것으로 막연히 걱정하는 개발자들도 적지는 않지만, 다양하고 자세한 레시피를 통해 언리얼 엔진의 각 요소를 설명하는 이 책의 내용을 잘 따라온다면 언리얼이 그렇게 어렵기만 한 것은 아니라는 사실을 쉽게 알 수 있다.

Immutable.js 마스터

이 책은 아마도 현재 국내에 출간된 유일한 Immutable.js 전문 서적일 것입니다. 리액트(React, React.js 또는 ReactJS)는 자바스크립트 라이브러리의 하나로써 사용자 인터페이스를 만들기 위해 사용되는데, Immutable을 적극적으로 활용하기에 적합한 환경이기 때문에 리액트에 관심이 있는 분들은 Immutable이라는 말을 분명 들어보셨을 것입니다. 리액트를 다루는 책에서 아마도 한 챕터 정도를 할애해 Immutable을 다루기는 했을 테지만, 이 책처럼 전체에 걸쳐 Immutable.js를 다룬 책은 없었습니다. 프로그래밍 방법론에는 구조적 프로그래밍, 객체지향 프로그래밍, 함수형 프로그래밍 등 다양한 개념이 존재하는데, 개발자들 사이에서 지속적인 관심을 끌고 있는 함수형 프로그래밍에서 매우 중요시 하는 개념이 불변성이며, 자바스크립트에서 이런 불변성을 지원해주는 라이브러리가 바로 Immutable.js입니다. 참고로 함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임입니다. 불변성이 멋진 이유는 잘못된 시점에 의도와 무관하게 값을 변경하면서 부작용이 발생하는 걸 원천적으로 막아주기 때문입니다. 이는 애플리케이션의 안정성을 크게 향상시켜 줄 뿐만 아니라 디버깅에 들어가는 노력도 크게 줄여줄 수 있습니다. 런타임이 아닌 컴파일 타임에 불변성을 보장해주기 때문에 이런 원칙을 지키지 않으면 심지어 컴파일조차 되지 않습니다. Immutable의 도움을 받지 않더라도 불변성의 원칙을 따르면서 코드를 개발하는 것이 불가능한 것은 아니지만 코드가 매우 복잡해지기 때문에 이럴 때 Immutable의 도움을 받으면 불변성 원칙을 따르는 일이 한결 쉬워집니다. 자바스크립트는 애초부터 불변성을 고려한 언어가 아니므로 불변성이 크게 중요하지 않은 부분은 기존 방식으로 작성할 수도 있겠지만 불변성을 꼭 지켜야 하는 곳에서는 Immutable.js를 적극 활용해 코드를 작성한다면 한 단계 더 높은 수준의 자바스크립트 개발자로 발전할 수 있을 것입니다. 이 책은 Immutable.js를 제대로 사용해보고자 하는 자바스크립트 개발자에게 꼭 필요한 개념을 모두 설명하고 있는 거의 유일한 책입니다.

RPG를 만들면서 배우는 유니티 2D 게임 개발

컴퓨터를 활용한 게임의 역사는 이제 고작 30여 년이 지났을 뿐이며, 운 좋게도 저는 이런 게임 역사의 시작을 목격했고 학창 시절 컴퓨터 게임과 아케이드 게임에 빠져 살았으며, 현재는 게임을 개발하면서 인생의 상당 부분을 게임과 함께 하고 있습니다. 컴퓨터 게임이라는 게 세상에 나타나지 않았다면 어떤 학창시절을 보내고, 현재는 또 어디에서 무슨 일을 하면서 살고 있을까 하는 상상을 가끔 해봅니다. 긴 인류의 역사에 비해 컴퓨터 게임은 역사라고 부르기도 민망할 정도로 탄생한 지 얼마 되지 않은 분야입니다. 당연한 이야기겠지만, 최초의 컴퓨터 게임은 2D 게임이었고 이후 3D 게임이 탄생하기 전까지는 따로 2D 게임이라고 부를 필요도 없이 당연히 모든 게임은 2차원의 평면에서 펼쳐지는 게 일반적이었습니다. 기술이 발전함에 따라 인류는 좀 더 현실에 가까운 세상을 구현하고자 하는 욕망을 다양한 예술 분야에서 꿈꾸고 시도했으며, 결국은 3차원의 공간을 수학적으로 모델링해 마치 실제 공간에 있는 듯한 느낌을 주기 위한 기술적 기반을 마련하는 데 성공했습니다. 일부 성급한 개발자나 게이머는 앞으로 모든 게임은 3차원이 될 것이라 속단하기도 했지만, 그런 예측은 적어도 현재까지는 완전히 빗나갔습니다. 최근 게임 시장의 중심으로 떠오른 모바일 게임 시장을 살펴보면 전체의 절반이 훨씬 넘는 게임이 2D로 개발됐습니다. 3D 게임은 2D 게임의 상위 개념이 아니며, 만들고자 하는 게임의 형태에 따라 더 잘 어울리는 방법을 택해야 합니다. 국내의 상황만 보더라도 구글 안드로이드 마켓에 등록된 게임 중 매출 상위 100개의 게임의 약 절반이 2D로 개발됐는데, 일반적으로 2D로 게임을 개발할 때 들어가는 개발 비용이 3D로 개발할 때에 비해서 크게 절약되는 경향이 있어 사업적 관점에서 접근할 때 2D로 게임을 개발하는 편이 위험 요소가 더 적다고도 볼 수도 있습니다. 게임에서의 3D 기술이 어느 정도 안정될 무렵 게임의 트렌드가 2D에서 3D로 넘어가는 듯한 모습을 보인 시기는 분명 있었고, 유니티도 그런 상황을 의식해서 처음에는 유니티3D라는 이름만 봐도 알 수 있듯 3D에 특화된 개발 도구로 세상에 처음 나왔습니다. 하지만 2D 게임의 인기는 좀처럼 사그라지지 않았고, 현재 3D 게임과 나란히 견줘도 뒤지지 않을 만큼 게이머들에게 큰 반응을 얻고 있습니다. 이에 유니티에서도 좀 더 편리하게 2차원 게임을 만들 수 있도록 2D에 특화된 기능을 제대로 제공하기 시작했습니다. 이 책은 유니티 버전 4.3에 새롭게 추가된 내용을 살펴보는 것으로 시작해 유니티가 새롭게 제공하는 2D 특화 기능을 하나씩 다루면서 유명한 게임에서 흔히 사용하는 기법을 따라 해보는 형태로 구성돼 있어 책의 내용을 끝까지 잘 따라가기만 한다면 완전한 하나의 게임을 개발하는 데 필요한 전반적인 지식을 갖출 수 있습니다. 시장 주요 트렌드의 한 축을 담당하는 2D 게임을 최신 유니티 환경에서 개발하는 데 필요한 내용을 다룬 이 책의 번역을 맡은 일은 제겐 영광스러운 경험이었습니다. 유니티 환경에서 게임을 개발하는 개발자에게 2D 게임 개발의 기초를 탄탄하게 다져줄 수 있는 좋은 서적을 소개할 수 있어 기분이 좋습니다. 무엇보다 이 책을 선택해 지금 이 글을 읽고 있는 독자 여러분에게 진심으로 고맙습니다. 부디 이 책이 유니티 2D 게임프로그래밍의 기초를 다지는 데 큰 도움이 되기를 희망합니다.

The Gourmet iOS Developer's Cookbook 한국어판

모바일 개발 환경에서 iOS는 개발자에게 특별한 의미를 가지는 플랫폼입니다. 아이폰이 세상에 출시되고 이와 더불어 iOS가 세상에 널리 퍼지기 시작하면서부터 기존에 심비안이나 윈도우 모바일 등을 운영체제로 택한 스마트폰과는 차원이 다른 사용자 경험을 제공하기 시작했습니다. 아이폰이 출시되기 이전에도 국내에는 이동통신사를 중심으로 한 오픈마켓이 야심 차게 열렸고 대대적인 홍보와 함께 활성화하려는 시도가 있었습니다. 하지만 당시의 스마트폰이 전화 기능에다가 당시 유행하던 PDA의 기능 정도를 결합한 수준에 머물면서 이를 지원하는 앱의 수준 또한 그리 높지 않아, 지금의 스마트폰처럼 사용자의 삶에 영향을 주고 패러다임을 바꾸기에는 한참 모자라던 상황이었습니다. 당시 국내에서 새롭게 오픈한 T스토어에 공모작 수상과 함께 앱을 출시해본 경험이 있던 저로서는 당시의 환경에 많은 아쉬움을 느끼고 있었는데 그러던 중 출시된 아이폰은 단순히 좀 더 나은 스마트폰이 세상에 출시된 것 이상의 의미를 부여하기에 충분했습니다. 아이폰은 출시와 함께 전 세계적으로 폭발적인 반응을 끌어내면서 단숨에 스마트폰의 표준을 제시하기 시작했고 기존에 난립하던 스마트폰들과는 질적으로 확연한 차이를 보여주며 시장을 점령해나가기 시작했습니다. 개발자의 관점에서 처음 iOS용 개발 도구를 접하고 체계적인 마켓 관리 프로세스와 정책을 접했을 때 기존에 느끼던 많은 아쉬움이 일거에 해소되는 기분이었습니다. 물론 현재는 까다로운 검수 절차 등으로 개발하고 관리하기 불편하다는 하소연도 있는 것이 사실이지만 이런 까다로운 절차 덕분에 최종 사용자는 검증된 앱을 안전하게 사용할 수 있기도 합니다. 또한, 안정된 개발 환경과 디바이스 체계는 한 번의 개발로 전 세계인을 상대로 안정적인 앱 서비스를 제공할 수 있는 큰 장점을 제공해주기도 하니 여전히 매력적인 환경임에는 의심할 여지가 없습니다. 이 책은 기존의 iOS 개발 서적에서 잘 다루지 않던 깊이 있는 주제를 다루고 있습니다. 에리카 세든의 전작인 『The Core iOS Developer's Cookbook (Fifth Edition) 한국어판』이 평상시 집에서 많이 해먹는 요리에 대한 레시피를 제공했다면 이 책은 미식가를 위한 특별 요리의 레시피를 제공한다고 볼 수 있습니다. 이 책은 일반적인 iOS 개발 서적에서 분량 문제나 난이도 문제 등으로 쉽게 소개하기 어려웠던 깊이 있는 주제들을 하나씩 꺼내 소개하고 있습니다. 총 11개로 이뤄진 각 장은 독립된 주제로 구성돼있으며 자신이 개발하고 있는 앱에서 필요한 부분만 따로 발췌해서 보기에 매우 편리한 형태이므로 처음부터 끝까지 차례대로 봐야 한다는 부담감 없이 책의 내용에 접근할 수 있는 것도 이 책의 주요한 특징 중 하나입니다. 최신의 고급 iOS 개발 주제를 다룬 이 책의 번역을 맡은 일은 제겐 영광스러운 경험이었습니다. iOS 환경에서 앱을 개발하는 개발자에게 고급 개발 주제를 소개하는 멋진 서적을 소개할 수 있어서 매우 기쁩니다.

가나다별 l l l l l l l l l l l l l l 기타
국내문학상수상자
국내어린이문학상수상자
해외문학상수상자
해외어린이문학상수상자