Korea Evangelist

Developer & Platform Evangelism, Microsoft Korea

  • Korea Evangelist

    앱 개발 모임 시즌4 에피소드 6

    • 0 Comments

    WP_20140724_21_31_17_Pro

    앱 개발 모임 시즌4의 6번째 모임 후기입니다. (지난 5번째 모임은 제가 출장 관계로 불참해서 후기를 올리지 못 했습니다.)

    원래는 2주 전에 모��을 하려고 했는데 MVP 행사와 겹치는 일정이 되어서 한달 만에 모임을 갖게 되었습니다. 앱 개발 모임에서 4명이 신규로 MVP가 되었고 기존 MVP 분들 중에도 참석하시는 분들이 있어서요.

    왼쪽부터 김영재 MVP, 이종인 MVP, 박문찬 MVP(유영천 MVP는 사진 누락)

    이번 모임은 4주 만에 하는 모임인데다 비도 오고 해서 출석율이 약간 낮았던 것 같습니다. 피자를 먹으면서 늦게 오시는 분들을 기다리며 각자 앱 개발도 하고 여러 가지 정보를 공유했습니다.

    예를 들면, 앱 아이콘을 만들어 주는 로고 메이커가 아쉽게도 윈폰8.1은 아직 지원하지 않아 아쉽다라던지, 윈폰8.1의 ListView에서 좌측 끝을 터치하면 나오는 선택 메뉴 기능 등을 공유했습니다.

    WP_20140724_21_31_24_Pro

    그리고 각자 진행 중인 앱 개발 프로젝트를 공유했습니다.

    DesignMe / 이종인님 – 현재 유니버설 앱 프로젝트로 스킨 개인화/언어 변경/화면 전환 등의 기능을 구현

    MoneyBook / 강한별님 – 기존에 윈폰8로 되있던 프로젝트를 윈폰8.1로 새롭게 구현. 가계부의 수입/지출 기능 및 기본 적인 UI 구현 완료

    WP_20140724_21_31_40_Pro    

    MarkPad / 김영재님 – 오픈소스 마크다운 에디터인 MarkPad를 수정하여 링크를 IE에서 오픈할 수 있도록 수정. 그 밖에 3D Printer WPF 앱 포팅 중

    ProjectD / 유영천님 – DirectX 기반에서 만든 3D MMORPG 게임을 윈폰으로 포팅 중. 게임 화면에 진입하여 UI 및 기본 조작 가능하도록 하고 게임 플레이 가능한 수준까지 성공

    ScreenShot Autocut / 박문찬님 – 기존에 업로드한 디아블로 스크린샷 자동 자르기 앱을 기능 추가 업데이트 중

    마지막으로 한가지 놀라운 소식인데 앱 개발 모임의 회원인 이준열님께서 앱 개발 컨테스트에 응모하여 윈도우8.1 개인부분에 선정되었다고 합니다. 시크릿 앨범 앱으로 수상을 하였고, 보상으로 미국에서 열리는 F1 포뮬러 경기를 보러 간다고 해요.

    image

    image

    윈도우 앱 개발을 열심히 하면 이런 일도 생긴답니다. 경사네요. (그나저나 다음 모임에서 한턱 쏘신다고 하니 꼭 참석해야 겠네요…)

  • Korea Evangelist

    앱 개발 모임 시즌4 에피소드4

    • 2 Comments

    10452360_771374619574226_559842894757059932_n

    앱 개발 모임 시즌4의 4번째 모임 후기입니다.

    앱 개발 모임이 현재 변화를 고민하고 있습니다. 이번 모임에서는 앞으로 앱 개발 모임을 어떻게 확대해 나가면 좋을지에 대한 토론을 했습니다

    새로 참가하는 분들이 매 모임에서 더 많은 것을 배워가고, 더 많은 사람들이 참여하기 위한 형식을 찾기 위해서요. 디자이너도 참여한다 던지 중급 개발자도 참여할 수 있는 방안을 고민 중인데, 좀 더 구체화가 되면 자세히 말씀 드릴게요. :)

    10366159_771374536240901_7141592659852127229_n

    토론을 하고 나서는 항상 그러하듯 개인 프로젝트 공유시간을 가졌습니다. 일단 제가 먼저 기획과 디자인에 도움이 될만한 정보를 공유 드렸어요.

    10291224_771374696240885_418874020254148038_n

    특히 PowerPoint+Visual Studio 조합에서 사용할 수 있는 Storyboarding이라는 기능을 기획할 때 사용할 수 있다고 소개시켜드렸는데 다들 좋아하시더라고요.

    다음으로는 지난 모임에 처음 참석하셨던 송형근님이 앞으로 만들고 싶은 게임 앱을 잠깐 소개해 주셨습니다.

    10462938_771374866240868_593256301865960022_n

    기존에 아이폰 용으로 만든 것이 있는데 이걸 윈폰용으로도 만들어 보고 싶다고요. 하지만 OpenGL을 지원하지 않아서 DirectX를 사용해야 할까 고민 중이라고 하네요. 저희 모임의 DirectX 장인 유영철 님이 계셔서 어려운 부분이 있어도 해결할 수 있지 않을까 싶어요.

    다음은 이종인님이 현재 진행 중인 DesignMe 신버전의 디자인 과정을 소개해 주셨습니다.

    WP_20140612_20_03_29_Pro

    Adobe의 InDesign 툴을 이용해서 디자인을 진행하는 과정이 신선했습니다. 개발 부분은 소셜 네트워크 인증을 붙이는 것을 진행하였는데 Windows Runtime API가 잘 되어 있어서 쉽게 할 수 있었다고 합니다.

    다음은 역시 신입 회원인 강한별님이 현재 제작 중(60% 개발)인 가계부 앱을 공유해 주셨습니다.

    WP_20140612_20_16_20_Pro

    현재 소프트웨어 공학 전공의 대학생이고 처음 윈폰 앱을 개발해 보고 있는데, 학교에서는 자바를 주로 가르치지만 본인은 C#과 윈폰이 적성에 맞는 것 같다고 하네요.

    마지막으로 DirectX 장인 유영천님이 직접 개발하신 3D MMORPG 엔진 기반의 게임을 유니버설 앱으로 포팅하고 있는 이야기를 들려주셨습니다.

    10411972_771374802907541_8234954560064438037_n

    게임 엔진도 직접 만들다 보니 포팅 해야 하는 dll이 무척 많아서 이 작업을 하는데 무려 3일이나 걸렸다고 합니다. 포팅 과정에서 렌더링을 제외하면 코드 수정이 많지는 않았고, 결과적으로 게임을 실행시키는데 성공해서 사용자 입력을 처리하는 부분만 해결하면 된다고 하네요. 사실, MMORPG 게임이라 윈폰에서 터치로 하기에는 불편하겠지만 개발자의 도전 정신으로 어떻게든 Windows와 Windows Phone 스토어에 꼭 올려 보는 것이 목표라고 해요. 참고로 이 프로젝트를 위���서 Nokia 1520 디바이스를 60여 만원을 주고 개인적으로 구입했다고 합니다. 대단한 열정이죠.

    이번 모임에서 발표하신 분들 중에 지난 주에 비해 가장 많은 발전이 있었던 유영천님과 이종인님께 유료앱을 구매할 수 있는 기프트 카드를 드리기로 했습니다.

    개인 프로젝트 공유 시간이 끝나고 소그룹 모임을 진행했습니다.

    텔레그램 소그룹은 저와 문찬 님만 참석을 하셔서 온라인에 공유한 것(프로토콜 문서 번역 / UI 구조 살펴보기)으로 대체하고 영천님과 국내 개발자의 DirectX 기피증에 대해서 잠깐 토론을 했네요.

    image

    점프스타트 소그룹은 지난 주에 전달한 자료의 숙제 검사(?)를 하고 새로운 실습자료를 전달했습니다. 50%의 참석자가 숙제를 마치셨다고 해요. 앱 개발 모임의 GitHub 그룹 저장소에 실습 자료가 실시간으로 공개되어 있으니 참고하세요.

    _989

    오늘은 비교적 일찍 9시 10분에 모임을 마치고 새로온 분들과 친해질 수 있는 치맥 뒷풀이를 진행했습니다. 앱 개발을 하면서 고민하는 여러 가지 이슈들로 의견을 나누는 즐거운 시간이었습니다.

    이번 후기는 여기서 마치겠습니다. 앱 개발 모임에 참여하시고 싶으신 분은 언제든지 환영입니다. 자세한 내용은 앱 개발 안내서를 참고하세요.

  • Korea Evangelist

    테크데이즈 미니 토요세미나 발표자이신 김희준님을 미리 만나 보았습니다.

    • 0 Comments

    오늘은 카카오에서 PC용 카카오톡 개발자로 근무하고 계신 김희준님을 만나 보았습니다.

    김명신: 안녕하세요. 오랜만에 뵙습니다. 모르시는 분들을 위해서 간단히 본인 소개를 부탁 드려도 될까요?

    김희준: 네, 저는 현재 카카오에서 PC 버전의 카카오톡헤이리북카페을 개발하고 있는 김희준이라고 합니다. 카카오에 합류한지는 6개월 정도 되었고요, 이전에는 마이크로소프트에서 핵심 개발자 지원 팀에 3년간 김명신 부장님과 같이 있었고, 그 이전에는 윈도우 Device Driver를 개발하는 회사에서 근무하였습니다. 2000년부터 개발을 시작했고, 중간에 학교에 다녀온 것을 제외하면 10년차 개발자라고 말씀드릴 수 있을 것 같네요.

    김명신: 무엇보다 이번 테크데이즈 미니 토요세미나에 모실 수 있게 되어서 영광입니다. C++11이다 C++14이다 하여 전 세계적으로 C++ 커뮤니티에서는 C++이라는 언어가 새롭게 조명되고 있음에도 불구하고 국내에서는 개발자를 위한 이렇다 할 자리가 없었는데, 테크데이즈 미니 토요세미나를 통해서 C++ 이야기를 전달할 수 있어서 얼마나 다행이지 모르겠습니다. 먼저 간단한 질문을 하나 드려 보고 싶습니다. 도대체 C++이라는 언어는 어떤 장점이 있을지요?

    김희준: 사실 C++을 사용하는 많은 개발자들이 동의하시겠지만 C++ 언어의 최고의 장점은 역시 성능입니다. 다른 언어에 비해서 컴퓨터와 가장 지근거리에 있는 언어이고, C++을 사용하였을 때 컴퓨팅 파워를 최대한으로 끌어 낼 수 있다는 것이 가장 매력적인 부분이라고 생각합니다. 최근 마이크로소프트가 주최하는 GoingNative라는 행사에서도 Hurb Sutter가 유사한 질문을 한적이 있었어요. 그 때도 역시 C++을 사용하였을 때 얻을 수 있는 최고의 장점은 Performance가 아니겠는가라는 대체적인 공감이 있었지요. 하지만 그 외에도 C++은 상당히 스펙트럼이 넓은 언어입니다. 국내에서는 주로 게임 분야에서 많이 사용되고 있는 것이 사실이지만 전세계적으로 살펴보면 게임뿐 아니라 의료, 공학, 엔터테인먼트, e-commerce 등 다양한 분야에서 C++ 언어가 사용됨을 알 수 있습니다. 그리고 최근 모바일 분야를 필두로한 플랫폼의 다양화가 IT분야의 큰 화두인데요, 역설적일지 모르겠으나 C++은 이처럼 다양한 플랫폼이 상존하는 상황에서 Portability를 고려할 때 최상의 언어입니다. 상용 플랫폼들 중에 C++을 지원하지 않은 플랫폼은 거의 없기 때문이지요. 게다가 최근 C++98/03에 머물러 있는 표준 규격이 C++11으로 완전히 재편 되었을 뿐 아니라 C++14 규격도 상당부문 표준화가 진척된 것으로 알고 있습니다. 기존에 C++ 언어가 가지는 단점 중에 하나로 다양한 라이브러리나 프레임워크 등의 부족을 꼽는 부분이 있었는데요, 최근 C++ 표준화 기구의 움직임을 보면 정말 다양한 라이브러리가 지원될 것으로 보입니다. 이렇게 되면 Cross Platform을 지원하는 가장 강력한 언어가 될 수 있으리라 봅니다.

    김명신: 일부 개발자들 사이에서는 C++ 언어는 배우기 어려운 언어다. 그리고 시대에 뒤쳐진 언어다라는 이야기가 있습니다. C++ 언어가 너무 복잡해서 그런 것은 아닐까요?

    김희준: C++은 매우 강력한 기능들을 갖추고 있고, 다양한 형태로 활용할 수 있기 때문에, 이런 부분이 잘못 비추어진 것은 아닐까 합니다. 게다가 C++의 문법이나 구현 방식들을 교묘하고 현학적으로 사용하는 경우가 간혹 있는데 이는 C++의 강력함을 과도하게 사용한 결과입니다. 실제로 C++ 언어의 규격을 설명하고 있는 문서의 분량은 Java나 C# 규격 문서와 거의 유사합니다. 규격 문서가 언어의 모든 내용을 정밀하게 나타내고 있음을 고려할 때, 다른 언어에 비해서 과도하게 복잡하다거나 사용하기 어렵다는 측면에서는 동의하기 어렵습니다. 물론 스크립트 언어에 비해서는 상대적으로 복잡해 보일 수 있겠으나, 활용도 측면에서 고려해 본다면 반드시 그런 것은 아니지요.

    김명신: 기존 C++언어에 비해서 C++11/14는 어떤 부분이 개선되거나 변경되었을까요?

    김희준: 워낙 많이 변해서 어떤 부분을 꼬집어 말씀 드리기에는 어려움이 있습니다. 개인적으로는 달라진 기능 모두가 다 중요한 것 같습니다. C++ 전문가들 사이에는 완전히 새로운 언어로 탈바꿈 하였다는 평가를 하기도 합니다. 저 또한 유사한 느낌을 많이 받습니다. 이전의 C++가 마치 C언어의 수퍼셋처럼 비추어졌다면 C++11이나 14이 지향하는 방향성은 이와는 전혀 다르다고 평가할 수 있을 것 같습니다.

    김명신: 국내에서는 특히나 게임 산업이 발달해서인지 C++ 개발자의 비중이 높은 편입니다. C++ 개발자로서 계속 C++만 하면 될까요? 아니면 여러 가지 다른 언어들도 같이 살피는 것이 좋을까요?

    이태리우피치희준: 저는 개인적으로 C++ 언어를 많이 쓰고, 좋아하는 언어이지만, JavaScript나 Python과 같은 언어도 비교적 즐겨 쓰는 편입니다. 이러한 스크립트 언어들을 익혀두면, 특정분야에서 상당한 생산성 향상 효과를 볼 수 있습니다. 특정 언어 하나를 고집하기 보다는 수행해야 하는 업무에 맞추어서 여러 언어들을 사용할 수 있다면 좋지 않을까 생각합니다.

    김명신: 그렇군요. 하지만 여러 언어들을 능통하게 잘 구현할 수 있다는 것은 쉽지 않은 일임에 분명한 것 같습니다. 계속해서 새로운 기술을 익혀야 하는 것이 개발자로서 주어진 숙명 같은 것은 아닐까 생각도 드는데요, 개발자가 가져야 하는 기본 소양이랄까 자질이나 능력 같은 것에는 어떤 것이 있을까요?

    김희준: 개발자에게 가장 중요한 것은 원리를 알고자 하는 호기심이 아닐까 합니다. 호기심이 없으면 깊이 있게 살펴볼 수 없고, 결국은 수박 겉핥기 식의 공부가 될 수 밖에 없습니다. 넓게 아는 것도 좋지만 개발자라면 기본적으로 깊이 있는 공부가 필수라고 생각하는데, 원리를 찾고자 하는 호기심 어린 시각이 없이는 깊이 있는 공부를 하기란 쉽지 않을 것 같습니다. 개인적으로 초보 개발자 분들에게는 디버깅을 깊이 있게 공부하라고 조언을 많이 하는 편입니다. 디버깅이라는 것이 단순히 버그를 찾고 수정하기 위한 절차일 뿐 아니라, 결국 코드의 동작원리를 규명하고 그것을 따라 갈 수 있는 가장 좋은 도구이기 때문입니다. 이를 통해서 하나를 깊이 있게 살펴보다 보면 다른 것들도 크게 다르지 않다는 기본적인 원리를 찾아내곤 하지요.

    김명신: C++ 코드를 접하다 보면 과도하게 복잡하게 작성된 코드들을 자주 보게 됩니다. 물론 말씀해 주신 것처럼 디버깅을 통해서 그 원리를 알고 따라갈 수는 있겠습니다만, 항상 그런 여유가 주어지는 것은 아닌 것 같아요. 개인적으로 선호하는 코드 작성 원리랄까 스타일 등이 있을까요?

    김희준: 그 점에 대해서는 저도 개발을 하면서 많이 바뀌었는데요, 처음 개발을 시작할 때에는 우습게도 어려운 코드가 좋다고 생각했습니다. 멋있게 보이기도 하였고요. 하지만 시간이 지나면서 이런 시각은 상당히 많이 바뀌었습니다. 지금 생각에는 “자가설명적(self-describing) 코드”를 작성할 수 있다면 좋지 않을까 생각합니다. 추가적인 문서가 없이도 코드만 살펴보아도 코드의 작성 의도가 한눈에 읽히는 그런 코드가 좋은 것 같아요. 물론 이렇게 작성하는 것이 쉬운 것은 아니겠지요. 말을 잘 하는 사람이란, 쉬운 단어로 정확히 내용을 전달하는 사람이라 하더군요. 저는 소스 코드 또한 그래야 한다고 생각합니다. 현학적인 코드 보다는 쉬운 코드가 훨씬 더 낫다고 생각합니다.

    김명신: 쉬운 코드가 좋다라는 의견에는 저도 상당부문 동의하는 부분입니다. 하지만 실제로 다양한 분야의 개발자 분들을 만나 보면, IT의 활용도만큼이나 개발 자체를 바라보는 시각도 다양한 것 같습니다. 국내 개발자 분들에게 전하고 싶은 말씀이 있으실까요?

    김희준: 저도 개발을 바라보는 다양한 시각이 있다는 것을 알고 있습니다. 실제로 최근에 어떤 모임에 참가하여 중견 개발자분이 하시는 이야기를 듣고 깜짝 놀란적이 있는데요. 코드는 지금 당장 돌아갈 수 있도록 짜면 그만이다라고 말씀하시더라고요. 저는 이러한 시각에는 동의할 수 없습니다. 국내 솔루션들이 대부분 버전 1.0이 나오고는 발전하는 못하는 이유가 당면한 문제 해결을 위해서 단기적인 시각으로 문제를 바라보기 때문이 아닐까 합니다. 문제 해결의 방법은 상당히 다양할 수 있기 때문에, 여러 가능성을 열어두고, 장/단기1적인 대응 방안을 비교 분석하여 올바른 방향성을 모색해야 한다고 생각합니다. 단기적인 처방만으로는 발전을 도모하기 어렵다고 생각합니다.

    김명신: 오늘 말씀 감사합니다. 인터뷰를 하다 보니, 발표하실 세션이 더욱 기대가 되는군요.

    김희준: 제 세션에서는 C++11의 새로운 규격을 설명하기 보다는, 그러한 규격을 어떻게 활용할 수 있는가에 대한 실용적인 측면을 다루고자 합니다. 아직 준비가 많이 부족합니다. 열심히 준비해야 할 것 같습니다.

    김명신: 감사합니다. 수고 많으셨습니다.

    테크데이즈 미니 토요세미나 안내

  • Korea Evangelist

    앱 개발 모임 시즌4 에피소드 3

    • 0 Comments

    10341720_763014493743572_8683753348026380742_n

    앱 개발 모임의 시즌4 3번째 모임을 진행했습니다. 앞으로는 방송이나 드라마에서 흔히 사용하는 시즌/에피소드로 구분하여 후기를 남겨볼까 합니다.

    이번 모임은 꽤 많은 18명이 참석했습니다. 새로 오신 분도 3분이 있었고, 야근 때문에 못 오신다고 하셨던 분들도 4~5분 계셨는데도 많은 분이 참석하셨네요.

    10345809_763036537074701_3266975260189169001_n

    이번 모임 부터는 아래와 같은 시간표로 진행을 했습니다.

    7:00 ~ 7:30 네트워킹, 신규회원 소개, 모임 소식

    7:30 ~ 8:30 저녁식사 & 개인 프로젝트 공유

    8:30 ~ 9:30 소그룹 미팅

    10365852_763015263743495_5876254591513196232_n

    시즌4가 시작한지 벌써 1개월 반이 지났는데, 언제까지 시즌4를 할 것인가를 정했습니다. 기존에 2~3개월은 앱 개발하기에 너무 촉박해서 앞으로는 4개월씩 끊어서 진행하기로 했습니다. 또한, 시즌 사이에 새로운 앱을 기획하고 새 시즌을 준비하는 시간이 필요해서 최대 2개월 정도는 프리 시즌을 진행하기로 했습니다.

    프리 시즌 시즌4 프리 시즌 시즌5
    2개월 4개월 2개월 4개월

    아직 시즌4에 어떤 프로그램을 진행할지 정하지 못 해서 일단은 정식 시즌을 2~4주 후에 진행하기로 했습니다. 프리 시즌 기간에도 격주로 진행하는 정기 모임은 계속 진행하고요.

    10363744_763015517076803_1573402402896241432_n

    개인 프로젝트 공유 시간에는 현재 개발 중인 앱들의 진척 상황을 공유 했습니다. 문찬님은 디자이너 한나님과 Screenshot AutoCut의 다음 업데이트를 준비 중인데 Share/폴더 등의 기능을 추가하신 것을 보여주셨습니다.

    10333569_763033073741714_1688360647816670750_o

    종인님은 Design Me ver.2 개발에 착수했고, 영천님은 ProjectD의 윈폰 포팅을 계획 중이라고 합니다. 윈도우의 경우 키보드/마우스를 동시에 지원해야 하는 요구사항이 없어졌는데 이번 모임에서 알게 되서 다시 도전해 보실 것 같아요. 개인적으로 필요해서 개발 중이신 원드라이브 미디어 스트리밍 앱인 OneDrvPlayer도 조만간 출시될 것 같습니다.

    10329306_763015417076813_5715035471858283791_n 

    새로 오신 한별님은 MoneyBook이라는 윈폰용 가계부 앱이 60% 진행됐다고 공유해주셨고, 또 다른 가계부 앱을 개발 중이신 윤진님도 Pisa라는 프로젝트의 개발이 완료되어 디자이너에게 작업 요청을 했다고 했습니다. 영재님은 라이브보드의 네트워크 버전과 Markdown 에디터를 만들려고 준비 중이라고 합니다.

    10325521_763015520410136_2509324819622457265_n

    개인 프로젝트 공유는 못 했지만 참가하신 분들이 꽤 많아서 앞으로 각자 진행할 앱들이 결정되면 좀 더 많은 공유가 가능할 것 같습니다. ^^

    이후에는 소그룹 미팅을 진행했습니다. 새로 윈도우/윈도우폰 앱 개발을 공부하시는 분들은 JumpStart 소그룹으로, 공동 오픈 소스 프로젝트를 진행해보고자 하시는 분들은 Telegram 소그룹으로 나누어서 진행했습니다.

    10380240_763034790408209_3638970948638969479_o

    JumpStart 소그룹은 인기가 많아서 1/2 이상의 분들이 참가 중이고, 친절한 최한홍 에반젤리스트가 직접 작성한 튜토리얼 문서를 가지고 진행하고 있어요. GitHub에 공유가 되고 있기 때문에 누구나 다운받아서 자습이 가능합니다.

    10363455_763035757074779_604143216888689233_o

    Telegram 소그룹은 윈폰용 오픈소스 클라이언트인 Kilogram을 분석하는 단계에 있습니다. 다음 모임까지 프로토콜과 앱 구조를 분석해서 공유하기로 했습니다.

    10150663_763015407076814_8217633766075006745_n

    그 밖에 어느 소그룹에도 속하지 않은 분들도 조용한 방에서 각자의 프로젝트를 진행하는 뜻깊은(?) 시간을 가졌습니다.

    다음 모임은 6월 13일 목요일 저녁 7시에 진행될 예정입니다. 이번 후기는 여기까지 마치겠습니다.

    앱 개발 모임에 참석을 원하시는 분은 안내서를 참고하세요. 현재 많은 앱을 개발하셨던 경험 있는 앱 개발자 분들이 앱 개발 모임에서 여러분을 기다리고 있습니다. ^^

  • Korea Evangelist

    [Build 2014] 마이크로소프트의 개방성과 상호운용성

    • 0 Comments

    지난 4월2일부터 4월4일까지 3일간 샌프란시스코에서는 빌드(Build) 2014라는 마이크로소프트의 개발자 컨퍼런스가 개최되었습니다. 빌드는 2011년부터 매해 마이크로소프트의 주요 제품과 더불어 개발자를 위한 미래전략을 소개하고, 개발자들을 위한 백여 개 이상의 기술 세션으로 구성되는데 올해에는 그 어느 때보다 풍성하고 파격적인 내용들로 가득 채워졌습니다. 본고에서는 이번 빌드에서 소개된 다채로운 내용 중 마이크로소프트의 개방성과 상호운용성에 대한 내용을 중심으로 살펴볼까 합니다.

    마이크로소프트의 오픈 소스에 대한 기본적인 시각은 모든 산업 전반에 걸쳐 다양한 고객과 파트너들이 오픈 소스를 활용함으로써 개발자와 파트너 생태계를 더욱더 풍성하고 안정적으로 만들 수 있다는 것입니다.

    마이크로소프트는 All-In-One Code Framework, Silverlight, OData SDK for PHP, .NET Micro Framework Development, PHP 5.3 on Windows 등 셀 수 없을 만큼 다양한 프로젝트를 오픈 소스의 형태로 개발하고 있습니다. 실제로 Codeplex.com과 같은 사이트를 통해서 10,000개의 서버 관련 소스, 1,400개의 SharePoint 소스, 1,500개 이상의 SQL 관련 소스, 3,000개 이상의 윈도우 관련 소스가 오픈 소스의 형태로 개발되고 있습니다. 마이크로소프트는 또한 OSS와의 상호 운용을 위해서 400대 이상의 서버와, 340개 이상의 서버에 리눅스를 보유한 소프트웨어 랩을 운용하고 있으며, 다양한 OSS 관련 연구와 테스트에 활용하고 있습니다.

    Microsoft Azure와 같은 클라우드 플랫폼은 상호 운용성이 그 본질이라고 할 수 있을 만큼 중요하다고 하겠습니다. Azure 플랫폼은 Java, PHP, Node, Python, Ruby, .NET 등 중요 개발 언어를 모두 지원하고 있으며, 윈도우뿐 아니라, Canonical UBUNTU, CENTOS by Open Logic, Oracle Linux, SUSE Linux, openSUSE에 이르기 까지 다양한 리눅스 배포판을 지원하고 있으며, Azure와의 모든 통신 방식은 모두 Restful API on HTTP(S)를 근간으로 하고 있습니다.

    Microsoft Open Specification을 통해서 마이크로소프트의 주요 제품과의 상호 운용을 위한 규격문서를 공개하였고, OSS와의 상호 운용성을 위해서 2009년부터 Microsoft Open Technologies를 통해서 Cocos2d-X, AMQP, ORTC, MongoDB, Python Tools for Visual Studio, Azure Toolkit for Eclipse 등 수많은 제품을 개발하고 있기도 합니다.

    지난 수년간 개방과 상호 운용성의 관점에서 마이크로소프트가 진행해 왔던 다양한 성과와 더불어 이번 빌드를 통해서도 파격적이라고 할만큼의 놀라운 발표가 여럿 포함되었습니다.

    먼저 Windows Library for JavaScript(WinJS)가 Apache 2.0 라이선스를 준수하는 형태로 GitHub를 통해서 공개되었습니다. 이를 통해서 개발자들은 기존의 소스 코드를 살펴보고, 다양한 피드백을 제공 할 수 있을 뿐 아니라, 직접 개발에 참여할 수도 있게 되었습니다. WinJS는 최초에는 윈도우 8.x 에서 HTML/JavaScript를 이용하여 스토어 앱을 개발할 수 있도록 해 주는 라이브러리로 개발이 시작되었으나, 최근 WinJS Phone 2.1의 출시로 윈도우 폰 8.1용 앱을 개발할 수 있도록 개선되었을 뿐 아니라, 추후 파이어폭스, iOS, 안드로이드를 포함하는 다양한 디바이스와 브라우저에서 수행되는 웹앱과 사이트를 개발할 때에도 활용할 수 있도록 대폭 수정이 이루어졌습니다. 실제로 Github 사이트를 통해서 WinJS의 방향성과 로드맵을 공개하고 있습니다.

    clip_image002

    <WinJS 로드맵>

    더불어 실제로 웹앱과 사이트를 개발할 때 WinJS가 제공하는 풍부한 컨트롤들을 어떻게 활용할 수 있는지를 살펴볼 수 있는 사이트(http://try.buildwinjs.com/)도 오픈 하였습니다. 이제 WinJS를 이용하면 ListView, Hub, Pivot등을 포함하는 수십여종의 풍부한 사용자 컨트롤들을 크로스 브라우징 환경에서도 활용할 수 있을 뿐 아니라, WinJS가 제공하는 Promises, Data Binding, Scheduler, Fragments, Declarative controls의 기능도 활용할 수 있게 될 것입니다.

    clip_image004

    <Try WinJS 사이트>

    앞으로 우리가 익히 알고 있는 AngularJS, KnockoutJS, EmberJS 등과 함께 WinJS가 같이 활용될 수 있을 것으로 생각하고, 실제로 Angular와 WinJS, Knockout과 WinJS를 함께 사용하는 방법을 개별 세션을 통해서 시연을 하기도 하였습니다.

    clip_image006

    <미래: Modular and composable>

    <!DOCTYPE html>

    <html xmlns:ng="http://angularjs.org" id="ng-app" ng-app="app" ng-controller="AppController">

    <head>

    <meta charset="utf-8" />

    <title>Angular-WinJS</title>

    <!-- WinJS references omitted -->

    <script src="http://blogs.msdn.com/js/lib/jquery.js"></script>

    <script src="http://blogs.msdn.com/js/lib/angular.js"></script>

    <script src="http://blogs.msdn.com/js/lib/angular-winjs.js"></script>

    <!-- Project references omitted -->

    </head>

    <body>

    Hello, {{name}}. Your current rating is: {{rating}}.<br />

    <input type="text" ng-model="rating" /><br />

    <win-rating max-rating="5" user-rating="rating"></win-rating>

    </body>

    </html>

    <Angular-WinJS>

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="utf-8" />

    <title>Knockout-WinJS</title>

    <!-- WinJS references omitted -->

    <script src="http://blogs.msdn.com/js/knockout-3.0.0.debug.js"></script>

    <script src="http://blogs.msdn.com/js/knockout-winjs.js"></script>

    <!-- Project references omitted -->

    </head>

    <body>

    Hello, <span data-bind="text: name"></span>.

    Your current rating is: <span data-bind="text: userRating"></span>.<br />

    <input type="text" data-bind="value: userRating, valueUpdate: 'afterkeydown'" /><br />

    <div data-bind="winRating: {userRating: userRating}"></div>

    </body>

    </html>

    <Knockout-WinJS>

    다음으로 .NET compiler platform(“Roslyn”)의 오픈 소스화를 빼 놓을 수 없겠습니다. Roslyn이라고 널리 알려진 .NET compiler platform은 마이크로소프트의 차세대 C#, Visual Basic 컴파일러이면서 동시에 컴파일 과정에서 생성되는 다양한 정보에 접근할 수 있는 Compiler API를 제공하는 플랫폼입니다. 주요 개발 언어인 C#, Visual Basic 컴파일러의 차기 버전을 오픈 소스화 하였다는 것만으로도 마이크로소프트가 오픈 소스를 바라보는 시각을 단적으로 이해할 수 있으리라 생각합니다. 또한 .NET compiler platform은 Syntax Tree API, Symbol API, Binding And Flow Analysis API 등과 같은 Compiler API를 제공하여 컴파일러가 컴파일 과정에서 내부적으로 생성하는 산출물에 대한 접근성을 제공하여 새롭고 강력한 정적 분석기, 구문 분석기, 리팩토링 도구들을 만들어 낼 수 있는 토대를 제공한다는데 의의가 있겠습니다. 실제로 이 같은 Compiler API를 이용하여 Enhanced source view(http://source.roslyn.codeplex.com/)와 같은 도구를 개발하여 공개하기도 하였습니다.

    마이크로소프트는 이번 빌드 행사를 통해서 .NET Foundation이라는 재단의 설립도 발표하였습니다 .NET Foundation은 마이크로소프트와 Xamarin이 투자한 24개의 .NET 기반 오픈 소스를 자산으로 Apache 2.0 라이선스를 기반으로 재단을 운영할 것임을 발표하였습니다. 24개의 오픈 소스에는 .NET Compiler Platform과 주요 ASP.NET API, Entity framework, Azure .NET SDK, LINQ to Hive 등이 포함되어 있습니다.

    clip_image008

    마이크로소프트의 개방 및 상호 운용성에 대한 노력은 마이크로소프트의 제품과 플랫폼 전반에 걸쳐 잘 녹아 있습니다. 표준을 준수하고, 표준을 정의하고, 또한 표준을 위한 선도적인 기술연구는 끊임없이 지속되고 있으며 실제로 개방형 기술을 토대로 한 제품의 개발은 마이크로소프트 비즈니스의 핵심이라고 해도 과언이 아닙니다. 지난 수년간 마이크로소프트는 ANSI, ECMA, GSMA, IEEE, IETF, ISO, IASIS, W3C 등 150개가 넘는 표준 제정 기관과 350개의 워킹그룹에 참여하여 산업 표준을 개발하고 준수하기 위해서 노력하고 있기도 합니다.

    이번 빌드 2014를 통하여 마이크로소프트와 오픈 소스는 대응점에 있는 것이 아니라 커뮤니티를 통해서 상호 작용하면서 발전하고 있으며, 마이크로소프트의 개방과 상호 운용을 위한 노력이 단기간의 비즈니스의 이득을 취하려는 것이 아니라, 개발자의 생태계의 전체적인 발전을 도모하고 있음을 보여주는 뜻있는 자리가 아니었나 생각합니다.

    참고

    Microsoft Open Specifications

    http://www.microsoft.com/openspecifications/en/us/default.aspx

    Microsoft Open Technologies

    http://msopentech.com/

    Endorsed distributions of Linux in Azure

    http://azure.microsoft.com/en-us/documentation/articles/linux-endorsed-distributions/

    Bringing WinJS cross-platform and open source

    http://blogs.windows.com/windows/b/buildingapps/archive/2014/04/02/bringing-winjs-cross-platform-and-open-source.aspx

    winjs/winjs · GitHub

    https://github.com/winjs/winjs/

    Roadmap · winjs/winjs Wiki · GitHub

    https://github.com/winjs/winjs/wiki/Roadmap

    Try WinJS

    http://try.buildwinjs.com/

    What's New in WinJS: The Road Ahead | Build 2014 | Channel 9

    http://channel9.msdn.com/Events/Build/2014/2-506

    .NET Compiler Platform ("Roslyn")

    http://roslyn.codeplex.com/

    Enhanced source view

    http://source.roslyn.codeplex.com/

    .Net Foundation | Open Source Foundation for the .NET Community

    http://www.dotnetfoundation.org/

Page 1 of 122 (606 items) 12345»