[๋ถ์คํธ์ฝ์ค]์๋ฐ์คํฌ๋ฆฝํธ์ ์์(UI์ API, ํ๋ก์ ํธ๋ฅผ ๋ง์น๋ฉฐ)
์๋ ํ์ธ์ ๋ถ์คํฐ์ฝ์ค 3๊ธฐ ์ํฌํฐ์ฆ ํ๋ธ์ ๋๋ค. ๐ฟ
๋ถ์คํฐ์ฝ์ค๋?
์ปค๋ฅํธ์ฌ๋จ์ ๋ค์ด๋ฒ๊ฐ ์ค๋ฆฝํ ๋น์๋ฆฌ ๊ต์ก ์ฌ๋จ์
๋๋ค.
์ํํธ์จ์ด ๊ฐ๋ฐ์ ์์ฑ ๊ต์ก ํ๋ก๊ทธ๋จ, ๋ถ์คํธ์ฝ์ค์ ํจ๊ป
๋น์ ์ ๊ฐ๋ฐ ์ปค๋ฆฌ์ด๋ฅผ ์
๊ทธ๋ ์ด๋ํ์ธ์!
์ ํฌ์คํ ์ ๊ฐ์ ๋ด ์๊ฐํด๋ณด๊ธฐ์ ์์ ์์ ๋ค๋ฃจ๋ ์ฝ๋๋ฅผ ์ง์ ํฌ๋กฌํ๋ฉด์์ ํ์ธ ํด๋ณผ ์ ์๋๋ก ์งํํฉ๋๋ค. ๊ด๋ จ๋ ๊ฐ๋ ๊ณผ ๊ฐ์๋ ํจ๊ป ์ฌ๋ ค๋๋ฆฌ๋ ๋งํฌ์์ ํ์ธํด๋ณด์ค ์ ์์ต๋๋ค.
www.boostcourse.org/cs124/joinLectures/52258
UI์ API
UI๋ User Interface์ ์ฝ์์ ๋๋ค. API๋ Application Programming Interface์ ์ฝ์์ด์ฃ . ์ด ๋์ ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์ ๋ํด์ ๋ฐฐ์๋ณด๋๋ก ํฉ์๋ค.
์๋ฅผ ๋ค์ด์ ์ด๋ค ํ์ด์ง์ ๋ฒํผ์ด ํ๋ ์๊ณ , ์ด ๋ฒํผ์ ๋๋ฅด๋ฉด ๊ฒฝ๊ณ ์ฐฝ์ด ๋จ๊ฒ ๋ง๋ค์๋ค๊ณ ํด ๋ด ์๋ค. ์ด ๋ฒํผ์ ์ฌ์ฉํ๋ ๊ฒ์ ์นํ์ด์ง์ ์ฌ์ฉ์์ฃ . ์ฌ์ฉ์๋ค์ด ์์คํ ์ ์ ์ดํ๊ธฐ ์ํด์ ์กฐ์ํ๋ ์ฅ์น๋ฅผ UI๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ด์ ์ฝ๋๋ฅผ ๋ด ์๋ค. ์ด ๊ฒฝ๊ณ ์ฐฝ์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ๊ฒ์ผ๊น์? ๊ฒฝ๊ณ ์ฐฝ์ ํ ์คํธ๋, ๊ฒฝ๊ณ ์ฐฝ์ด ๋จ๋ ํ์ด๋ฐ์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ๊ฒ์ด์ง๋ง, ์ฐ๋ฆฌ๋ ๊ฒฝ๊ณ ์ฐฝ์ ์ค์ ๋ก ๋์ฐ๊ธฐ ์ํด์๋ alert๋ผ๋ ํจ์๋ฅผ ์ฌ์ฉํ์ฃ . alert๋ผ๋ ์ด ํจ์๋ ์น๋ธ๋ผ์ฐ์ ๋ฅผ ๋ง๋ ์ฌ๋๋ค์ด ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด alert๋ผ๋ ํจ์๋ฅผ ํธ์ถํด์ ์กฐ์ํ๋ ๊ฒ์ด์ฃ . ์ด๋ ๊ฒ ํ๋ก๊ทธ๋๋จธ๋ค์ด ์ฌ์ฉํ๋ ์กฐ์ ์ฅ์น๋ค์ API๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ์ฆ, alert๋ API์ธ ๊ฒ์ด์ฃ
<input type="button" value="Click me" onclick ="alert('Hello world')">
์ด๋ฌํ UI์ API๋ผ๋ ๊ฐ๋ ์ Javascript ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ ์ฉ๋๋ ๊ฐ๋ ์ ๋๋ค. ์ฐ๋ฆฌ๋ API๋ฅผ ์์ฉํ๊ณ ๊ฒฐํฉํด์ ์๋ก์ด ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๋ ๊ฒ์ ๋๋ค.
์๊ฐํด๋ณด๊ธฐ
UI์ API๋ ์ด๋ค ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์๊น์?
I/O์ฅ์น๋ฅผ ํ์ฉํด UI๋ผ๋ ๋งค์ฒด๋ฅผ ํตํด ์๋น์ค, ์น๊ณผ ์ํตํ๊ณ JVM ํน์ ํ๋ก๊ทธ๋จ์ API๋ฅผ ๋งค์ฒด๋ก ํ์ฌ ์ํตํ๊ฒ ๋๋ค.
UI ์ API๋ ์ด๋ ํ ๊ฒ์ ์ด์ด์ฃผ๋ ํต๋ก์ด์ง๋ง ๊ทธ๊ฒ์ด ๋๊ตฌ์๊ฒ ๋ณด์ฌ์ง๋๊ฐ๊ฐ ๋ค๋ฅด๋ค๊ณ ์๊ฐํ๋ค.
์์ ์ ํ๋ก์ ํธ ์งํํด๋ณด๊ธฐ
https://www.boostcourse.org/cs124/lecture/147575/
์ด ์์ ์ ๋ฃ๊ณ ๋์ ์ฌ๋ฌ๋ถ๋ค์ด ํด์ผ ํ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์์ ๋ง์ ํ๋ก์ ํธ๋ฅผ ํด ๋ณด๋ ๊ฒ์ ๋๋ค. ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ค๊ณ ํ ๋ ์ฃผ์ํด์ผ ํ ๋ช ๊ฐ์ง ์ ์ ๋ํด์ ์์๋ด ์๋ค.
๋จผ์ , ์์ ์ด ๋ฐฐ์ด ๋ชจ๋ ๊ฒ์ ์ฌ์ฉํ๊ธฐ ๋ณด๋ค๋ ํ์์ ์ธ ์ต์ํ์ ๋๊ตฌ๋ง ๊ฐ์ง๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๋ณด์ธ์. ์์์ ๋ฐ๋ผ์ ์คํ๋์ด์ผ ํ๋ ๋ช ๋ น๋ค์ด ์คํ๋๋๋ก ํ๋ ๊ฒ์ด ๋ฐ๋ก ์ด ์ต์์ ๋๊ตฌ์ ๋๋ค. ์ด๊ฒ๋ง ์ฌ์ฉํ๋ค๊ฐ ํ๊ณ์ ๋ถ๋ชํ์ ๋, ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ, ํจ์, ๊ฐ์ฒด ๋ฑ์ ๊ฐ๋ ๋ค์ ํ์ฉํด๋ณด์ธ์.
์น ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ๊ฒ์์ด
ํ์ง๋ง ์ด๋ ๊ฒ ์ฌ๋ฌ ๊ฐ๋ ๋ค์ ํ์ฉํ๋ค๋ณด๋ฉด ๋ค์ ํ๊ณ์ ๋ถ๋ชํ๊ฒ ๋ ๊ฒ๋๋ค. ๊ทธ ๋์๋ ์ฌ๋ฌ๋ถ๋ค์ด ์๋กญ๊ฒ ๊ณต๋ถ๋ฅผ ์์ํ์ ์ผ ํฉ๋๋ค. ๊ทธ ๋ ๋์์ด ๋ ๋งํ ์ฌ๋ฌ ๊ฒ์์ด๋ฅผ ์์๋ด ์๋ค.
๋จผ์ ํ๊ทธ๋ฅผ ์ญ์ ํ๊ฑฐ๋ ์์ ํ๊ทธ๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ document๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ดํด๋ณด์ธ์. ๊ทธ๋๋ ์ฐพ์ ์ ์๋ค๋ฉด DOM ๊ฐ์ฒด์ ๋ํด์๋ ์ดํด๋ณด์ธ์.
๋ง์ผ ์น๋ธ๋ผ์ฐ์ ์์ฒด๋ฅผ ์ ์ดํด์ผ ํ๋ ๊ฒฝ์ฐ, ์๋ฅผ ๋ค๋ฉด ์นํ์ด์ง์ ์ฃผ์๋ฅผ ์์๋ธ๋ค๊ฑฐ๋, ์ฐฝ์ ์ด๊ฑฐ๋ ํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ windows ๊ฐ์ฒด์ ํ๋กํผํฐ๋ ๋ฉ์๋๋ฅผ ์ฐพ์๋ณด์ธ์.
์นํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ์ง ์๊ณ ๋ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด ajax๋ฅผ ์ฌ์ฉํด๋ณด์ธ์. ๋ฐ๋๋ก ์นํ์ด์ง๊ฐ ์๋ก๊ณ ์นจ๋์ด๋ ํ์ฌ ์ํ๋ฅผ ์ ์งํ๋๋ก ๋ง๋ค๊ณ ์ถ์ผ๋ฉด cookie์ ๋ํด์ ๋ฐฐ์๋ณด์ธ์.
์ธํฐ๋ท์ด ๋๊ฒจ๋ ๋์ํ๋ ์นํ์ด์ง๋ฅผ ์ํด์๋ offline web application์ ์ฐพ์๋ณด์ธ์.
ํ์ ํต์ ์น ์ฑ์ ๋ง๋ค๊ณ ์ถ์ ๋์๋ webRTC๋ฅผ ์ฐพ์๋ณด๋ฉด ๋ฉ๋๋ค. ์์ฑ์ ์ธ์ํ๊ฑฐ๋ ์์ฑ๊ณผ ๊ด๋ จ๋ ๊ฒ์ ์ฒ๋ฆฌํ๊ณ ์ถ์ ๋์๋ speech๋ก ์์๋๋ API๋ค์ ์ดํด๋ณด์ธ์.
3์ฐจ์ ๊ทธ๋ํฝ์ ์ด์ฉํ๊ณ ์ถ๋ค๋ฉด webGL, ๊ฐ์ํ์ค์ ๋ํด์ ์์๋ณด๊ณ ์ถ๋ค๋ฉด webVR์ ๋ํด์ ์ฐพ์๋ณด์๋ฉด ๋ฉ๋๋ค
์๊ฐํด๋ณด๊ธฐ
์ด์ ์ฌ๋ฌ๋ถ๋ค์ด ๊ฐ์๋ฅผ ํตํด์ ๋ฐฐ์ด ๋ด์ฉ์ ๊ฐ์ง๊ณ HTML+Javascript+CSS๋ฅผ ํ์ฉํ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๊ฒ ๋ ๊ฒ๋๋ค. ์ด๋ค ์น ์๋น์ค๋ฅผ ๋ง๋ค๊ณ ์ถ์ผ์ ๊ฐ์?
๋ด๊ฐ ๋ง๋ค์ด๋ณด๊ณ ์ถ์๊ฑด ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ง๋ง ์ง๊ธ ๋น์ฅ์ ๋ด๊ฐ ์ฐ๊ณ ์ถ์ ๊ฒ์ ๋ง๋ค๊ณ ์ถ๋ค. ์... ๋ฝ๋ชจ๋๋ก ํ์ด๋จธ๊ฐ ์๊ฐ๋ณด๋ค ๊ฐ๊ฒฉ์ด ๋ฐ์ผ๋ฐ ์ด๊ฑธ ์น์ผ๋ก ๋ง๋ค์ด๋ณด๋๊ฑด ์ด๋จ๊น? ๋จ์ ์๊ฐ์ tab title์ ๋์ฐ๋๋กํ๊ณ ์๋์ ์ฃผ๊ฑฐ๋ ์คํ๋ผ์ธ์ผ๋ก๋ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ฉด ์ข์ ๊ฒ์ด๋ค.
๊ฐ์๋ฅผ ๋ง์น๋ฉฐ ๋๋์
์ง๊ธ๊น์ง ์ฝ ํ๋ฌ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์์ ํด๋ณด์๋ค. ์ฌ์ค ์ด ์์ ์ ๋ฃ๊ณ ์๋ฐ ์คํฌ๋ฆฝํธ๋ฅผ ์๋ฒฝํ๊ฒ ๋ง์คํฐ ํ๋ค๊ณ ํ๋ฉด ์๋ง ์ฝ๋ฉ ์ฒ์ฌ์ผ ๊ฒ์ด๋ค. ๋ถ์คํธ์ฝ์ค์ ์๋ฐ์คํฌ๋ฆฝํธ์ ์์์ ๋ง ๊ทธ๋๋ก "์์"์ด๋ค.
์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํ์ํ์ง, ๋ฌด์์ ๊ณต๋ถํด์ผํ๋์ง์ ๊ฐ์ด ๋ฐฉํฅ์ฑ์ ์ก์์ฃผ๊ณ ์ฌ๋ฐ๋ฅธ ํ์ต๋ฐฉ๋ฒ๊ณผ ํธ๊ธฐ์ฌ์ ์ ์ํด์ค๋ค. ์ฌ์ค ์ํ์ฝ๋ฉ๋์ ์์ ์ ์ฝ๋ฉ์ ํ๋ฒ์ด๋ผ๋ ๊ณต๋ถํด๋ณธ ์ฌ๋์ ๋ค ์๋งํผ ์ ๋ช ํ ์์ ์ด๋ค. ๋ฌด๋ฃ์ด์ง๋ง ์๊ธฐ์ฝ๊ณ ์งง์ ๊ฐ์ ๋๋ถ ์๋์์๊น? ์ด๋ฒ ๋ฐฉํ ๋ชฉํ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ์ฐ๊ธฐ๋ฅผ ์ด๋ ๊ฒ ๋ง์ฐ๋ฆฌ ํด์ ์ข์๋ค.
ํ์ง๋ง ์ด์ ์์์ด๋ WEB UI ๊ณผ์ ์ ๋ค ๋ฃ๊ณ ์๋ฐ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฉํ์ฌ ๋๋ง์ ํ๋ก์ ํธ๋ฅผ ์งํํด๋ด์ผ๊ฒ ๊ตฐ ใ ใ