만들면서 배우는 유니티 VR 게임 개발 - 삼성 기어 VR과 HTC VIVE로 VR에 특화된 게임 제작하기
김광일.김도윤 지음 / 한빛미디어 / 2017년 11월
평점 :
장바구니담기



개발 경력이 짧고 전공을 하지 않았다 보니 취향만큼 다양한 개발 분야를 경험하지 못해서 내가 뭘 개발하는데에 흥미를 느끼고, 세상에 이런 분야도 있구나 하는 걸 느낄 수 있는 기회가 적다는 것이 항상 아쉬웠다. 그래서 기회가 되면 간단하게라도 새로운 분야를 경험해보려고 노력하고 있는데 사실 기술에 대한 진입장벽이 있는 경우가 많아서 생각처럼 행동하는 것이 쉽지만은 않다.

좋은 기회에 VR 게임 개발 입문서를 읽게 되어서 아 VR 게임은 이런 식으로 개발하는 것이구나 하고 대강 감을 잡을 수 있었다. 이 책은 정말 말 그대로 입문용이다. VR용 프로그램을 개발하고 싶은데 어디서부터 시작해야할지 감을 못 잡는 초심자들에게 알맞는 수준이다.

책은 크게 3부분으로 구성되어 있다. 첫번째 환경 설정, 두번째는 구글 카드보드용 게임 개발로 컨트롤러의 종류가 제한되어 비교적 간단한 게임 예제들이 수록되어 있다. 마지막 세번째는 VR 전용 기기인 삼성 기어와 HTC VIVE에 맞는 게임을 제작하는 예제이다.

마음같아서는 삼성 기어나 VIVE를 사서 같이 따라 만들고 싶었는데 예산의 문제도 있고, 한번 사서 다시 안 쓰면 어쩌지 하는 마음에 일단 저렴한 구글 카드보드로 시작해보기로 했다. 인터넷에서 구글 정식 제품은 아니더라도 천원 정도에 사진에 있는 것처럼 카드보드를 구매할 수 있다(배송비가 더 나오는 건 안 비밀).

책의 주요 독자가 입문자이기 때문에 환경설정부터 굉장히 친절하게 설명되어 있다. 특히 2장~4장까지 예제를 따라하는 부분은 글로만 설명된 것이 아니라 유니티 화면을 캡쳐해서 버튼이든 메뉴든 어디를 봐야하는지 표시를 해주고 있어서 처음 사용해보는 사용자도 쉽게 따라할 수 있을 것 같다. 책에 설명된대로 차근차근 따라하다보면 어느새 나의 첫 VR 게임이 완성되어 있을 것이다. 물론 기어나 VIVE를 활용한 예제는 조금 더 정교하고 멋진 느낌이지만 나의 지금 수준에서는 구글 카드보드 예제도 우와! 할만했다. 하지만 말했듯이 VR 게임 개발에 대해 깊이있는 내용을 원한다면 이 책은 유니티를 활용해서 간단한 게임을 구현하는 것을 목표로 하고 있기 때문에 다른 책이나 자료를 찾아보는 것을 권장한다.

VR 컨텐츠도 점점 다양해지고 아이디어만 있다면 런칭할 수 있는 환경도 많이 갖춰진 것 같아서 관심은 있지만 두려워서 아직 시도해보지 않았던 분들이 계시다면 이 책으로 VR 게임 개발에 발을 들여놓는 것은 어떨까.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
프로그래머를 위한 베이지안 with 파이썬
캐머런 데이비슨 필론 지음, 곽승주 옮김 / 길벗 / 2017년 11월
평점 :
절판


머신러닝이나 딥러닝, 인공지능을 공부하기 전에는 컴퓨터가 진짜 인간을 능가하는 것인가 하는 막연한 두려움이 있었고, 얕게 공부를 시작했을 때는 인공지능이라는 것도 결국은 계산 속도의 문제인가 싶었다. 그래서 사람들이 선형대수 같은 수학을 공부해야 한다고 하는 거구나, 같은 문제라도 어떻게 최적화하느냐에 따라 연산 속도가 달라질테니까 그 과정을 이해하기 위해서. 그런데 공부하는 사람들의 이야기를 들어보니 통계도 같이 공부를 해야한다고 했을 때는 사실 (무지한 마음에) 통계? 통계는 왜 필요하지 프로그래밍과 통계는 무슨 연관이 있을까 싶었다. 그런데 깊게는 아니지만 이것저것 강의를 들어보고 귀동냥을 해보니 통계가 왜 필요한지 어렴풋이나마 알 것 같다.

딥러닝이라는 것도 결국은 최적의 결과를 반환하는 어떤 연산 상태를 찾아가는 과정인데, 그 학습의 과정에서 사람은 무조건 손을 떼고 컴퓨터가 학습하는대로 따라가는 것이 아니다. 컴퓨터가 어떤 연산 결과를 내놓았을 때 이 결과가 어떤 의미를 가지고 있고, 얼마만큼의 정확도를 이 컴퓨터가 마음에 드는 결과를 내놓는다고 할 수 있을지에 대해서 결국은 사람이 특정한 기준을 정하고 그 기준에 따라 판단해야 하는데, 그 과정에서 필요한 것이 통계에 대한 지식이다.

특히, 모든 것이 불확실한 상황에서 결과에 대해 어떤 판단을 하려면 고전적인 방법으로 장기적으로 해당 사건이 발생할 빈도 수라고 확률을 정의하는 것은 큰 도움이 되지 않는다. 이 지점에서 베이지안 통계에 대한 개념이 딥러닝에도 적용된다.

베이지안 통계를 처음 배우는 것은 아니고, 학부에서 기초 통계학 수업에서 배우긴 했지만, 공부가 그렇듯 이론적으로는 이해했어도 실제 문제에서 그 지식을 어떻게 적용하는지 깨닫지 못하면 모두 부질없는 것인데, 나에게 베이지안이 그런 지식이었다. 딥러닝을 공부하면서 이미 베이지안 통계 개념이 이곳저곳에서 사용되고 있었는데 내가 알고 있는 지식과 전혀 연결되지 못하고 있었고, 베이지안이 어떤 의미를 가지는지 깨닫지 못하고 있었다.

그런 점에서 “프로그래머를 위한 베이지안 with 파이썬” 이 책은 베이지안 통계에 대한 기본적인 개념잡기는 물론이고, 실제 문제에서 이론이 어떻게 적용되는지 실례를 통해 설명하고 있어서 많은 도움이 되었다. 특히나 보통 통계학에서 사람들이 골머리를 썩는 이유가 개념을 이해하기 위해서 생각보다 많은 수학의 허들을 넘어야 한다는 점인데, 책에서는 개념을 수식보다는 파이썬 패키지를 활용한 코드로 설명하고 있어서 깊진 않지만 이해하고 넘어가기에는 훨씬 수월했다. 다만, 베이지안 통계에 대해 중점적으로 설명하고 있는 책이다보니 기본 지식에 대한 설명은 간단히 하고 넘어가고 있기 때문에 포아송 분포, 정규분포 등 기초 통계학에서 다루는 여러 분포에 대한 기본 지식은 먼저 공부를 하고 이 책을 보는 게 좋겠다.

PyMC나 MCMC에 대해서는 이 책 이전에 접해보지 않았던 것들이라 조금 더 공부해보아야겠지만 전반적으로 문제를 분석할 때 패키지를 어떤 식으로 사용하는지에 대한 감은 잡을 수 있었다. 책에서는 실제 있을 법한 문제를 정의하고 그 문제를 풀어가는 과정에서 베이지안 추론을 어떻게 사용하는지, PyMC 패키지나 MCMC를 어떻게 접목하는지 천천히 풀어가고 있기 때문에, 공부를 하면서 개념이 하늘에 둥둥 떠다니고 발이 땅에 닿지 않는다는 느낌이 든다면 책에서 소개하고 있는 예제를 같이 풀어가면 좋을 것 같다.

책이 생각처럼 쉽지만은 않다. 익숙하지 않으니 이해해야 하는 개념도 많이 있고 이 책을 넘어서 또 따로 공부해야 할 것들도 많이 있다. 하지만, 베이지안 추론에 대한 기본적인 개념을 이해하고 싶지만, 이론적인 설명보다 실용적인 예제를 선호하는 사람이라면 기본서로 채택하기에 무리없는 책인 것 같다.


댓글(0) 먼댓글(0) 좋아요(1)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
파이썬 데이터 분석 입문 - 엑셀 및 CSV 파일 처리부터 데이터베이스, 시각화, 통계분석, 자동화까지
클린턴 브라운리 지음, 한창진 외 옮김 / 한빛미디어 / 2017년 10월
평점 :
장바구니담기


데이터 분석이나 머신러닝을 공부하기 시작한지는 꽤 됐지만 본격적으로 깊게 공부하지는 못해서 입문서를 주로 보고 있었는데 같이 데이터 분석 책이더라도 책마다 중점적으로 다루는 내용이 조금씩 달라 결국 여러 권의 책을 다 가지고 있게 된다. 이 책도 기존에 내가 가지고 있던 책들과는 주제가 달라서 keep 해놔야 할 것 같다.




‘파이썬 데이터 분석 입문’이라는 책 제목만 보고 데이터 분석에 사용되는 알고리즘을 파이썬으로 구현하는 것을 중점적으로 설명한 책이려니 했는데, 이 책은 알고리즘 보다는 데이터 전처리에 대한 설명이 훨씬 자세히 되어있다.


9개 챕터 중에 무려 4개의 챕터가 CSV, 엑셀, DB 등의 형태로 있는 데이터를 파이썬 프로그램에 로딩하고 분석/계산하기 좋은 형태로 가공하는 것에 대해서 설명하고 있다. 사실 데이터 분석을 공부하게 되면 데이터 분석과 관련된 통계 지식이라든지, 사용하는 알고리즘을 학습하는 데에 시간/노력을 집중하게 되는데, Coursera 등의 MOOC 강의 구성을 참고해보면 Data Science 트랙에서 빠지지 않는 것이 데이터 처리에 대한 내용이다. 지루하고 쉬워 보여서 많은 사람들이 그냥 훑어보고 지나가는 내용이지만 실제로 프로젝트를 하거나 현업에 사용하려고 하면 가장 먼저 수행해야 하는 게 데이터 전처리이기 때문에 사실 가장 노하우가 필요하고, 많이 연습해 보아야 실력이 느는 부분이기도 하다.


어쨌든 4개의 챕터에서 데이터 로딩과 전처리에 대해서 설명하는데, 이 책에서 내용을 설명할 때 좋은 것 중 하나가 일반 파이썬 코드로 작성된 것과 Pandas 패키지를 사용할 때의 차이를 비교해서 설명한다는 것이다. 데이터 분석에서 주로 사용되는 파이썬 패키지에는 Numpy, Pandas 등이 있다는 것은 데이터 분석을 공부해본 사람들이면 익히 아는 내용이지만 왜 저 두 패키지가 많이 사용되는지에 대해서는 많이 고민해보지 않았을 것이다. 책에서는 Pandas를 쓸 때와 쓰지 않을 때의 코드를 비교하면서 쓰지 않았을 때 발생할 수 있는 복잡한 예외 처리를 Pandas를 사용하면 간단하게 해결할 수 있다. 합계나 평균처럼 간단한 통계치를 계산할 때도 Pandas를 사용하는 것이 훨씬 유용하다는 것을 차근차근히 설명해준다. 데이터 분석을 처음 공부하는 사람의 입장에서 비교해서 설명해주면 Pandas를 왜 사용해야 하는지, 데이터 처리를 할 때 어떤 점들을 고려해야 하는지 명확하게 알 수 있어서 도움이 많이 될 것 같다.


책의 중반부까지 데이터 전처리에 대해서 설명하고 그 다음부터는 데이터 시각화와 간단한 알고리즘 등이 설명되어 있다. 데이터 시각화는 간단히 matplotlib로 그래프 그리는 방법, 그래프의 종류, 그리고 자주 사용하는 다른 그래픽 패키지, seaborn, ggplot 등이 소개되었다. 알고리즘은 선형회귀, 로지스틱 회귀 등이 설명되어 있는데, 기본적인 통계 지식이 있는 것을 가정하고 작성된 내용이라서 자세한 내용은 다루지 않고 있다.


전체적으로 이 책은 입문서이긴 하지만 데이터 분석을 이제부터 공부해보려는 사람들에게는 적합하지 않은 것 같고, 대충 데이터 분석을 어떻게 하는지는 알겠는데, 인터넷에서 긁어모은 데이터를 가지고 분석을 어떻게 시작해야 할지 막막한 사람들, 아니면 데이터 전처리에 대한 내용을 인터넷에서 할 때마다 검색해서 찾기는 귀찮고 필요한 내용을 그때그때 찾아볼 책이 필요한 사람들에게 추천한다. 정독할만한 책은 아니고 정말 레퍼런스용으로 적당한 책인 것 같다.


댓글(0) 먼댓글(0) 좋아요(5)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
Hello Coding 그림으로 개념을 이해하는 알고리즘 Hello Coding
아디트야 바르가바 지음, 김도형 옮김 / 한빛미디어 / 2017년 4월
평점 :
장바구니담기


많은 친구들이 나에게 의외라고 하는 점 중 하나가 바로 내가 머리 쓰는 걸 정말 싫어한다는 것이다. 더 지니어스, 문제적 남자 같이 생각을 엄청 해서 문제를 해결해야 하는 지적 유희를 소재로 한 예능 프로는 정말 한 차례도 본 적이 없고, 그 흔한 방탈출 게임도 시도해본 적이 없다. 복잡한 문제를 제한 시간 내에 해결해야 하는 압박감과 그 골치아픔이 싫은 것이다.

이런 내가 프로그래밍 공부를 하면서 가장 힘들었던 점은, 이진법을 이해하는 것도 아니고 컴퓨터 작동 원리를 이해하는 것도 아니고, 바로 알고리즘 공부를 하는 것이었다. 알고리즘 얘기만 숨이 턱턱 막히는 알고리즘 울렁증이라고 얘기해야 하려나.

공부를 시도해보지 않았던 것은 아니다. 아주 가끔씩 알고리즘 공부를 해볼까? 마음이 들어 책을 펼쳐들면, 아주 작은 글씨로 빽빽히 적인 글과 코드 사이에서 정신을 잃고 이내 책을 덮어버린 것이 한두번이 아니다. 그 덕에 수학 1단원 집합과 명제 부분만 까맣게 닳았던 것처럼 내 알고리즘 책도 시간복잡도 설명 부분만 줄이 그어있고 아주 깨끗하다.


‘Hello Coding 그림으로 개념을 이해하는 알고리즘’ 이 책은 내가 처음으로 끝까지 읽어낸 첫번째 알고리즘 책이다. 제목부터가 왠지 쉽게 가르쳐줄 것 같은 느낌이 팍 오더니, 역시 책을 쓱 훑어보니까 큼지막한 글씨에 그림이 엄청 많아서 편한 마음으로 도전!할 수 있었다.

지금까지 봤던 알고리즘 책은 보통 처음에 알고리즘의 시간복잡도 표기법에 대해서 설명하고, 그 이후 각 알고리즘에 대해서 설명한다. 기본적으로 여러가지 정렬 알고리즘을 다루고, 그 다음에 brute force, 너비우선탐색/깊이우선탐색, DP 등등 유명한 알고리즘에 대해서 원리와 함께 코드를 보여주며 설명한다.


이 책도 기본적으로 이런 흐름을 벗어나지는 않는다. 처음 알고리즘을 공부할 때 기본적으로 이해하면 도움이 되는 이진 탐색, 빅O 표기법, 자료구조 등을 다루면서 내용을 시작한다. 책을 보면서 굉장히 마음에 들었던 것이 바로 이 첫 부분이었다.

사실 알고리즘 공부를 조금 하긴 했지만, 시간복잡도에 대해서 그냥 아, 이런 게 있나보다 하고 넘어가 버리고 A라는 알고리즘의 시간복잡도는 O(n)이야, B 알고리즘은 O(n^2)이야, X 알고리즘은 O(logN)이야 하는 설명을 특히, O(logN), O(nlogN)에 대해서 이해 못하고 넘어갔었는데, 어떤 알고리즘, 이진 탐색을 적용할 수 있는 알고리즘이 O(logN)을 따르는 이유를 드디어 이해할 수 있었다! 별 거 아닐 수도 있지만 개인적으로는 엄청난 깨달음이었다.

이후 책에서 다루는 정렬, 해시테이블, 너비우선탐색, DP 등등도 기본적으로 굉장히 차근차근히 친절하게 설명해준다. 각 알고리즘을 간단한 예제를 통해 독자와 함께 문제를 해결할 수 있는 알고리즘을 생각해내는 과정을 공유한다는 느낌이 들었다. 무엇이든 처음 배우는 사람에게 설명을 할 때는 이게 왜 이렇게 되는지 이유와 원리를 찬찬히 설명해주는 게 굉장히 중요한데, 알고리즘을 처음 배우는 사람들이라면 이 책을 통해서 충분히 감을 잡을 수 있을 것이라고 확신한다.

물론, 심화된 알고리즘 학습을 원하는 독자는 이 책을 선택하는 것이 좋지 않다. 말했듯 기본적으로 Target 독자가 알고리즘을 처음 공부해보려고 하는, 프로그래밍에 대한 지식이 많지 않은 사람이기 때문에 각 챕터의 내용이 알고리즘의 원리, 어떤 식으로 구현하는지, 어떤 경우에 해당 알고리즘을 사용하는 것이 좋을지에 대한 가이드 정도에 그친다. 다양한 알고리즘의 개념이 잡혀있고, 좀 더 심화된 학습을 원하는 독자는 다른 책을 찾아보시기를 권한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo