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.getEle-mentsByClassName("className"); document.getElements-ByTagName("input");

jQuery 적용 전

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

jQuery 적용 후

Hybrid Application | jQuery

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

Cross Origin Resource SharingCORS

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 understand

image and videocontent.

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 data

from billions of webpages, images, videos,

and news

Cognitive API

Bot 서비스 | Cognitive API

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

Request body Parse

텍스트분석

이미지분석

키워드일치

예외 처리

나이 측정

사진 판독 기계 번역

응답func-tion

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/