1. ã¯ããã«
ãã®èšäºã§ã¯ãLuaã®ãã¬ãŒã ã¯ãŒã¯ã«ã€ããŠè©³ãã解説ããŠããŸãã Luaãšããã®ã¯ããšãŠã軜éã§ãã¯ãã«ãªã¹ã¯ãªããèšèªã§ããç¹ã«ã²ãŒã éçºãªã©åºç¯ã§å©çšãããŠããŸããLuaã®ã³ãŒãã¯ãJavaãC++ãªã©ä»ã®èšèªã«æ¯ã¹ãŠéåžžã«çããç°¡æœãªãããããã°ã©ãã³ã°ãåããŠã®æ¹ã§ã容æã«ã³ãŒããç解ãæžãäºãã§ããŸãã
1.1 Luaãã¬ãŒã ã¯ãŒã¯ãšã¯
Luaã®ãã¬ãŒã ã¯ãŒã¯ãšããã®ã¯ãLuaã§ã¢ããªã±ãŒã·ã§ã³ãéçºããããã®ããŒã«ã»ããã®ããšãæããŸããå ·äœçã«ã¯ãLuaèšèªã䜿çšããŠéçºãé²ããäžã§å¿ èŠãšãªãæ§ã ãªã©ã€ãã©ãªãã¢ãžã¥ãŒã«ããã¬ãã«ããããç°å¢ããã³ãã¬ãŒãçãæäŸããŠããŸããããã«ãã£ãŠãéçºè ã¯ã¡ã€ã³ã®ããã°ã©ãã³ã°ã«éäžã§ãããããã¿ã€ãéçºã®é床ãéããããšãã§ããŸãã
1.2 ãã¬ãŒã ã¯ãŒã¯ã䜿ãã¡ãªãã
ãã¬ãŒã ã¯ãŒã¯ã䜿ã£ãŠéçºãè¡ãäžçªã®ã¡ãªããã¯ãéçºæéã®ççž®ãšã³ãŒãã®å質åäžã«ãããŸãã
ãã¬ãŒã ã¯ãŒã¯ã«ã¯ãäžè¬çãªã¢ããªã±ãŒã·ã§ã³éçºã§å¿
èŠãšãªãæ©èœããã§ã«å«ãŸããŠããŸãã®ã§ãããããäžããäœæããå¿
èŠããªããªããŸããããã«ãã£ãŠããã°ã©ã ã®éçºæéã倧å¹
ã«ççž®ããããšãå¯èœã§ãã
ãŸãããã¬ãŒã ã¯ãŒã¯ã¯ããã°ã©ã ã®èšèšãå©ããç°¡æœã§äžè²«æ§ã®ããã³ãŒããæžãããšã奚å±ããŸããçµæãšããŠããœãããŠã§ã¢ã®ãã°ãæžãããã¡ã³ããã³ã¹æ§ãåäžãããŸããããã«ããã¬ãŒã ã¯ãŒã¯ãæäŸããŠããæ©èœã¯å€ãã®ã±ãŒã¹ã§ãã¹ãæžã¿ã§ããããããã®åã®ãã¹ãäœæ¥ãçãããšãå¯èœã§ãã
ãããã®çç±ãããLuaãã¬ãŒã ã¯ãŒã¯ã®äœ¿çšã¯å€§ãã«ããããããŸãããŸããã©ã®ãã¬ãŒã ã¯ãŒã¯ãéžã¶ã¹ããã«ã€ããŠãåŸã®ã»ã¯ã·ã§ã³ã§è§£èª¬ããŠããŸãã®ã§ãæ¯éæåŸãŸã§èªãã§ããã ããã°ãšæããŸãã
2. Luaãã¬ãŒã ã¯ãŒã¯ã®éžã³æ¹
äžèšã§èšãã°ãLuaãã¬ãŒã ã¯ãŒã¯ãéžã¶ãšãã¯ãèªåãã¡ã®ãããžã§ã¯ãã«æé©ã®ãã®ããéžã¶ããšãäžçªéèŠã§ãã
2.1 èæ ®ãã¹ããã€ã³ã
ãã¬ãŒã ã¯ãŒã¯ãéžã¶éã«èæ ®ãã¹ããã€ã³ããšããŠããŸãäžã€ç®ãšããŠãã¬ãŒã ã¯ãŒã¯ã®çš®é¡ãæããããŸãããã¬ãŒã ã¯ãŒã¯ã«ã¯ãããããªçš®é¡ããããäŸãã°2Dã²ãŒã çšã®ãã¬ãŒã ã¯ãŒã¯ã3Dã²ãŒã çšã®ãã¬ãŒã ã¯ãŒã¯ãWebã¢ããªã±ãŒã·ã§ã³çšã®ãã¬ãŒã ã¯ãŒã¯ãªã©ããã®çš®é¡ã¯å€çš®å€æ§ã§ãã
äºã€ç®ã®ãã€ã³ãã¯ããã©ãŒãã³ã¹ã«ã€ããŠã§ããããªãã®ãããžã§ã¯ãã®èŠæ±ã«ãã¬ãŒã ã¯ãŒã¯ãå¿ãããããã©ããã調ã¹ãããšã¯éåžžã«éèŠã§ãã
ãããŠãæåŸã«ã³ãŒãã®å¯èªæ§ãä¿å®æ§ãèæ ®ãã¹ãéèŠãªãã€ã³ãã§ãã
2.2 ããã©ãŒãã³ã¹æ¯èŒ
ç¹ã«ã²ãŒã éçºã倧èŠæš¡ãªWebã¢ããªã±ãŒã·ã§ã³éçºã§ã¯ããã¬ãŒã ã¯ãŒã¯ã®ããã©ãŒãã³ã¹ã¯éèŠãªèæ ®ç¹ã§ããäŸãã°ãããããã®ãã¬ãŒã ã¯ãŒã¯ã§10,000ãªããžã§ã¯ããåæã«æç»ããå Žåãã©ã®ãã¬ãŒã ã¯ãŒã¯ãæãé«éã«å®è¡ã§ããããªã©ãæ¯èŒãããšè¯ãã§ãããã
ããã©ãŒãã³ã¹æ¯èŒããããšãã¯ããã³ãããŒã¯ãã¹ããçšããããšãäžè¬çã§ããããã«ãããããããã®ãã¬ãŒã ã¯ãŒã¯ã®æ§èœãå ¬å¹³ã«æ¯èŒããããšãå¯èœãšãªããŸãã
2.3 ããã¥ã¡ã³ããŒã·ã§ã³ãšã³ãã¥ããã£
è¯ãããã¥ã¡ã³ããŒã·ã§ã³ã¯ãã¬ãŒã ã¯ãŒã¯ã掻çšããäžã§éåžžã«éèŠãªèŠçŽ ã§ããããããã®é¢æ°ãã¡ãœããã®äœ¿çšäŸãè±å¯ã«æ²èŒãããŠããããããããããããã説æãããŠãããã©ããããã§ãã¯ããŸãããã
ãŸãã質åãåé¡ããã£ãæã«ãµããŒããæäŸããŠãããã³ãã¥ããã£ãååšãããã©ããã確èªããŸãããããããã掻çºã§ããã°ããã»ã©ãå°ã£ããšãã«è¿ éã«å¯ŸåŠããããšãå¯èœãšãªããŸãã
2.4 ã»ãã¥ãªãã£é¢ã§ã®èæ ®ç¹
æãéèŠãªé¢ã®äžã€ã¯ããã¬ãŒã ã¯ãŒã¯ã«çµã¿èŸŒãŸããŠããã»ãã¥ãªãã£æ©èœã§ããããŒã¿ä¿è·ããŠãŒã¶æ å ±ã®å®å šæ§åªå ãªã©ã«ã¯ããã¬ãŒã ã¯ãŒã¯ããã£ãããšå¯Ÿå¿ããŠããã確èªããŸãããããŸãããã¬ãŒã ã¯ãŒã¯ãè©æ¬ºãæ»æããããªãã®ã¢ããªã±ãŒã·ã§ã³ãå®ãããã®é²åŸ¡æ©èœãæèŒããŠãããã©ãããéèŠã§ãã
ãããã®ç¹ãé ã«å ¥ããŠãã¬ãŒã ã¯ãŒã¯ãéžã¶ããšã§ãæçµçãªéžæãããªãã®ãããžã§ã¯ãæåã«åçã«åœ±é¿ãäžããããšã§ãããã
3. ããããã®Luaãã¬ãŒã ã¯ãŒã¯5éž
ãã®ç« ã§ã¯ãJavaScriptéçºè ã䜿çšã§ãããããããã®Luaãã¬ãŒã ã¯ãŒã¯5ã€ã«ã€ããŠè©³ãã玹ä»ããŸãããããã¯ãã¹ãŠç°ãªãç¹æ§ãšæ©èœãæã£ãŠãããéçºã®ããŒãºãæè¡çãªèŠä»¶ã«ããæé©ãªéžæè¢ãç°ãªããŸãã
3.1 Love2D
Love2Dã¯ã2Dã²ãŒã éçºã«ç¹åããLuaãã¬ãŒã ã¯ãŒã¯ã§ãããã®ãã¬ãŒã ã¯ãŒã¯ã¯ãç¹ã«ã³ãŒãã®çããèªã¿ããããéèŠããè€éãªãªããžã§ã¯ãæåããã°ã©ãã³ã°ãã解æŸããŸãããŸããç©çãšã³ãžã³ããªãŒãã£ãªãšã³ãžã³ãªã©ãã²ãŒã éçºã«å¿ èŠãªåºæ¬çãªæ©èœãçµã¿èŸŒãŸããŠãããããåããŠã²ãŒã éçºãè¡ã人ã«ãããããã§ãã
3.2 Corona SDK
Corona SDKããŸããLuaããŒã¹ã®ã²ãŒã éçºãã¬ãŒã ã¯ãŒã¯ã§ãããLove2Dãšã¯ç°ãªããã¢ãã€ã«ããã€ã¹ã®ããã®é«éãªããã©ãŒãã³ã¹ãæäŸããŸãããŸãããã€ãã£ãAPIãžã®çŽæ¥çãªã¢ã¯ã»ã¹ããã¯ã©ãŠããã«ãã·ã¹ãã ãªã©ã®é«åºŠãªæ©èœãæäŸããŠããããã倧èŠæš¡ãªãããžã§ã¯ãã«åããŠããŸãã
3.3 Gideros
Giderosã¯ãiOSãAndroidãªã©ã®ã¢ãã€ã«ããã€ã¹åãã«é«éãªã²ãŒã ãäœæã§ããLuaãã¬ãŒã ã¯ãŒã¯ã§ããGiderosã¯ãªã¢ã«ã¿ã€ã ã®ãã¹ãããããã°ãè€æ°ã®ããã€ã¹ã§åæã«ãã¹ãã§ããæ©èœãªã©ããããè¿ éãªéçºãå©ããŸãã
3.4 Moai
Moaiã¯ãã¢ãã€ã«ã²ãŒã éçºã«ç¹åããLuaãã¬ãŒã ã¯ãŒã¯ã§ãããé«åºŠãª2Dã²ãŒã ãšã³ãžã³ãæäŸããŸãããŸããã¯ã©ãŠããµãŒãã¹ãå©çšããŠã²ãŒã ã®ããã¯ãšã³ããæ§ç¯ããããšãå¯èœãªãããå€æ©èœæ§ãæ±ããéçºã«é©ããŠããŸãã
3.5 OpenResty
ã²ãŒã éçºä»¥å€ã®é åã§Luaãã¬ãŒã ã¯ãŒã¯ãæ¢ããŠããå ŽåãOpenRestyãæé©ãªéžæè¢ã§ããããã¯ãWebã¢ããªã±ãŒã·ã§ã³ããã€ã¯ããµãŒãã¹ã®éçºãé«éåããããã®ãã¬ãŒã ã¯ãŒã¯ã§ãç¬èªã®ãã€ããã©ãŒãã³ã¹ãããã¯ãŒã¯ã©ã€ãã©ãªãæäŸããŸããããã«ãããé«éãã€ã¹ã±ãŒã©ãã«ãªãµãŒãã¹ãæ§ç¯ããããšãå¯èœã«ãªããŸãã
4. åãã¬ãŒã ã¯ãŒã¯ã®ç¹åŸŽãšãŠãŒã¹ã±ãŒã¹
ããããã®Luaãã¬ãŒã ã¯ãŒã¯ã®ç¹åŸŽãšãããããã©ã®ãããªã·ãã¥ãšãŒã·ã§ã³ã§æãçããã®ãã«ã€ããŠèª¬æããŸãã
4.1 Love2Dã®ç¹åŸŽãšãŠãŒã¹ã±ãŒã¹
Love2Dã¯ãã¯ãã¹ãã©ãããã©ãŒã ã®ãã¯ãã«ãª2次å ã²ãŒã éçºãã¬ãŒã ã¯ãŒã¯ã§ãããã®åŒ·åãªã°ã©ãã£ãã¯ã¹æ©èœãšç©çã·ãã¥ã¬ãŒã·ã§ã³æ©èœã掻çšããŠãè£ é£Ÿè±ããª2Dã²ãŒã ãéçºããããšãã§ããŸãããŸããLove2Dã¯ãªãŒãã³ãœãŒã¹ã®ãããã³ãã¥ããã£æ¯æŽãå å®ããŠããŸããç¹ã«ãçæéã§èŠæ ãã®ããã²ãŒã ãäœãããéçºè ã«ããããã§ãã
4.2 Corona SDKã®ç¹åŸŽãšãŠãŒã¹ã±ãŒã¹
Corona SDKã¯ãé«åºŠãã€ã¹ããŒãã£ãªã¢ãã€ã«ã²ãŒã ãã¢ããªã®éçºãå¯èœã«ãããã¬ãŒã ã¯ãŒã¯ã§ããLuaã®ç°¡åããšãCorona SDKã®é«æ§èœãªãšã³ãžã³ãèåããããšã§ãåå¿è ã§ãæ軜ã«ã¢ãã€ã«ãªãªãšã³ãããã®éçºãå¯èœã«ãªããŸãããŸãããã«ããã©ãããã©ãŒã 察å¿ãªã®ã§ãéçºå¹çãäžãããŸãã
4.3 Giderosã®ç¹åŸŽãšãŠãŒã¹ã±ãŒã¹
Giderosã¯ãç¹ã«ã¢ãã€ã«ã²ãŒã éçºã«åŒ·ãLuaãã¬ãŒã ã¯ãŒã¯ã§ãã€ãŒãžãŒãªAPIãšãããã³ãŒãã¹ã¯ããæ©èœãé åã§ãããããã³ãŒãã¹ã¯ããæ©èœã¯ãã³ãŒããæžããçŽåŸã«ãã®çµæã確èªã§ãããããéçºã¹ããŒããå€§å¹ ã«åäžãããŸãããŸããLuaãšC++ã®åæ¹ã§äœ¿çšã§ãããããããã©ãŒãã³ã¹ãè¿œæ±ããäžçŽéçºè ã«ãé©ããŠããŸãã
4.4 Moaiã®ç¹åŸŽãšãŠãŒã¹ã±ãŒã¹
Moaiã¯ããããã§ãã·ã§ãã«ãªã²ãŒã éçºè ã奜ãLuaãã¬ãŒã ã¯ãŒã¯ã§ããäž»ã«å€§èŠæš¡ãªã²ãŒã éçºãããžã§ã¯ãã«äœ¿çšãããæ倧ã®ç¹åŸŽã¯ã¯ã©ãŠãæ©èœãšåŒ·åãªã¢ãã¡ãŒã·ã§ã³ãšã³ãžã³ã§ããã¯ã©ãŠãæ©èœã掻çšããã°ããã«ããã¬ã€ã€ãŒã²ãŒã ããœãŒã·ã£ã«ã²ãŒã ãæ¯èŒç容æã«äœæããããšãå¯èœã«ãªããŸãã
4.5 OpenRestyã®ç¹åŸŽãšãŠãŒã¹ã±ãŒã¹
OpenRestyã¯ãWebéçºãªãã§ã¯ã®åé¡è§£æ±ºã«ç¹åããLuaãã¬ãŒã ã¯ãŒã¯ã§ãWebãµãŒãæè¡ãšããŠåºãå©çšãããŠããŸããNginxãããŒã¹ã«ããé«éãªHTTPãµãŒããŒãšããŠã倧èŠæš¡ãªWebãµãŒãã¹ã§ã®é«è² è·å¯Ÿçã«æå¹ã§ãããŸãããã€ãããã¯ãªWebã¢ããªã±ãŒã·ã§ã³ã®éçºã容æã«è¡ãããšãã§ããŸãã
5. ãã¬ãŒã ã¯ãŒã¯æŽ»çšã®å®äŸ
ããã§ã¯ããã¬ãŒã ã¯ãŒã¯ãã©ã®ããã«æŽ»çšããã®ããå ·äœçãªå®äŸãšããŠãã²ãŒã éçºãWebã¢ããªã±ãŒã·ã§ã³éçºããµãŒããŒãµã€ãã®éçºã®äžã€ã«ã€ããŠè§£èª¬ããŸããããããã®é ç®ã§ãLuaãã¬ãŒã ã¯ãŒã¯ãã©ã®ããã«åœ¹ç«ã€ã®ããã©ã®ãã¬ãŒã ã¯ãŒã¯ãæé©ãªã®ããå ·äœçã«ç€ºããŠãããŸãã
5.1 ã²ãŒã éçº
Luaãã¬ãŒã ã¯ãŒã¯ã¯ã²ãŒã éçºã«ãããå¹æçãªããŒã«ãšããŠç¥ãããŠããŸããäŸãã°ãLove2DãCorona SDKçã¯ãã²ãŒã éçºã«ç¹åãããã¬ãŒã ã¯ãŒã¯ãšããŠæ矀ã®ããã©ãŒãã³ã¹ãçºæ®ããŸãããããã®ãã¬ãŒã ã¯ãŒã¯ã§ã¯ãã²ãŒã ãšã³ãžã³ãçµã¿èŸŒãŸããŠãããç©çãšã³ãžã³ãé³å£°åŠçãã¢ãã¡ãŒã·ã§ã³ãšãã£ãã²ãŒã éçºã«æ¬ ãããªãæ©èœãäºãçšæãããŠããŸãã
5.2 Webã¢ããªã±ãŒã·ã§ã³éçº
Webã¢ããªã±ãŒã·ã§ã³éçºã«ãããŠããLuaãã¬ãŒã ã¯ãŒã¯ã¯å€§ããªã¡ãªãããæäŸããŸããOpenRestyãªã©ã®ãã¬ãŒã ã¯ãŒã¯ã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®éçºã容æã«ããæ©èœãæäŸããŸããäŸãã°ãHTTPãªã¯ãšã¹ããã¬ã¹ãã³ã¹ã容æã«å¶åŸ¡ã§ããããWebãµãŒããŒããªããŒã¹ãããã·ã®æ©èœãæäŸãããããŸããããã«ãããWebã¢ããªã±ãŒã·ã§ã³éçºå šäœãã¹ã ãŒãºã«é²ããŸãã
5.3 ãµãŒããŒãµã€ãéçº
ãµãŒããŒãµã€ãã®éçºã«ãããŠããLuaãã¬ãŒã ã¯ãŒã¯ã®å©ããåããããšãã§ããŸããOpenRestyã¯ãé«æ§èœãªWebãµãŒããŒãµã€ãã®éçºããµããŒãããäžæ¹ã§ãLapisã¯Luaã§æžãããé«éãªWebãã¬ãŒã ã¯ãŒã¯ãšããŠç¥ãããŠããŸãããããã®ãã¬ãŒã ã¯ãŒã¯ã¯ãããŒãžã®ã¬ã³ããªã³ã°é床ãäžãããã£ãã·ã¥æ©èœããããŒã¿ããŒã¹ãšã®æ¥ç¶ã容æã«ããæ©èœãæäŸããŸãããã®ããã«ãLuaãã¬ãŒã ã¯ãŒã¯ã掻çšããããšã§ãå¹ççã§å質ã®é«ããµãŒããŒãµã€ãã®éçºãå¯èœãšãªããŸãã
6. ãŸãšã
æ¬èšäºã§ã¯ãLuaãã¬ãŒã ã¯ãŒã¯ã®éžã³æ¹ãã掻çšæ¹æ³ãŸã§ã詳ãã解説ããŠããŸããããã¬ãŒã ã¯ãŒã¯ã¯ãã®æ©èœãšæ§èœã«ãã£ãŠããããžã§ã¯ãã®è³ªãšå¹çã倧ãã«å·Šå³ããŸããããããäžæ¹ã§ãã®éžæã¯å®¹æã§ã¯ãªããããã©ãŒãã³ã¹ãã»ãã¥ãªãã£ãããã¥ã¡ã³ããŒã·ã§ã³ãããããã«ãããå©ç¹ãšæ¬ ç¹ãç·åçã«è©äŸ¡ããå¿ èŠããããŸãã
æ¬èšäºã§çŽ¹ä»ããåãã¬ãŒã ã¯ãŒã¯ã¯ãããããç°ãªãç¹åŸŽãšãŠãŒã¹ã±ãŒã¹ãæããŠããŸããLove2Dã¯2Dã²ãŒã éçºã«æé©ãCorona SDKãšGiderosã¯ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ã¹ãã©ãããã©ãŒã éçºã«å©ç¹ããããMoaiã¯æè»æ§ãšèªç±åºŠã®é«ããç¹é·ããããŠOpenRestyã¯WebãµãŒããŒéçºãšãããã¯ãŒã¯ããã°ã©ãã³ã°ã«åŒ·ãåãçºæ®ããŸãã
ãããã®ç¹åŸŽãç解ããæ¢åã®å®äŸãåèã«ãã€ã€ãèªå·±ã®èŠä»¶ã«ãã£ãšãé©ãããã¬ãŒã ã¯ãŒã¯ãéžã¶ããšã§ãããå¹ççãªéçºãé²ããããšãã§ããŸãã
ä»åŸãæ°ããªãã¬ãŒã ã¯ãŒã¯ãç»å Žããå¯èœæ§ã¯ååã«ãããŸããææ°ã®æ å ±ã«ãã£ããã¢ããããããšããããŠåºæ¬ã¹ãã«ã®ç£šãç¶ããããšãéèŠã§ããããã«ãã£ãŠãæ°ããªèª²é¡ã«ãæè»ã«å¯Ÿå¿ããç®æšã«åãã£ãŠé²ãåãåŸãããããšã§ãããããã®èšäºããLuaãã¬ãŒã ã¯ãŒã¯ãéžã³ãå©çšããäžã§ã®åèã«ãªãã°å¹žãã§ãã