๋ถ๋ฅ:ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ์๊ฐ[ํธ์ง]
์ปดํจํฐ๋ฅผ ๋ฐฐ์ด์ง ์ผ๋ง ๋์ง ์์์ ๋, ๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ด์ฌ์ ๊ฐ๊ฒ ๋์์ต๋๋ค. ๋น์ ์ด์์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๋ฐ๋์ ์ด๋ฃฐ ์ ์๋ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์๊ณ , ๊ฐ๋ฅํ๋ฉด ๊ทธ๋ฐ ์ธ์ด๋ฅผ ๋ง๋๋ ๋์์ด๋๊ฐ ๋๊ณ ์ถ์์ต๋๋ค. (์ค๋ต)
๋๋ ํ๋ณตํด์ง๊ธฐ ์ํด์ ์ด์๊ฐ๋ค๊ณ ๋ฏฟ์ต๋๋ค(์ ์ด๋ ์ด๋ ๋ถ๋ฌธ์์๋). ์ด๋ฐ ๋ฏฟ์์ ๋ฐ๋ผ, ๋ฃจ๋น๋ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ฐ๋ฉด์๋ ์ฆ๊ฑฐ์ด ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด ๋์์ธ ๋์์ต๋๋ค. ๋ฃจ๋น๋ ์ฌ๋ฌ๋ถ์ด ํ๋ก๊ทธ๋๋ฐ์ ์ฐฝ์กฐ์ ์ธ ๋ฉด์๋ง ์ง์คํ ์ ์๋๋ก ํด์ฃผ๊ณ , ์คํธ๋ ์ค๋ฅผ ์ค์ฌ์ค ๊ฒ์ ๋๋ค.
- ๋ง์ธ ๋ชจํ ์ ํคํ๋ก, Programming Ruby์ ์ถ์ฒ์ฌ์์
๋ฃจ๋น๋ ๊ฐ๊ฒฐํจ๊ณผ ์์ฐ์ฑ์ ๊ฐ์กฐํ ๋์ ์ธ ์คํ ์์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค. ๋ฃจ๋น์ ์ฐ์ํ ๋ฌธ๋ฒ์ผ๋ก ์์ฐ์ค๋ฝ๊ฒ ์ฝํ๊ณ ์ฐ๊ธฐ ํธํ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์์ต๋๋ค.- ๋ฃจ๋น ๊ณต์ ํํ์ด์ง
์คํฌ๋ฆฝํธ ์ธ์ด์ ์ผ์ข . 2021๋ 1์ ๊ธฐ์ค ์ต์ ์์ ํ ๋ฒ์ ์ 3.0.0์ด๋ค[1]. ์ฐฝ์์๋ ๋ง์ธ ๋ชจํ ์ ํคํ๋ก(Matz)๋ก 1995๋ ์ ๋ฐํ๋์๋ค. ๋์์ ๋ชจ๋ ๋ง์ธ ๋ผ๋ ์ ์นญ์ผ๋ก ๋ถ๋ฅธ๋ค. ํธ์ํฐ bio๋ฅผ Rubyใฎใใ (Ruby์ ์๋น )๋ผ๊ณ ์ธ ์ ๋๋ก Ruby์ ๋ํ ์ ์ ์ด ๊ฐํ๋ค. ๊ทธ ๋๋ฌธ์ธ์ง Ruby ์ ์ ๋ค ์ญ์ ์ซ์๋ ์ ์ง๋ง ์ธ์ด์ ๋ํ ์ ์ฐฉ์ด ๊ฐํ ํธ์ด๋ค.
Python๊ณผ Perl, Smalltalk, Ada, Lisp, Eiffel ๋ฑ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก๋ถํฐ ์ผ๋ถ ๋ฌธ๋ฒ ์ฌํญ์ ๊ณ์นํ๊ณ ๋ฐ์ ์์ผ, ์ผ๋ฐ์ ์ธ ๋ชฉ์ ์ ์ ํฉํ๊ฒ ๋ง๋ ์ธ์ด์ด๋ค. ํนํ Python์ ์ง๊ธ๋ ์๋ก ์ํฅ์ ์ฃผ๊ณ ๋ฐ๋ ๋ผ์ด๋ฒ ๊ด๊ณ. ์ธ์ด์ ๋ฌธ๋ฒ์ด ์ฝ๊ณ ํ์ฅ์ด ํธ๋ฆฌํด์, ์ ๋์์ธ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ๋ฉด ํ๋ก๊ทธ๋๋ฐ์ ์ฒ์ ์์ํ ์ฌ๋๋ ๋ณต์กํ ์์ ์ ์๋์ ์ผ๋ก ์ฝ๊ฒ ํ ์ ์๋ค๋ ์ ์ด ๋งค๋ ฅ์ ์ด๋ค. ๊ทธ ๋๋ฌธ์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ง๋ง, ๊ฐ์ฒด ์งํฅ์ ๋ํ ํํ ์ ์ ๊ฒฌ๊ณผ๋ ๋ฌ๋ฆฌ ์ด๋ณด์๋ค๋ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๋ค.
์ธ๊ณ 10๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ค ํ๋๋ก ๊ผฝํ๊ธฐ๋ ํ์์ผ๋ฉฐ, 2018๋ ์๋ก ์์ฑ๋ ์ ์ฅ์ ๊ฐ์๋ฅผ ๊ธฐ์ค์ผ๋ก GitHub์์ ์ธ๊ธฐ์ธ์ด 5์์ ์๋ฆฌ๋ฅผ ์ฐจ์งํ๋ค. Made in Japan์ด๋ผ์์ธ์ง ์ผ๋ณธ์์๋ Python๋ณด๋ค๋ ์ธ๊ธฐ๊ฐ ๋ง๋ค. ํนํ ์น ๊ฐ๋ฐ์์๋ ๋ฐฑ์๋์ Ruby on Rails์ ํจ๊ป ๋ง์ด ์ฐ์ด๊ณ , ์ฌ์ง์ด ์๋ฒ ๋๋์๋ ์ฐ์ด๋ ๋ฑ ๋ค๋ฐฉ๋ฉด์ ์ ์ฐฌ๋ฆฌ ์ฐ์ด๋ ์ค์ด๋ค. macOS์ ๊ฒฝ์ฐ El Capitan(10.11)๋ถํฐ ์ต์ ๋ฒ์ ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์น๋์ด ๋๊ฐ๋ค. JetBrains์ RubyMine์ด๋ผ๋ IDE๋ฅผ ์ฌ์ฉํ๋ฉด Ruby์ RoR ์ฝ๋๋ฅผ ์์ฝ๊ฒ ํธ์งํ๊ณ ๋ฐฐํฌํ ์ ์๋ค. ๋น์ฃผ์ผ ์คํ๋์ค ์ฝ๋ ๊ฐ์ ํ ์คํธ ์๋ํฐ์์๋ Ruby ํ๋ฌ๊ทธ์ธ์ ์ ๊ณตํ๋ค.
์ด๋ฆ์ ์ ๋๋ ์ฐฝ์์ ์ง์ธ์ ํ์์์์ ๋ฐ์๋ค๊ณ ํ๋ค. ์ฆ ์ง์ง๋ก ๋ณด์ ์ด๋ฆ์์ ๋ฐ์จ ๊ฒ.
2. ๋ฒ์ [ํธ์ง]
๋ฃจ๋น์ ๋ฒ์ ์ A.B.C ํ์์ผ๋ก ํํํ๋ฉฐ ์ผ๋ฐ์ ์ธ ์คํ์์ค ์ง์์ ํ๊ธฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก B์ ํด๋นํ๋ ์ซ์๊ฐ ํ์๋ฉด ๊ฐ๋ฐ๋ฒ์ , ์ง์๋ฉด ์์ ํ ๋ฒ์ ์ด๋ค. ์คํ ์ง์์์๋ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ ๊ฒ ํ๊ธฐํ๋ค. ๋ชจ๋ ๋ค ์ด ๋ฒ์น์ ์งํค๋๊ฑด ์๋์ง๋ง, ๋๋ถ๋ถ์ ์คํ ์์ค ์ง์์ ํ๋ก๊ทธ๋จ๋ค์ ์ด๋ ๊ฒ ๋ถ๋ฅ๊ฐ ๊ฐ๋ฅํ๋ค. ๋จ 1.9.x๋ ์์ธ. 1.9 ์์ฒด๊ฐ ์์ ๋ฒ์ . ๋ํ ๋ฃจ๋น๋ 1.9๋ฒ์ ์ ๊ธฐ์ ์ผ๋ก ํฐ ์ฑ๋ฅ์ ํฅ์์ด ์์์ผ๋ฉฐ, ์ด๋ ์ ์ ๋ค ๋ํ ๋ง์ด ์ ์
๋์๋ค. ์ด ๋๋ฌธ์ 1.9๋ฒ์ ์ ์ง๊ธ๋ ์ฌ์ฉ๋๋ ๊ณณ์ด ๊ฐ๊ฐ์ด ์์ง๋ง, ๊ตฌ๋ฒ์ ์ ์ฌ์ฉํด์ ๋๋ณผ ์ ์๋ ๊ฒ์ ์์ผ๋ฏ๋ก ํน์ํ ์ผ์ด์ค๊ฐ ์๋๋ผ๋ฉด ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ์.
์ฒ๋ฆฌ๊ธฐ๋ก๋ ๊ณต์ ์ธํฐํ๋ฆฌํฐ์ธ MRI(Matz's Ruby Interpreter. C์ธ์ด๋ก ๋ง๋ค์ด์ ธ์ CRuby๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํ๋ค)๋ฅผ ํ๋๋ก MacRuby, JRuby[2], IronRuby[3], Rubinius, MagLev ๋ฑ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋ค. ๋ฌผ๋ก ํ์ค ๊ธฐ๋ฅ์ ์์น์ ๋ค ๊ฐ์์ผ ํ๋, ์ด๋ค ์ธ์ด๋ก ์ด๋ค ๊ฐ์ ๋จธ์ ์์์ ์ด๋ป๊ฒ ๋ง๋๋๋์ ์ฐจ์ด๊ฐ ์๋ค. ๊ทผ๋ฐ ๋ฌธ์ ๋ ๋ฃจ๋น๋ ํธํ์ฑ์ด๋ผ๋ ๊ฐ๋ ์ ๋ฐ์ ๋ ์ฐ๋ ๊ธฐํต์ ๊ฐ๋ค ๋ฒ๋ ค์ ์ธํฐํ๋ฆฌํฐ ์ข ๋ฅ๋ ๋์งธ์น๊ณ ๋ฒ์ ์ด ๋ค๋ฅด๋ค๊ณ ํธํ์ด ์๋๋ ๊ฒฝ์ฐ๊ฐ ์์ ์์๋ค. ์ด ๋๋ฌธ์ ๋ฃจ๋น๋ ์ ๋ฌ๋ฆฌ ์ต์ ๋ฒ์ ์ด ๋ง์ด ๊ฐ์กฐ๋๋ค.
์ฒ๋ฆฌ๊ธฐ๋ก๋ ๊ณต์ ์ธํฐํ๋ฆฌํฐ์ธ MRI(Matz's Ruby Interpreter. C์ธ์ด๋ก ๋ง๋ค์ด์ ธ์ CRuby๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํ๋ค)๋ฅผ ํ๋๋ก MacRuby, JRuby[2], IronRuby[3], Rubinius, MagLev ๋ฑ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋ค. ๋ฌผ๋ก ํ์ค ๊ธฐ๋ฅ์ ์์น์ ๋ค ๊ฐ์์ผ ํ๋, ์ด๋ค ์ธ์ด๋ก ์ด๋ค ๊ฐ์ ๋จธ์ ์์์ ์ด๋ป๊ฒ ๋ง๋๋๋์ ์ฐจ์ด๊ฐ ์๋ค. ๊ทผ๋ฐ ๋ฌธ์ ๋ ๋ฃจ๋น๋ ํธํ์ฑ์ด๋ผ๋ ๊ฐ๋ ์ ๋ฐ์ ๋ ์ฐ๋ ๊ธฐํต์ ๊ฐ๋ค ๋ฒ๋ ค์ ์ธํฐํ๋ฆฌํฐ ์ข ๋ฅ๋ ๋์งธ์น๊ณ ๋ฒ์ ์ด ๋ค๋ฅด๋ค๊ณ ํธํ์ด ์๋๋ ๊ฒฝ์ฐ๊ฐ ์์ ์์๋ค. ์ด ๋๋ฌธ์ ๋ฃจ๋น๋ ์ ๋ฌ๋ฆฌ ์ต์ ๋ฒ์ ์ด ๋ง์ด ๊ฐ์กฐ๋๋ค.
3. ํน์ง[ํธ์ง]
3.1. ์์ ๊ฐ์ฒด์งํฅ[ํธ์ง]
์์ ๊ฐ์ฒด์งํฅ์ ์ธ์ด๋ ์์ ์๋ฃํ์ด ์ฌ์ค์ ์กด์ฌํ์ง ์๊ณ ๋ชจ๋ ๊ฒ์ ๊ฐ์ฒด์ธ ์ธ์ด๋ฅผ ๋งํ๋๋ฐ, ๋ฃจ๋น๊ฐ ์ด๋ฐ ์ธ์ด ์ค ํ๋์ด๋ค. ๋ค๋ฅธ ์ธ์ด ์ค ์๋ฅผ ๋ค์ด์ Java์ ๊ฒฝ์ฐ์๋ int, char ๋ฑ ์์ ์๋ฃํ์ด ์๊ณ , ๊ทธ๊ฒ์ Boxingํ Integer, Character ๋ฑ์ ๋ํผ ํด๋์ค๊ฐ ์๋ค. ๋ฃจ๋น๋ ์ด๋ฌํ ํด๋์ค๋ง ์กด์ฌํ๊ณ ์์ ์๋ฃํ์ด๋ผ ๊ตฌ๋ถ์ง์ ๋งํ ๊ฒ์ด ์กด์ฌํ์ง ์๋๋ค. ๊ทธ ์ธ์๋ ๋ชจ๋์ด ์๋๋ฐ ๋ชจ๋๋ ํด๋์ค๋ค. ๋ฉ์๋๋ ๋น์ฐํ ํด๋์ค. ๊ทธ๋ฆฌ๊ณ ์ด ํด๋์ค๋ ๋ชจ๋ ์ด๋ ค์๋ค. ์ด๋ฅผ OpenClass๋ผ๊ณ ํ๋๋ฐ, ํ๋ง๋๋ก ์ฌ์ฉ์๊ฐ ๋ง์๋๋ก ์์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
3.2. ํจ์ํ ์ธ์ด[ํธ์ง]
ํน์ดํ ์ ์ด๋ผ๋ฉด ์ค์นผ๋ผ์ ๊ฐ์ ํจ์ํ ์ธ์ด๋ก์์ ํน์ง๋ ๊ฐ์ง๋ค๋ ๊ฒ์ด๋ค. ์ธ์ด์ฐจ์์์ Block์ด๋ผ๋ ํด๋์ค๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋ณ์๋ ๋ฉ์๋์ ์ธ์๋ก ์ฝ๋์ ์งํฉ, ์ฆ ์ฐ๋ฆฌ๊ฐ ํํ ํจ์๋ ๋ฉ์๋๋ก ๋ถ๋ฅด๋ ๊ทธ๊ฒ์ ์ ๋ฌํ ์ ์๋ค. ๊ทธ๋ฐ ๊ด๊ณ๋ก ๋น์ฐํ ๋ฉ์๋ ์์์ ๋ฉ์๋๋ฅผ ์์ฑ ๊ฐ๋ฅํ๋ฉฐ, ํด๋ก์ ๋ฅผ ์ง์ํ๋ค. ๋, ์์ฆ์ Java[4], C++, Python๊ณผ ๊ฐ์ ๊ณ ๊ธ์ธ์ด๋ ๊ฑฐ์ ๋ชจ๋ ์ง์ํ๋ ๋๋ค๋ ์๋ค. ๊ฒ๋ค๊ฐ ์๋์ ๋ฉํ ํ๋ก๊ทธ๋๋ฐ๊ณผ ํฉ์ณ์ ๋์ฑ ๊ฐ๋ ฅํ ์์ฉํ๊ธฐ๋ ํ๋ค.
3.3. ๋ฉํ ํ๋ก๊ทธ๋๋ฐ[ํธ์ง]
๊ฐ์ฅ ํฐ ์ฅ์ ์ ์ธ์ด ์์ฒด๋ฅผ ์ฝ๊ฒ ํ์ฅ์ํฌ ์ ์๋ '๋ฉํ ํ๋ก๊ทธ๋๋ฐ'์ ์ง์ํ๋ค๋ ๊ฒ์ด๋ค. ์์ฆ C++ ๋ฑ์ ์ธ์ด๋ ์ง์ํ๋ ์ํฉ์ด๊ธด ํ์ง๋ง ๋ฃจ๋น๋ ๊ฐ์ฒด์งํฅ์ ์ธ ํน์ง๊ณผ ํจ์ํ ์ธ์ด์ ์ธ ํน์ง์ด ๊ฒฐํฉ๋์ด ๋์ฑ ๊ฐ๋ ฅํ๊ฒ ๋ํ๋๋ค. ์ฌ์ค ๋ง์ธ ๋ชจํ ์ ํคํ๋ก ๋ณธ์ธ ์์ ๋ถํฐ "์ด๋งฅ์ค๋ ๋ด ์ธ์์ ์ด๋ป๊ฒ ๋ฐ๊พธ์๋" ๋ผ๋ ์ฌ๋ผ์ด๋์ผ๋ฅผ ํ ์ ๋์ ์ง์ฑ ์ด๋งฅ์ค ๋น ๋์ด์๊ณ , ๊ฑฐ๊ธฐ์ Elisp intepreter๋ก์์ ์ด๋งฅ์ค์ ์์ค์ฝ๋๋ฅผ ๋ณด๋ฉด์ ์ธ์ด ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ๋ค๊ณ ํ๋ค. ๊ทธ๋ฐ ๊ด๊ณ๋ก ์ด๋ฐ ๋ฉํ ํ๋ก๊ทธ๋๋ฐ์ ์ธ์ด ์ฐจ์์์ ๊ถ์ฅํ๋ ๊ธฐ๋ฅ์ด๊ณ ๋งค์ฐ ํฐ ํ๋ก๊ทธ๋จ๋ ๋งค์ฐ ์์ ์์ค๋ก ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ค๋ค.
3.4. ๊ทธ ์ธ ํน์ง[ํธ์ง]
- ๋ชจ๋๊ณผ ํด๋์ค๋ฅผ ๋ค๋ฅธ ๋ชจ๋์ด๋ ํด๋์ค ๋๋ ๊ฐ์ฒด์ ๋ถ์ฌ์ ํ์ฅ์ํค๋ ๊ฐ๋ ์ ์ต์ด๋ก ๋์ . ๋ค์ค ์์์ ๋ํ ์๋ก์ด ํด์/๊ตฌํ์ผ๋ก ๋ณผ ์ ์์ผ๋ฉฐ ์ค์ ๋ก C++์ ๊ฒ๋ณด๋ค ๋ง์ด ๊ฐํธํ๊ณ ์จ๋จน๊ธฐ๋ ์ฝ๋ค. ๋์ค์๋ C# ๋ฑ์๋ ์ด๋ฌํ ๊ฐ๋ ์ด ๋น์ทํ๊ฒ ๋์ ๋์๋ค.
- 0์ false๋ก ์ทจ๊ธํ๋ ์ฌ๋ฌ ์ธ์ด๋ค๊ณผ๋ ๋ฌ๋ฆฌ 0๋ true๋ก ์ทจ๊ธํ๋ค. ์ด ์ ์ ๋ฃจ์๋ ๋น์ทํ๋ค.
๋ฐ๋๋ก ๋ฌธ์ ์ ์ด ์๋ค๋ฉด ์คํ ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๊ฒ์ด๋ค. 2.x ๋ฒ์ ๊ธฐ์ค์ผ๋ก ์ปดํ์ผ ์ธ์ด์ ๋นํด ์ฑ๋ฅ์ด ๋น๊ต์ ๋จ์ด์ง๋ Python๊ณผ ์์น๋ฝ๋ค์น๋ฝ ํ๋ ํธ์ด๋ค. ๋ค๋ง ์ง์์ ์ธ ๊ฐ์ ์ ํตํด ์์ฆ์๋ ์๋๊ฐ ์๋นํ ๋นจ๋ผ์ก๊ณ , ์ต๊ทผ Ruby๋ Vagrant์ฒ๋ผ ์ฑ๋ฅ์ด ์ค์ํ๋ค๊ณ ์ฌ๊ฒจ์ง๋ ๊ฐ์ํ ์ํํธ์จ์ด ๋ฑ์๋ ์ฌ์ฉ๋๊ณ ์๋ค.
4. ์ธ๊ธฐ[ํธ์ง]
Programming Ruby(๊ณก๊ดญ์ด ์ฑ
) | |
์๋๋ ์ผ๋ณธ์์๋ง ์กฐ๊ธ ์ฌ์ฉํ๋ ์ ๋์์ง๋ง, Programming Ruby[5]๋ผ๋ ํฌ๋์ ๋ช ์ ๊ฐ ๋์ค๋ฉด์ ์ฃผ๋ชฉ๋ฐ๊ธฐ ์์ํ๋ค๊ฐ, Ruby on Rails๋ผ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ๊ฐ ๋์ค๋ฉด์ ์ฌ์ฉ์๊ฐ ๊ฝค ๋ง์ด ๋์ด๋๊ณ ์๋ค.
์ด ์ธ์ด๊ฐ ์ด๋ ๊ฒ ๋จ๊ฒ ๋ ๊ฐ์ฅ ์์ด๋ฌ๋ํ ์ ์ ๋ผ์ด๋ฒ ์ธ์ด์ธ ํ์ด์ฌ๊ณผ ํ์ ์ง์ ๋ฌธ์๊ฐ ๋ชจ๋ ์์ด์ธ๋ฐ ๋ฃจ๋น๋ ์ผ๋ณธ์์ ๊ฐ๋ฐ๋์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ API์ ๋ํ ์ค๋ช ๊ณผ ๊ธฐํ ๋ชจ๋ ๋ฌธ์๊ฐ ์ผ๋ณธ์ด๋ก ๋์ด ์์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ ๊ฒ ์ผ๋ณธ ๋ด๋ถ๋ฅผ ์ค์ฌ์ผ๋ก ์ธ๊ธฐ๋ฅผ ์ป๋ค๊ฐ ์ค์ฉ์ฃผ์ ํ๋ก๊ทธ๋๋ฐ์ ์ ์๊ฐ ์ด ๊ณก๊ดญ์ด์ฑ ๊ณผ 2005๋ ๋ถํฐ ์ง์๋๊ธฐ ์์ํ ๋ฃจ๋น ์จ ๋ ์ผ์ฆ๋ผ๋ MVC ์น ํ๋ ์์ํฌ๊ฐ ๋์ค๋ฉด์ ์ผ๋ณธ ๋ฐ(์ฃผ๋ก ์ ๋ฝ)์์๋ ์ธ๊ธฐ๋ฅผ ๋๊ณ ์๋ค. 2012๋ ์๋ GitHub์์ ๋ฃจ๋น๊ฐ 2์๋ฅผ ์ฐจ์งํ๋ค!(1์๋ ์๋ฐ์คํฌ๋ฆฝํธ) GitHub ์ฌ์ดํธ ์์ฒด๋ Ruby on Rails๋ก ๋ง๋ค์ด์ก๋ค.
์ผ๋ณธ ๊ธ์ตํ์ฌ๋ค์ด ์ฑ์ฉํ๊ณ ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค. ์ด ๋๋ฌธ์ ํ๊ตญ ๊ธ์ต์ฌ์์๋ ์ผ๋ณธ์ ํ๋ก๊ทธ๋จ์ ํด๋ ํ๊ธฐ ์ํด ํ๋ก๊ทธ๋๋ฐ ์ธ์์ ๋ํ ๋ฃจ๋น ์ฌ๊ต์ก์ ์ผ๋ถ ํ๊ณ ์๋ค. ๋ฏธ๊ตญ ๊ธ์ต๊ถ์์๋ Ruby ํ๋ก๊ทธ๋๋จธ ๋์ฐ๊ฐ ์ข์์ง๋ ์ค. ์ด์ ๋ ๋น์ฐํ ์ผ๋ณธ์ ํ๋ก๊ทธ๋จ ๋๋ฌธ์ด๋ค. ์ผ๋ณธ์์๋ ์๊ณ ๋ฆฌ์ฆ ํธ๋ ์ด๋ฉ์ Ruby๋ก ๋ง๋ ๋ค.
5. ๋ผ์ด๋ฒ[ํธ์ง]
๋ฌธ์๋ฅผ ์ฝ์ด๋ณด๋ฉด ์๊ฒ ์ง๋ง, Python์ด ์ ๋ฌ๋ฆฌ ๋ง์ด ๋ฑ์ฅํ๋ค. ๋ ์ธ์ด๊ฐ ์ ๋ฌ๋ฆฌ ๋น์ทํ๋ฉด์๋ ์ ๋ฌ๋ฆฌ ๋๋น๋๋ ํน์ฑ๋ค์ด ๋ง์ ๋ผ์ด๋ฒ ๊ตฌ๋๋ฅผ ์ด๋ฃจ๊ธฐ ๋๋ฌธ์ด๋ค. ์ค์ฃฝํ์ผ๋ฉด 2015๋
๋ฃจ๋น ์นด์ด๊ธฐ์์ ํ ๋ฃจ๋น ์ ์ ๋ ํ์ด์ฌ ์ฐ๋ ์น๊ตฌ๊ฐ ์๊พธ Python์ผ๋ก ๋์ด์ค๋ผ๊ณ ๊ผฌ์ ๋ค๊ณ (...). ์ด์ ๋ํด ๋ค๋ฅธ ์ ์ ๋ค์ ํ์ด์ฌ ๊ฐ์ ์ข์ ๊ธฐ๋ฅ ์์ผ๋ฉด, ๊ฐ์ง๊ณ ์์ ๋ฃจ๋น์ ์ปค๋ฐํ๋ผ๋ ๋์์ ์ ์ํ๋ค. ์คํ์ด ์ฌ์ค ํ์ด์ฌ๋ณด๋ค๋ Perl๊ณผ ๋ง์ด ๋ฎ์๊ณ ๋ฐ๋ฅด๋ ์ฒ ํ๋ ๋๊ฐ๋ค. TIMTOWTDI(There's more than one way to do it). ํ์ด์ฌ์ ์ฒ ํ๊ณผ๋ ์ ๋ฐ๋(There should be one - and preferably only one - obvious way to do it.) ๋จ ํ์ฒ๋ผ Once write, read never ์ธ์ด๋ ์๋๋ค. ํ์ง๋ง ํ์ ์ธ์ง๋๊ฐ ๊ณผ๊ฑฐ๋ณด๋ค ๋ง์ด ๋จ์ด์ ธ์ ๋ฌผ๋ง์ค๋ฅธ ํ์ด์ฌ๊ณผ ๋ผ์ด๋ฒ ๊ตฌ๋๋ฅผ ์ด๋ฃจ๋ ๋ฏ ํ๋ค. (์์: Python & Ruby - ์ํ์ฝ๋ฉ)
6. ์น ํ๋ ์์ํฌ[ํธ์ง]
Ruby on Rails๋ ํ ์คํ ์น ํ๋ ์์ํฌ์ด๊ณ , non full-stack ์น ํ๋ ์์ํฌ๋ก๋ Sinatra ๋ฑ์ด ์๋ค. Python์ Flask์ ํด๋นํ๋ ๊ฒ Ruby์ Sinatra์ด๋ค. ๋ํ์ ์ธ ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ์ผ๋ก๋ JetBrains์ RubyMine์ด ์๋ค. ๋ฃจ๋น๊ด์ฐ ํ
์คํธ ์๋ํฐ ์ค์์๋ Ruby ํ๋ฌ๊ทธ์ธ์ด ์ ๊ณต๋๋ ๋น์ฃผ์ผ ์คํ๋์ค ์ฝ๋๊ฐ ๋ง์ด ์ฐ์ด๊ณ ์๋ค.
์์ด๋น์ค๋น, ํฅ์คํํฐ, GitHub ๋ฑ์ด ๋ฃจ๋น ์จ ๋ ์ผ์ฆ๋ฅผ ์ฌ์ฉํ๋ค.
๋ฃจ๋น์ ๋ฃจ๋น ์จ ๋ ์ผ์ฆ๋ฅผ ์ ๋ฌธ์ผ๋ก ๊ณต๋ถํ๋ ์ฌ์ดํธ๋ ์๊ฒผ๋ค. ์ฝ๋์นด๋ฐ๋ฏธ ๊ฐ์ข
๋ฃจ๋น ์จ ๋ ์ผ์ค ์ฝ๋ฆฌ์ ์ปค๋ฎค๋ํฐ(RORLAB) http://rorlab.org ์์ ๋ง๋ ์ด๋ณด์๋ฅผ ์ํ ๋ ์ผ์ค ๊ฐ์ด๋ http://rorlab.gitbooks.io/railsguidebook ๊ฐ ์๋ค.
RORLAB์์๋ ๋งค์ฃผ ํ์์ผ ์คํ๋ผ์ธ ๋ชจ์์ ์งํํ๋ฉฐ ๋ฃจ๋น์ ๋ ์ผ์ค๊ฐ ๊ตญ๋ด์์๋ ๋๋ฆฌ ์ฐ์ด๋๋ก ํ๋ํ๋ค. ๋ชจ์ ์ฐธ๊ฐ ์ ์ฒญ์ ๋ฏธํ ์์ ํ ์ ์๊ณ ํ์ด์ค๋ถ ๊ทธ๋ฃน๊ณผ ์ฌ๋์ ๊ฐ์ ํ์ฌ ์จ๋ผ์ธ์ผ๋ก๋ ์ฐธ์ฌํ ์ ์๋ค.
์์ด๋น์ค๋น, ํฅ์คํํฐ, GitHub ๋ฑ์ด ๋ฃจ๋น ์จ ๋ ์ผ์ฆ๋ฅผ ์ฌ์ฉํ๋ค.
๋ฃจ๋น์ ๋ฃจ๋น ์จ ๋ ์ผ์ฆ๋ฅผ ์ ๋ฌธ์ผ๋ก ๊ณต๋ถํ๋ ์ฌ์ดํธ๋ ์๊ฒผ๋ค. ์ฝ๋์นด๋ฐ๋ฏธ ๊ฐ์ข
๋ฃจ๋น ์จ ๋ ์ผ์ค ์ฝ๋ฆฌ์ ์ปค๋ฎค๋ํฐ(RORLAB) http://rorlab.org ์์ ๋ง๋ ์ด๋ณด์๋ฅผ ์ํ ๋ ์ผ์ค ๊ฐ์ด๋ http://rorlab.gitbooks.io/railsguidebook ๊ฐ ์๋ค.
RORLAB์์๋ ๋งค์ฃผ ํ์์ผ ์คํ๋ผ์ธ ๋ชจ์์ ์งํํ๋ฉฐ ๋ฃจ๋น์ ๋ ์ผ์ค๊ฐ ๊ตญ๋ด์์๋ ๋๋ฆฌ ์ฐ์ด๋๋ก ํ๋ํ๋ค. ๋ชจ์ ์ฐธ๊ฐ ์ ์ฒญ์ ๋ฏธํ ์์ ํ ์ ์๊ณ ํ์ด์ค๋ถ ๊ทธ๋ฃน๊ณผ ์ฌ๋์ ๊ฐ์ ํ์ฌ ์จ๋ผ์ธ์ผ๋ก๋ ์ฐธ์ฌํ ์ ์๋ค.
7. ๊ธฐํ[ํธ์ง]
๋ง์ ์ค์ผ์น์
์ฉ ํ๋ฌ๊ทธ์ธ์ด ๋ฃจ๋น ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ค.
RPG ์ฏ๊พธ๋ฅด XP๋ถํฐ๋ ์ด ์ธ์ด ๊ธฐ๋ฐ์ ์คํฌ๋ฆฝํธ ์์ง์ ๋ฒ ์ด์ค๋ก ์๋ํ๋ฉฐ, ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ๋์ฑ ์ธ๋ถ์ ์ธ ์ ์์ ํ ์ ์๊ฒ ๋์๋ค. ์ ํํ๊ฒ๋ Ruby๊ฐ ์๋ RGSS(Ruby Game Scripting System)๋ผ๋ ๋ช ์นญ์ผ๋ก, ์ต์ ํ RGSS3(VX Ace) ๊ธฐ์ค Ruby ๋ฒ์ 1.9.2(XP ๋ฐ VX์ 1.8.1)์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ๋ง๋ค์ด์ง ์ธ์ด์ด๋ค. ๊ธฐ์กด Ruby์์ ๊ฒ์ ์ ์์ ๋ถํ์ํ ๋ช ๋ น์ด๋ ๋นผ๊ณ , ๋ฐ๋๋ก ๊ธฐ์กด์ ์๋ ๊ฒ์ ์ ์์ ํนํ๋ ์๋ก์ด ๋ช ๋ น์ด๊ฐ ์ถ๊ฐ๋๋ ๋ฑ, ๋ฌธ๋ฒ์ ๊ฐ์ผ๋ ์ฌ์ค์ ๋ณ๊ฐ์ ์ธ์ด๋ก ์ทจ๊ธํด์ผ ์ณ๋ค. ๋ฌผ๋ก ๋ฃจ๋น์ ์๋๊ฐ ๋๋ฆฐ๋ฐ๋ค ์ต์ ํ๋ ์ ์ ๋์ด์์ด์ ๋ ์ด์์ ์์ธํ ์ค๋ช ์ ์๋ตํ๋ค. ๋ค๋ง RPG ์ฏ๊พธ๋ฅด MV๋ถํฐ๋ JavaScript๋ก ๋ณ๊ฒฝ๋์๋ค.
๋ํ macOS์ ํจํค์ง ๋งค๋์ Homebrew๋ ๋ฃจ๋น ๊ธฐ๋ฐ์ผ๋ก ๋์๊ฐ๋ค. FreeBSD์ Ports ๊ฐ์ ์ญํ ์ ํด ์ฃผ๋ ๊ฒ์ด๋ผ ๋ณด๋ฉด ๋๋ค.
๋ฃจ๋น ์ธ์ด๋ก ์บ๋ฆญํฐ๋ฅผ ์กฐ์ํด์ ๋์ ์ ํด๋ฆฌ์ดํ๋ ๊ฒ์์ด ์๋ค. ๋จ, ํ์ด์ค๋ถ ๊ณ์ ์ด ์์ด์ผ ํ๋ค.
ํจํค์ง ๊ด๋ฆฌ์ ์ด๋ฆ์ด ๋ณด์์ ์๋ฏธํ๋ gem์ด๋ค ๋ณด๋, ๊ฐํน ํ๋ ธ์ค์ ์ฎ์ด๊ธฐ๋ ํ๋ค. Thanos JS ๋ฐ ์ ๋จธ์ธ๋ฐ, power, reality, mind, space, time, soul ํจํค์ง๋ฅผ ์ค์นํ๊ณ thanos snap-fingers --with-glove๋ฅผ ์ ๋ ฅํ๋ฉด ์ฝ๋ ๊ธธ์ด๊ฐ ๋ฐ์ผ๋ก ์ค์ด๋ ๋ค๋ ์คํฌ์ผ๋ฌ์ฑ ์ ๋จธ.[6] ์ด ์ ๋จธ๋ฅผ ์ง์ง node.js ํจํค์ง๋ก ๋ง๋ thanos-js๋ ์กด์ฌํ๋ค.
RPG ์ฏ๊พธ๋ฅด XP๋ถํฐ๋ ์ด ์ธ์ด ๊ธฐ๋ฐ์ ์คํฌ๋ฆฝํธ ์์ง์ ๋ฒ ์ด์ค๋ก ์๋ํ๋ฉฐ, ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ๋์ฑ ์ธ๋ถ์ ์ธ ์ ์์ ํ ์ ์๊ฒ ๋์๋ค. ์ ํํ๊ฒ๋ Ruby๊ฐ ์๋ RGSS(Ruby Game Scripting System)๋ผ๋ ๋ช ์นญ์ผ๋ก, ์ต์ ํ RGSS3(VX Ace) ๊ธฐ์ค Ruby ๋ฒ์ 1.9.2(XP ๋ฐ VX์ 1.8.1)์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ๋ง๋ค์ด์ง ์ธ์ด์ด๋ค. ๊ธฐ์กด Ruby์์ ๊ฒ์ ์ ์์ ๋ถํ์ํ ๋ช ๋ น์ด๋ ๋นผ๊ณ , ๋ฐ๋๋ก ๊ธฐ์กด์ ์๋ ๊ฒ์ ์ ์์ ํนํ๋ ์๋ก์ด ๋ช ๋ น์ด๊ฐ ์ถ๊ฐ๋๋ ๋ฑ, ๋ฌธ๋ฒ์ ๊ฐ์ผ๋ ์ฌ์ค์ ๋ณ๊ฐ์ ์ธ์ด๋ก ์ทจ๊ธํด์ผ ์ณ๋ค. ๋ฌผ๋ก ๋ฃจ๋น์ ์๋๊ฐ ๋๋ฆฐ๋ฐ๋ค ์ต์ ํ๋ ์ ์ ๋์ด์์ด์ ๋ ์ด์์ ์์ธํ ์ค๋ช ์ ์๋ตํ๋ค. ๋ค๋ง RPG ์ฏ๊พธ๋ฅด MV๋ถํฐ๋ JavaScript๋ก ๋ณ๊ฒฝ๋์๋ค.
๋ํ macOS์ ํจํค์ง ๋งค๋์ Homebrew๋ ๋ฃจ๋น ๊ธฐ๋ฐ์ผ๋ก ๋์๊ฐ๋ค. FreeBSD์ Ports ๊ฐ์ ์ญํ ์ ํด ์ฃผ๋ ๊ฒ์ด๋ผ ๋ณด๋ฉด ๋๋ค.
๋ฃจ๋น ์ธ์ด๋ก ์บ๋ฆญํฐ๋ฅผ ์กฐ์ํด์ ๋์ ์ ํด๋ฆฌ์ดํ๋ ๊ฒ์์ด ์๋ค. ๋จ, ํ์ด์ค๋ถ ๊ณ์ ์ด ์์ด์ผ ํ๋ค.
ํจํค์ง ๊ด๋ฆฌ์ ์ด๋ฆ์ด ๋ณด์์ ์๋ฏธํ๋ gem์ด๋ค ๋ณด๋, ๊ฐํน ํ๋ ธ์ค์ ์ฎ์ด๊ธฐ๋ ํ๋ค. Thanos JS ๋ฐ ์ ๋จธ์ธ๋ฐ, power, reality, mind, space, time, soul ํจํค์ง๋ฅผ ์ค์นํ๊ณ thanos snap-fingers --with-glove๋ฅผ ์ ๋ ฅํ๋ฉด ์ฝ๋ ๊ธธ์ด๊ฐ ๋ฐ์ผ๋ก ์ค์ด๋ ๋ค๋ ์คํฌ์ผ๋ฌ์ฑ ์ ๋จธ.[6] ์ด ์ ๋จธ๋ฅผ ์ง์ง node.js ํจํค์ง๋ก ๋ง๋ thanos-js๋ ์กด์ฌํ๋ค.
8. ๋ฐ๊นฅ ๊ณ ๋ฆฌ[ํธ์ง]
[1] ๋ฃจ๋น ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ํฌ๋ฆฌ์ค๋ง์ค ๋์ ๋ฒ์ ์
์ ํ๋ ๊ฒ์ผ๋ก ์ ๋ช
ํ๋ค. 3.0.0 ๋ฒ์ ์ด 2021๋
ํฌ๋ฆฌ์ค๋ง์ค์ 2.7.0 ๋ฒ์ ์ 2019๋
ํฌ๋ฆฌ์ค๋ง์ค, 2.6.0๋ฒ์ ์ 2018๋
ํฌ๋ฆฌ์ค๋ง์ค... 2.1.0 ๋ฒ์ ์ 2013๋
ํฌ๋ฆฌ์ค๋ง์ค์ ์ถ์๋์๋ค.
[2] Java๋ก ๋ง๋ค์ด์ง ์ธํฐํ๋ฆฌํฐ. GIL(Global Interpreter Lock)์ด ์์ด ๋ฉํฐ ์ฐ๋ ๋ ๋ณ๋ ฌ ์ํ์ด ๊ฐ๋ฅํ๋ค.
[3] ๋ท๋ท ํ๋ ์์ํฌ ์ง์
[4] ์๋ฐ๋ ์๋ฐ 8๋ถํฐ ๋๋ค๋ฅผ ์ง์ํ๋ค.
[5] ํ์ง์ ๊ณก๊ดญ์ด๊ฐ ๊ทธ๋ ค์ ธ ์์ด์ ์ผ๋ช
๊ณก๊ดญ์ด ์ฑ
. ๋ค๋ง ์ผ๋ณธ์์ ๋์ฌ ๋๋ ํ์ง์ ํ ๋ผ๊ฐ ๊ทธ๋ ค์ ธ ์์๋ค๊ณ .
[6] ์ค์ ๋ก๋ Netlify Drop์์ ๊ธฐ์ ํ๋ณด๋ฅผ ์ํด ๋ง๋ ๋ฐ๋ชจ์ฉ ํจ๋ฌ๋ ์ฌ์ดํธ๋ก, gem install์ ํตํด์๋ ๋น์ฅ power ํจํค์ง๋ถํฐ ์ฐพ์ ์ ์๋ ํจํค์ง๋ผ๊ณ ๋์จ๋ค.