97
한양대학교 셔틀시스템 셔틀콕 개발기 나윤환| 한양대학교 ERICA 컴퓨터공학

한양대학교 셔틀시스템 셔틀콕 개발기

Embed Size (px)

Citation preview

Page 1: 한양대학교 셔틀시스템 셔틀콕 개발기

한양대학교셔틀시스템셔틀콕개발기

나윤환 | 한양대학교 ERICA 컴퓨터공학

Page 2: 한양대학교 셔틀시스템 셔틀콕 개발기

발표자소개

나윤환 | 디발자혹은개자이너

한양대학교 ERICA 컴퓨터공학 14학번디자인공학융합전공

Microsoft Student Partner삼성소프트웨어멤버십 25-2기 수료Google Developer Group 천안 & 아산전대표

fb.com/nayunhwan

instagram.com/nayunhwan

[email protected]

Page 3: 한양대학교 셔틀시스템 셔틀콕 개발기

셔틀콕 | 셔틀을콕하다

아직도몰라?셔틀콕에다있어한양대학교 ERICA 셔틀버스시간표, 식단, 날씨,페달로, 페이스북등다양한정보를한곳에서확인해봐

한양대학교홍보책자기재한양대학교 ERICA 점유율 30% (Android 기준)일주일평균 Request 100,000건

Page 4: 한양대학교 셔틀시스템 셔틀콕 개발기

어떻게만들게되었나요?

Page 5: 한양대학교 셔틀시스템 셔틀콕 개발기

불편해서

Page 6: 한양대학교 셔틀시스템 셔틀콕 개발기

언제만들었나요?

Page 7: 한양대학교 셔틀시스템 셔틀콕 개발기

대학교 1학년신입생

Page 8: 한양대학교 셔틀시스템 셔틀콕 개발기

만든기간은?

Page 9: 한양대학교 셔틀시스템 셔틀콕 개발기

일주일쯤..?

Page 10: 한양대학교 셔틀시스템 셔틀콕 개발기

초보개발자의삽질이야기

지금시작합니다

Page 11: 한양대학교 셔틀시스템 셔틀콕 개발기

셔틀콕 ver 1.0진짜내소프트웨어를만들다

Page 12: 한양대학교 셔틀시스템 셔틀콕 개발기

Android? iOS?

JavaWindows, Linux, Mac 개발가능개발자등록비용 USD 25.00

내가안드로이드유저

Swift, Object – CMac에서만개발가능

개발자등록비용연 USD 99.00아이폰없음

Page 13: 한양대학교 셔틀시스템 셔틀콕 개발기

Android Application 시작

Hello Android Application

Page 14: 한양대학교 셔틀시스템 셔틀콕 개발기

아.. 뭐부터해야하지?

일단뭐든지만들고보자

Android Application 시작

Page 15: 한양대학교 셔틀시스템 셔틀콕 개발기

No Server No Database No 개념

Android Application 시작

Page 16: 한양대학교 셔틀시스템 셔틀콕 개발기

Splash View 날짜선택 View

요일선택 View 시간표 View

Android Application 시작

Page 17: 한양대학교 셔틀시스템 셔틀콕 개발기

이제시간표를넣어야하는데..

아맞아학교에서배열을배웠지!

Android Application 시작

Page 18: 한양대학교 셔틀시스템 셔틀콕 개발기
Page 19: 한양대학교 셔틀시스템 셔틀콕 개발기

이러라고알려준게아닐텐데..

Page 20: 한양대학교 셔틀시스템 셔틀콕 개발기

현재기기의시각가져오기현재시각에서시간배열중가장가까운

시간뺀시간출력

새로고침버튼이눌렸을때

셔틀콕로직

Page 21: 한양대학교 셔틀시스템 셔틀콕 개발기

시간표가변경되었을때대책은?

아이폰사용자들은?

셔틀콕문제점

Page 22: 한양대학교 셔틀시스템 셔틀콕 개발기

셔틀콕 ver 2.0소프트웨어유지보수의시작

Page 23: 한양대학교 셔틀시스템 셔틀콕 개발기

Google I/O 2014

셔틀콕의터닝포인트

2014년 6월 25일

Page 24: 한양대학교 셔틀시스템 셔틀콕 개발기

Material Design

Google의 새로운디자인가이드공개

셔틀콕의터닝포인트

Page 25: 한양대학교 셔틀시스템 셔틀콕 개발기

오.. 내 셔틀콕도저렇게이쁘게만들고싶다

그런데어떻게저렇게만들지?

셔틀콕의터닝포인트

Page 26: 한양대학교 셔틀시스템 셔틀콕 개발기

처음으로라이브러리사용

안드로이드 5.0 미만의디바이스에서도Material Design을사용하기위해서는 Android Design Support Library를 사용해야함

셔틀콕의터닝포인트

Page 27: 한양대학교 셔틀시스템 셔틀콕 개발기

Android Design Support Library이용하여Material Design 적용

WebView

Material Design 적용하기

Page 28: 한양대학교 셔틀시스템 셔틀콕 개발기

Library? Gradle? 넌 누구니..?

Android Studio와 Gradle

Page 29: 한양대학교 셔틀시스템 셔틀콕 개발기

Good Bye, Eclipse!Hello, Android Studio!

Android Studio와 Gradle

Page 30: 한양대학교 셔틀시스템 셔틀콕 개발기

편집과빌드둘다내가할거야

Android Studio와 Gradle

Page 31: 한양대학교 셔틀시스템 셔틀콕 개발기

난편집을맡을게 그럼난빌드를할게

Android Studio와 Gradle

Page 32: 한양대학교 셔틀시스템 셔틀콕 개발기

어? Android Design Support Library가 없네?내가자동으로다운받아놔야지

dependencies {compile 'com.android.support:appcompat-v7:+’

}

Android Studio와 Gradle

Page 33: 한양대학교 셔틀시스템 셔틀콕 개발기

하이브리드의첫걸음

Hybrid Application

Page 34: 한양대학교 셔틀시스템 셔틀콕 개발기

Cross Platform

Hybrid Application

Page 35: 한양대학교 셔틀시스템 셔틀콕 개발기

Hybrid Application

Web Hosting

Page 36: 한양대학교 셔틀시스템 셔틀콕 개발기

긴 DOM 형식의 javascript를 짧고간결하게사용할수있도록도와주는라이브러리

Hybrid Application | jQuery

Page 37: 한양대학교 셔틀시스템 셔틀콕 개발기

document.getElementById("divId"); document.getElementsByClassName("className"); document.getElementsByTagName("input");

jQuery 적용전

$("#divId");$(".className");$("input");

jQuery 적용후

Hybrid Application | jQuery

Page 38: 한양대학교 셔틀시스템 셔틀콕 개발기

Cross Origin Resource Sharing

CORS

Hybrid Application | CORS 문제

Page 39: 한양대학교 셔틀시스템 셔틀콕 개발기

http://domainA/1.html

http://domainA/2.html

http://domainB/1.html참조불가

Hybrid Application | CORS 문제

Page 40: 한양대학교 셔틀시스템 셔틀콕 개발기

외부 API를 사용하지못함

몇몇의외부 API들을사용할수있었지만,Server에서 CORS를허용하지않으면, Client에서처리할수가없음

Hybrid Application | CORS 문제

서버에서허용하지않으면

Page 41: 한양대학교 셔틀시스템 셔틀콕 개발기

근데.. 어떻게만들어야하지?

서버를만들어야겠다

Hybrid Application | CORS 문제

Page 42: 한양대학교 셔틀시스템 셔틀콕 개발기

셔틀콕 ver 3.0여러 Framework로 날개를달다

Page 43: 한양대학교 셔틀시스템 셔틀콕 개발기

서버만들기 | 무엇을골라야할까

Page 44: 한양대학교 셔틀시스템 셔틀콕 개발기

Single thread, 매우빠른속도,CPU 대기시간최소화, CPU 부하가적음.. 등

서버만들기 | Node js

Page 45: 한양대학교 셔틀시스템 셔틀콕 개발기

Javascript로 서버를개발할수있다

서버만들기 | Node js

Page 46: 한양대학교 셔틀시스템 셔틀콕 개발기

5초 안에서버를만들수있다니..

Node.js + Express = ♡

서버만들기 | Node js

Page 47: 한양대학교 셔틀시스템 셔틀콕 개발기

$ express ServerName -e$ cd ServerName$ npm install$ npm start

서버준비끝, 참 쉽쥬?

서버만들기 | Node js

Page 48: 한양대학교 셔틀시스템 셔틀콕 개발기

jade? ejs? 너넨또뭐니..?

jade VS ejs

서버만들기 | jade vs ejs

Page 49: 한양대학교 셔틀시스템 셔틀콕 개발기

서버만들기 | jade vs ejs

Page 50: 한양대학교 셔틀시스템 셔틀콕 개발기

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html><head>

<title>Hello jade</title><link rel="stylesheet" href="/stylesheets/style.css" />

</head><body>

<h1>Hello jade</h1><div>

<p>Welcome to jade</p></div><script src="script.js"></script>

</body> </html>

서버만들기 | jade vs ejs

Page 51: 한양대학교 셔틀시스템 셔틀콕 개발기

취향존중

처리속도는 jade가 더빠르다고하나,새로운걸익히기싫다면 ejs

서버 만들기 | jade vs ejs

Page 52: 한양대학교 셔틀시스템 셔틀콕 개발기

Node js의 모듈을사용해보자

간단하게 Facebook Feed를 가져올수있는 ’fb’모듈과HTML을 Parse할 수있는 ‘cheerio’ 모듈을간단히알아보자

Node js 모듈사용하기

Page 53: 한양대학교 셔틀시스템 셔틀콕 개발기

Node js 모듈사용하기 | 모듈설치방법

Node js 모듈들은 npm을통해서간단하게설치가능

$ npm install {Module Name}

Page 54: 한양대학교 셔틀시스템 셔틀콕 개발기

Node js의 fb 모듈을이용해 Facebook Graph API를 사용하면자신이원하는 Page의 feed를 쉽게실시간으로받아올수있다

Node js 모듈사용하기 | ‘fb’ module

Page 55: 한양대학교 셔틀시스템 셔틀콕 개발기

Facebook Graph API 사용하기

fb module을 이용하여Access Token 인증

Feed를 가져오기원하는 Page ID값과field값을 fb module을 통해요청

Json으로 Data 리턴

Node js 모듈사용하기 | ‘fb’ module

Page 56: 한양대학교 셔틀시스템 셔틀콕 개발기

cheerio 모듈

cheerio 모듈을이용하면 HTML page를 파싱할때jquery와 비슷한방식으로값을파싱할수있다.

Node js 모듈사용하기 | ‘cheerio’ module

Page 57: 한양대학교 셔틀시스템 셔틀콕 개발기

Node js 모듈사용하기 | ‘cheerio’ module

Page 58: 한양대학교 셔틀시스템 셔틀콕 개발기

주의

이후슬라이드에는조금어려운내용이들어있어,더 집중해서들어주시길바랍니다.

Page 59: 한양대학교 셔틀시스템 셔틀콕 개발기

Node js는 비동기방식을채택

따라서 function이 먼저시작되었다고, 다음 function을 처리할때값이나와있다는보장이없다.

Node js 프로그래밍 | 비동기프로그래밍

Page 60: 한양대학교 셔틀시스템 셔틀콕 개발기

너는또뭐야..?

비동기프로그래밍?

Node js 프로그래밍 | 비동기프로그래밍

Page 61: 한양대학교 셔틀시스템 셔틀콕 개발기

요청처리 1

요청처리 2

동기방식

요청처리 1

요청처리 2

비동기방식

Node js 프로그래밍 | 비동기프로그래밍

Page 62: 한양대학교 셔틀시스템 셔틀콕 개발기

Node js Event Loop 살펴보기

2. Next

Main Event Loop

요청 1 요청 2 요청 3 요청 N

1. Event 3. Callback

Node js 프로그래밍 | 비동기프로그래밍

Page 63: 한양대학교 셔틀시스템 셔틀콕 개발기

동기식프로그래밍코드

Node js 프로그래밍 | 비동기프로그래밍

Page 64: 한양대학교 셔틀시스템 셔틀콕 개발기

비동기식프로그래밍코드

Node js 프로그래밍 | 비동기프로그래밍

Page 65: 한양대학교 셔틀시스템 셔틀콕 개발기

내가매일 24시간켜놓고있어야하나?

서버는대충만들었는데이걸어떻게쓰지?

클라우드

Page 66: 한양대학교 셔틀시스템 셔틀콕 개발기

클라우드

무엇이떠오르시나요?

Page 67: 한양대학교 셔틀시스템 셔틀콕 개발기

클라우드

Page 68: 한양대학교 셔틀시스템 셔틀콕 개발기

클라우드

SaaS PaaS IaaS

Page 69: 한양대학교 셔틀시스템 셔틀콕 개발기

SaaS소비자

PaaS프랜차이즈

IaaS건물주

클라우드 | 카페창업에비교하기

Page 70: 한양대학교 셔틀시스템 셔틀콕 개발기

클라우드

Page 71: 한양대학교 셔틀시스템 셔틀콕 개발기

클라우드 | Heroku

일본기업아님;

Page 72: 한양대학교 셔틀시스템 셔틀콕 개발기

클라우드 | Heroku

Page 73: 한양대학교 셔틀시스템 셔틀콕 개발기

무료

다른클라우드서비스들도무료로일정량을주긴하지만,Heroku는 카드정보조차요구하지않아안심

클라우드 | Heroku

Page 74: 한양대학교 셔틀시스템 셔틀콕 개발기

$ heroku app:create {AppName}$ heroku git:remote -a {AppName}$ git push heroku master

서버배포도 Git을 통해이뤄지기때문에간편하다

클라우드 | Heroku

Page 75: 한양대학교 셔틀시스템 셔틀콕 개발기

Front - End

이젠 Front-End를 한번더개선해볼까?

Back-End는 마무리된것같고,

Page 76: 한양대학교 셔틀시스템 셔틀콕 개발기

Front - End | React vs Angular

Page 77: 한양대학교 셔틀시스템 셔틀콕 개발기

Front - End | React vs Angular

Page 78: 한양대학교 셔틀시스템 셔틀콕 개발기

Front - End | React vs Angular

Page 79: 한양대학교 셔틀시스템 셔틀콕 개발기

취향존중

처리속도는 React가 더빠르다고하나,새로운걸익히기싫다면 Angular

(Angular js 1 기준)

Front - End | React vs Angular

Page 80: 한양대학교 셔틀시스템 셔틀콕 개발기

2012

Page 81: 한양대학교 셔틀시스템 셔틀콕 개발기

22015

Page 82: 한양대학교 셔틀시스템 셔틀콕 개발기

과연이전쟁의승자는?

To be continue..

Page 83: 한양대학교 셔틀시스템 셔틀콕 개발기

Bot 서비스

셔틀콕 Bot�서비스

Page 84: 한양대학교 셔틀시스템 셔틀콕 개발기

Bot 서비스

My Server

Http GET ’myServerURL/keyboard’ orHttp POST ‘myServerURL/message’

Response

Page 85: 한양대학교 셔틀시스템 셔틀콕 개발기

더나은 Bot을 구축하기위해서Heroku에서 Microsoft Azure로 서버를이전

Bot 서비스 | Microsoft Azure

Page 86: 한양대학교 셔틀시스템 셔틀콕 개발기

withCognitive API

Bot 서비스 | Cognitive API

Page 87: 한양대학교 셔틀시스템 셔틀콕 개발기

Vision Speech Language Knowledge Search

From faces to feelings,these APIs allow yourapps to understandimage and video

content.

Hear and speak to yourusers with APIs that filternoise, identify speakers,

and more.

APIs that allow your appto process natural

language and learn howto recognize what users

want.

Tap into rich knowledgeamassed from the web,academia, or your own

data.

Make your apps moreintelligent with the

power of Bing APIs, Asingle call accesses datafrom billions of web

pages, images, videos,and news

Cognitive API

Bot 서비스 | Cognitive API

Page 88: 한양대학교 셔틀시스템 셔틀콕 개발기

Request body Parse

텍스트분석

이미지분석

키워드일치

예외처리

나이측정

사진판독 기계번역

응답function

Bot 서비스 | 로직

Page 89: 한양대학교 셔틀시스템 셔틀콕 개발기

Bot 서비스 | 결과물

Page 90: 한양대학교 셔틀시스템 셔틀콕 개발기

Database

Page 91: 한양대학교 셔틀시스템 셔틀콕 개발기

Database | Firebase

Page 92: 한양대학교 셔틀시스템 셔틀콕 개발기

Realtime & GUI Console

Database | Firebase

Page 93: 한양대학교 셔틀시스템 셔틀콕 개발기

Database | Firebase

Page 94: 한양대학교 셔틀시스템 셔틀콕 개발기

Angular Js와 Firebase 둘 모두Google이 운영하고있는환경이기때문에높은호환성제공

Database | Firebase

Page 95: 한양대학교 셔틀시스템 셔틀콕 개발기

그래서하고싶은말이뭔데?

Page 96: 한양대학교 셔틀시스템 셔틀콕 개발기

“할 수 있다”

- 펜싱 국가대표 박상영

Page 97: 한양대학교 셔틀시스템 셔틀콕 개발기

fb.com/nayunhwan

instagram.com/nayunhwan

[email protected]

감사합니다http://softcon.symflow.com/