1. Luaãšã¯ïŒ
Luaã¯ããã©ãžã«ã®ãªãªããžã£ãã€ãé£éŠå€§åŠã§éçºãããã¹ã¯ãªããèšèªã§ããéåžžã«ã·ã³ãã«ã§ãã¬ãã·ãã«ãªèšèšãæããã€ã€ãããã®ãã¯ãã«ãªæ©èœãšé«éãªåäœæ§èœã«ãããå€ãã®ãœãããŠã§ã¢éçºè ããé«ãè©äŸ¡ãåŸãŠããŸãã
ãŸããLuaã¯Cèšèªãšã®èŠªåæ§ãé«ããçµã¿èŸŒã¿çšéã«ããå©çšãããç¹è²ãæã£ãŠããŸãããã®èšäºã§ã¯Luaã®åºæ¬çãªç¹åŸŽãçšéã人æ°ã®çç±ãå€æ°ãšããŒã¿åã«ã€ããŠè©³ãã解説ããŠãããŸãã
Luaã®æ©èœãæ¡åŒµããããã®ããŸããŸãªã©ã€ãã©ãªã玹ä»ããŸãããããã®ã©ã€ãã©ãªã掻çšããããšã§ããã£ãšå¹ççã«ããã£ãšæè»ã«Luaã䜿ãããšãå¯èœã«ãªããŸãã
1.1 Luaãšãã®ç¹åŸŽ
Luaã¯è»œéãã€å¹ççãªã¹ã¯ãªããèšèªã§ããããã®ååã¯ãã«ãã¬ã«èªã®”æ”ãæå³ããŸããç¹çãã¹ãã¯ãã®æ¡åŒµæ§ã§ãæ¢åã®ã¢ããªã±ãŒã·ã§ã³ã«çµã¿èŸŒãããšã容æã«ã§ããããèšèšãããŠããŸãã
ãŸããLuaã¯ã¡ã¢ãªç®¡çããããã¯ãŒãã³ã°ããã«ãã¹ã¬ãããªã©ã®åºç€çãªã·ã¹ãã é¢é£ã®æ©èœãå èµããªãäžæ¹ã§ããããã®æ©èœãæäŸããã©ã€ãã©ãªãæèŒã§ãããããå¿ èŠã«å¿ããŠæ©èœãè¿œå ããããšãå¯èœã§ãã
ãã®ä»ã®ç¹åŸŽãšããŠãäžè¬çãªããã°ã©ãã³ã°ã®æ§é ãæŠå¿µïŒå€æ°ãæ¡ä»¶æãã«ãŒããªã©ïŒããµããŒãããŠããç¹ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãè¡ãèªåã¡ã¢ãªç®¡çãæäŸãããŠããç¹ãªã©ãæããããŸãã
1.2 Luaã®çšéãšåé
Luaã¯ãã®é«ãæ¡åŒµæ§ãšæè»æ§ããå¹ åºãåéã§äœ¿ãããŠããŸããæãäžè¬çã«ã¯ãçµã¿èŸŒã¿ã·ã¹ãã ã®ã¹ã¯ãªããèšèªãšããŠè¯ãå©çšãããŸãã
ç¹ã«ã²ãŒã éçºã«ãããŠã¯ããã®åäœã®é«éæ§ãšCèšèªãšã®é£æºæ§ãè©äŸ¡ãããå€ãã®ã²ãŒã ãšã³ãžã³ã§å©çšãããŠããŸããå ·äœçãªäŸã§ã¯ã”World of Warcraft”ã”Angry Birds”ãªã©ãç¥ãããŠããŸãã
ãŸãããŠã§ãã¢ããªã±ãŒã·ã§ã³ã®éçºåéã§ãLuaã¯æ¡çšãããããšããããŸããNginxãOpenRestyãšãã£ããŠã§ããµãŒãæè¡ãšã®é£æºãå¯èœã§ãéåæåŠçããµãŒãåŽã®ã¹ã¯ãªããã£ã³ã°ãè¡ããããã§ãã
1.3 Luaã®äººæ°ã®çç±
Luaãå€ãã®éçºè ã«æ¯æãããçç±ã®äžã€ã«ã¯ãã®ã軜éæ§ãããããŸããLuaã€ã³ã¿ããªã¿ã¯éåžžã«å°ãããããã¡ã¢ãªè² è·ãäœããé«éã§åäœããŸãã
ãŸãããæè»æ§ãã倧ããªé åã§ããLuaã¯ææ³ãè¥å¹²ç¹æ®ã§ããããªããžã§ã¯ãæåããã°ã©ãã³ã°ãåºæ¬æ©èœãšããŠã¯ãµããŒãããŠããŸããããããããæœè±¡åããããŒãã«æ©èœã«ãããå€æ©èœãªããã°ã©ãã³ã°ã¹ã¿ã€ã«ãå®çŸããŸãã
Luaã®äººæ°ã®çç±ãšããŠã¯ããããã®ç¹é·ã«å ããŠãCèšèªãšã®åŒ·åãªçžäºéçšæ§ãšãè±å¯ãªã©ã€ãã©ãªãæããããŸãããããã®ç¹é·ã«ããLuaã¯ããŸããŸãªçšéãç¶æ³ã«å¯Ÿå¿ããæè»ãªããã°ã©ãã³ã°èšèªãšããŠäœçœ®ã¥ããããŠããŸãã
1.4 Luaã®å€æ°ãšããŒã¿å
Luaã§ã¯å€æ°ã®æ±ãã¯æ¯èŒçèªç±ã§ã宣èšæã«åãæ瀺ããå¿ èŠã¯ãããŸãããå€æ°ã«å€ãä»£å ¥ãããšããã®å€ã®åã«ãã£ãŠå€æ°ã®åãèªåçã«æ±ºå®ãããŸãã
ãŸããLuaã«ã¯8ã€ã®åºæ¬ããŒã¿åãååšããŸãããããã¯nil, boolean, number, string, function, userdata, thread, tableã§ãã
ãããåããŒã¿åã«ã¯ãããã圹å²ã䜿ãéããããå Žé¢ã«ãã£ãŠé©åãªããŒã¿åãå©çšããããšã§ããã°ã©ã ã®æ§é åãå¹çåãå³ãããšãã§ããŸãã
2. Luaã©ã€ãã©ãªã®åºæ¬
Luaã©ã€ãã©ãªã«ã€ããŠç解ããããã«ã¯ããã®åºæ¬ãç解ããããšãéèŠã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ãã©ã€ãã©ãªã®åºæ¬çãªå®çŸ©ãããLuaã©ã€ãã©ãªã®å©ç¹ãšæ¬ ç¹ãäžè¬çãªäœ¿çšäŸããããŠå°å ¥æ¹æ³ã«ã€ããŠèª¬æããŸãã
2.1 ã©ã€ãã©ãªãšã¯
ã©ã€ãã©ãªãšã¯ãããã°ã©ãã³ã°ã«ãããäžé£ã®ã³ãŒãã®éãŸãã§ãäžè¬çãªã¿ã¹ã¯ãå¹ççã«ããªãããã«åå©çšã§ããããã«èšèšãããŸããããã¯ãæéãšåŽåãç¯çŽããã³ãŒãã®ä¿¡é Œæ§ãšäžè²«æ§ãåäžãããããã«äžå¯æ¬ ã§ãã
Luaã©ã€ãã©ãªã¯ãLuaããã°ã©ãã³ã°èšèªã§æžãããã©ã€ãã©ãªã®ããšãæããŸãããããã®ã©ã€ãã©ãªã§ã¯ãæ§ã ãªæ©èœãæäŸããããããç¹å®ã®ãããžã§ã¯ãã«å¿ããŠé©åãªã©ã€ãã©ãªãéžæã§ããŸãã
äŸãã°ãã²ãŒã éçºããŠã§ãéçºãããŒã¿åæãªã©ãç¹å®ã®ã¿ã¹ã¯ã«å¯Ÿå¿ããã©ã€ãã©ãªãååšããŸãããããã¯ã³ãŒãã®åå©çšæ§ãåäžããããããžã§ã¯ãã®éçºã¹ããŒããšå質ãåäžãããããã«åœ¹ç«ã¡ãŸãã
2.2 Luaã©ã€ãã©ãªã®ã¡ãªãããšãã¡ãªãã
Luaã©ã€ãã©ãªã®æ倧ã®ã¡ãªããã¯ãã®å¹çæ§ã§ããå¹çæ§ã¯ãã³ãŒãã®åå©çšã«ããéçºæéãå€§å¹ ã«ç¯çŽã§ããããšãæå³ããŸããããã«ãããã°ã©ããæ¢åã®é«å質ãªã³ãŒããåå©çšããããšã§ãä¿¡é Œæ§ãšäžè²«æ§ãåäžãããããšãã§ããŸãã
ããããªãããå šãŠãã¡ãªããã ãã§ã¯ãããŸããããã¡ãªãããååšããŸããã©ã€ãã©ãªã倧ãããããšãäžèŠãªã³ãŒããæ©èœãå€ããªããã¢ããªã±ãŒã·ã§ã³ãéããªãå¯èœæ§ããããŸãããŸããã©ã€ãã©ãªã«ãã°ããã£ãå Žåããã®ä¿®æ£ã¯å°é£ã«ãªããŸãã
ãããã®èŠå ãç·åçã«èæ ®ããŠããããžã§ã¯ãããšã«æé©ãªã©ã€ãã©ãªãéžæããå¿ èŠããããŸãã
2.3 Luaã©ã€ãã©ãªã®äžè¬çãªäœ¿çšäŸ
Luaã©ã€ãã©ãªã®äžã€ã§ããLÃVEã¯ã2Dã²ãŒã éçºçšã®ãã¬ãŒã ã¯ãŒã¯ãšããŠåºã䜿çšãããŠããŸãããŸããLuaSocketã¯Luaã§ãããã¯ãŒã¯éä¿¡ãè¡ãããã®äžé£ã®APIãæäŸããŠããŸãã
ä»ã«ããLuaSecã¯Luaã§å®å šãªãããã¯ãŒã¯éä¿¡ãè¡ãããã®ã©ã€ãã©ãªãLuaSQLã¯ããŒã¿ããŒã¹æ¥ç¶ãæäŸããLuaã©ã€ãã©ãªã§ããããããã¯ããããã€ã³ã¿ãŒãããã»ãã¥ãªãã£ãšããŒã¿ããŒã¹ç®¡çã®é åã§äœ¿çšãããŸãã
ãããã®ã©ã€ãã©ãªã¯ããããããç¹å®ã®ã¿ã¹ã¯ãå¹ççã«éæããããã«èšèšãããŠããŸãã
2.4 Luaã©ã€ãã©ãªã®å°å ¥æ¹æ³
Luaã©ã€ãã©ãªã®å°å ¥æ¹æ³ã¯äž»ã«äºã€ãããŸããäžã€ã¯ã©ã€ãã©ãªã®ãœãŒã¹ã³ãŒããæåã§ããŠã³ããŒããããããžã§ã¯ãã«çŽæ¥å«ããæ¹æ³ã§ããããäžã€ã¯ããã±ãŒãžç®¡çããŒã«ã䜿çšããŠèªåçã«ã©ã€ãã©ãªãããŠã³ããŒãã»ã€ã³ã¹ããŒã«ããæ¹æ³ã§ãã
ããã±ãŒãžç®¡çããŒã«ã«ã¯ãLuaRocksãªã©ããããŸãããããã®ããŒã«ã䜿çšãããšãã©ã€ãã©ãªã®ããŠã³ããŒããæŽæ°ãäŸåæ§ã®ç®¡çãªã©ãå€§å¹ ã«ç°¡åã«ãªããŸãã
ããããã©ã®æ¹æ³ãéžã¶ãã¯ãããžã§ã¯ãã®èŠä»¶ãç¶æ³ã«ãããŸãããããã®æ¹æ³ããã®å©ç¹ãšæ¬ ç¹ããããããããããç解ããäžã§é©åãªéžæãããããšãéèŠã§ãã
3. ããããã®Luaã©ã€ãã©ãªçŽ¹ä»
Luaã®ã©ã€ãã©ãªãšã¯ãLuaããã°ã©ãã³ã°ã«ãŠç¹å®ã®ã¿ã¹ã¯ã楜ã«éæããããã®äžé£ã®ã³ãŒãéã§ãããããã¯éåžžã«åºç¯ãªé åãã«ããŒããŠããŠããããã¯ãŒãã³ã°ããã¡ã€ã«æäœãã»ãã¥ãªãã£ãããŒã¿æ瞊ãªã©å€å²ã«æž¡ããŸãããŸãã¯ãLuaã®ã©ã€ãã©ãªã®äžãããããäžè¬çã§æçšãªãã®ã4ã€éžåºããŸããã
ããããã®ã©ã€ãã©ãªã«ã€ããŠè©³ãã説æããã©ã®ãããªæ©èœãããã®ãã説æããŸããããããã®ã©ã€ãã©ãªã¯ããã®ç¹æ§ãçšéã«ãã£ãŠéžãã ãã®ã§ãããŸããå šãŠã®ã©ã€ãã©ãªã¯ãªãŒãã³ãœãŒã¹ã§ãç¡æã§å©çšå¯èœã§ãã
ããã§ã¯ãåã©ã€ãã©ãªã«ã€ããŠé ãè¿œã£ãŠè©³ããèŠãŠãããŸãããã
3.1 LuaSocket
LuaSocketã¯ãLuaã«ãããã¯ãŒãã³ã°æ©èœãæäŸããã©ã€ãã©ãªã§ããTCPãUDPãDNSãFTPãHTTPãSMTPãMIMEãªã©ãå¹ åºã察å¿ããŠããŸãã
ãã®ã©ã€ãã©ãªã䜿çšããã°ãLuaã¹ã¯ãªããããçŽæ¥ã€ã³ã¿ãŒããããä»ããããŒã¿ã®éåä¿¡ãå¯èœãšãªããŸããããã«ãããWebãµãŒããŒãã¯ã©ã€ã¢ã³ããããŸããŸãªãããã¯ãŒã¯ããŒã«ãäœæããããšãã§ããŸãã
ãŸããLuaSocketã¯é«ãããã©ãŒãã³ã¹ãšé å¥æ§ãæäŸããéåæéä¿¡ããµããŒãããŠãããããå®çšçãªãããã¯ãŒã¯ã¢ããªã±ãŒã·ã§ã³ãå¹çè¯ãäœæããããšãå¯èœã§ãã
3.2 LuaFileSystem
LuaFileSystemã©ã€ãã©ãªã¯ãLuaã§ãã£ã¬ã¯ããªãšãã¡ã€ã«æäœãæ±ãããã®ã©ã€ãã©ãªã§ãããã¡ã€ã«ã®ãªã¹ãã¢ããããã£ã¬ã¯ããªãŒã®äœæãå±æ§ã®ç¢ºèªãšãã£ãåºæ¬çãªãã¡ã€ã«æäœãæäŸããŸãã
ãã®ã©ã€ãã©ãªã䜿çšããã°ãLuaã¹ã¯ãªããããçŽã«ãã¡ã€ã«ã·ã¹ãã ã«ã¢ã¯ã»ã¹ããŠãèªã¿æžãããªããŒã ãåé€ãšãã£ãæäœãè¡ãããšãã§ããŸãã
LuaFileSystemã¯ãç°¡æœãªAPIãåããŠãããçŽæçã«çšããããšãã§ããŸããããã«ãããLuaã§ã®ãã¡ã€ã«æäœãç°¡åã§å¹ççã«è¡ãããšãå¯èœã§ãã
3.3 LuaSec
LuaSecã¯ãLuaã¹ã¯ãªããã§SSL/TLS察å¿ã®ãããã¯ãŒãã³ã°æ©èœãæäŸããã©ã€ãã©ãªã§ããLuaSocketãšçµã¿åãããããšã§ãå®å šãªãããã¯ãŒãã³ã°ç°å¢ãå®çŸããŸãã
LuaSecã¯ãHTTPSãSSL/TLSãœã±ããéä¿¡ãªã©ãããŒã¿ã®æå·åãå®å šæ§ã確ä¿ããéèŠãªæ©èœãæäŸããŸããããã«ãããLuaã§å®å šæ§ã確ä¿ãããããã¯ãŒã¯ããã°ã©ãã³ã°ãè¡ãããšãå¯èœãšãªããŸãã
ã»ãã¥ã¢ãªãŠã§ããµãŒããŒããå人æ å ±ãæ±ãã¢ããªã±ãŒã·ã§ã³çãäœæããéã«ã¯ãLuaSecãéžã°ããããšãå€ãã§ãã
3.4 Penlight
æåŸã«çŽ¹ä»ããã®ã¯ãPenlightã§ããããã¯Luaã§äžè¬çãªããã°ã©ãã³ã°ã¿ã¹ã¯ãç°¡æåããããã®ã©ã€ãã©ãªã§ããæååæäœãããŒãã«æäœãå ¥åºåããªããžã§ã¯ãæåããã°ã©ãã³ã°ãªã©ãå¹ åºãæ©èœãã«ããŒããŠããŸãã
Penlightãçšããã°ãLuaã®æšæºã©ã€ãã©ãªãŒä»¥äžã®æ©èœã享åããããšãã§ããããé«åºŠãªããã°ã©ãã³ã°ãè¡ãããšãå¯èœã§ãã
ç·åçã«èŠãŠãLuaããã°ã©ãã³ã°ã®è³ªãšå¹çãåäžãããããã«ã¯ãPenlightã¯æ¬ ãããªãã©ã€ãã©ãªãšãããã§ãããã
4. Luaã©ã€ãã©ãªã®æŽ»çšäŸ
Luaã©ã€ãã©ãªã¯ãæ§ã ãªéçºã§ã®äœæ¥å¹çãåäžãããããŒã«ãšããŠæ³šç®ãéããŠããŸããã²ãŒã éçºãWebéçºãããŒã¿è§£æããããã¯ãŒã¯ããã°ã©ãã³ã°ãšãã£ãæ§ã ãªåéã§æŽ»çšãããŠããŸãã以äžã®ã»ã¯ã·ã§ã³ã§ãããããã®åéã§ã®æŽ»çšäŸãå ·äœçã«è§£èª¬ããŠãããŸãã
ãŸããLuaã©ã€ãã©ãªã¯ãéçºè ãæšæºã©ã€ãã©ãªã«ãªããç¹å®ã®æ©èœãç°¡åã«å®è£ ããããã«äœ¿ãããšãã§ããŸããããã¯ãã³ãŒãã®åå©çšæ§ãé«ããéçºæéãççž®ããããã«éåžžã«äŸ¿å©ãªæ©èœã§ãã
ããã§ã¯ã次ã®åã»ã¯ã·ã§ã³ã§ã²ãŒã éçºãWebéçºãããŒã¿è§£æããããã¯ãŒã¯ããã°ã©ãã³ã°ã§ã®Luaã©ã€ãã©ãªã®æŽ»çšäŸãèŠãŠã¿ãŸãããã
4.1 ã²ãŒã éçºã§ã®Luaã©ã€ãã©ãªã®æŽ»çš
ã²ãŒã éçºã«ãããLuaã©ã€ãã©ãªã®æŽ»çšã¯éåžžã«åºç¯ã«åã³ãŸãããPhysicsFSãã¯ç©çèšç®ãåœããå€å®ãå®è£ ã§ããã©ã€ãã©ãªããoordNoiseãã¯å°åœ¢çæããã€ãºçæã«äœ¿ãããã©ã€ãã©ãªã§ãã
ãLÃVEãã¯ã2Dã²ãŒã éçºã«ç¹åããLuaã©ã€ãã©ãªã§ãã°ã©ãã£ãã¯ãé³é¿ãç©çãšã³ãžã³ã«è³ããŸã§ãå¹ åºãã«ããŒããŠããŸãã
ãŸãããMOAIãã¯ã¹ããŒããã©ã³åãã®ã²ãŒã éçºã«ç¹åããã©ã€ãã©ãªã§ãiOSãAndroidåãã®ã¢ããªéçºã«å©çšãããŠããŸãã
4.2 Webéçºã§ã®Luaã©ã€ãã©ãªã®æŽ»çš
Webéçºã§ãLuaã©ã€ãã©ãªã¯æŽ»èºããŠããŸãããLua-cURLv3ãã¯HTTPã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªã§ãWebAPIãšã®ããåããç°¡åã«ããããšãå¯èœã§ãã
ãŸãããLuaSecãã¯HTTPSéä¿¡ãå¯èœã«ããã©ã€ãã©ãªã§ãå®å šãªWebéä¿¡ãéèŠããéã«ã¯å¿ é ã®ã©ã€ãã©ãªãšãèšããŸãã
ãLapisãã¯Luaã§äœãããé«éãªWebã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ã§ãWebãµãŒãã¹ã®éçºãã¹ããŒãã£ãŒã«é²ããããšãã§ããŸãã
4.3 ããŒã¿è§£æã§ã®Luaã©ã€ãã©ãªã®æŽ»çš
ããŒã¿è§£æã«ãããŠãLuaã©ã€ãã©ãªã¯éåžžã«æçšã§ãããlua-cjsonãã¯JSONãã¡ã€ã«ã®æ±ããå©ãããLuaSQLãã¯åçš®ããŒã¿ããŒã¹ãšLuaãæ¥ç¶ããããã®ã©ã€ãã©ãªã§ãã
ãLuaFileSystemãã¯ãã¡ã€ã«ã·ã¹ãã ã®æäœãè¡ãã©ã€ãã©ãªã§ããã¡ã€ã«ã®èªã¿æžããŸãã¯ãã£ã¬ã¯ããªã®æäœãªã©ãè¡ãããšãã§ããŸãã
ãŸãããTorchãã¯æ©æ¢°åŠç¿çšã®ã©ã€ãã©ãªã§ããã£ãŒãã©ãŒãã³ã°ã®ç 究ãéçºãé²ããäžã§ã®éå®ããããŒã«ãšãªã£ãŠããŸãã
4.4 ãããã¯ãŒã¯ããã°ã©ãã³ã°ã§ã®Luaã©ã€ãã©ãªã®æŽ»çš
ãããã¯ãŒã¯ããã°ã©ãã³ã°ã§ãLuaã©ã€ãã©ãªã掻çšãããŠããŸãããLuaSocketãã¯ãããã¯ãŒã¯é¢é£ã®æ©èœãæäŸããã¯ã©ã€ã¢ã³ãã»ãµãŒããŒã¢ãã«ã®æ§ç¯ã«åœ¹ç«ã¡ãŸãã
ãŸãããnmapãã¯ã»ãã¥ãªãã£ã¹ãã£ã³ããããã¯ãŒã¯æ¢çŽ¢ã®ããã®ã©ã€ãã©ãªãšããŠç¥ãããŠãããã»ãã¥ãªãã£ã®ç¢ºä¿ã«å¯Ÿãã察çãè¡ãéã«å©çšãããŸãã
ãCopasãã¯éåæãããã¯ãŒã¯æäœã®ããã®ã©ã€ãã©ãªã§ãéåæIOãå®è£ ããéã«éåžžã«äŸ¿å©ã§ãã
5. Luaã©ã€ãã©ãªã®éçºãšé åž
Luaã©ã€ãã©ãªã®éçºãšé åžã«ã€ããŠè§£èª¬ããŸããLuaã©ã€ãã©ãªãéçºããéã«ã€ãŸããããšã¯å€ã ãããŸããããã®è§£æ±ºçãé åžããããã®æ¹æ³ã«ã€ããŠã詳ãã説æããŸãã
5.1 èªèº«ã§Luaã©ã€ãã©ãªãéçºããããã®ãã€ã³ã
èªèº«ã§Luaã©ã€ãã©ãªãéçºããããã«ã¯ããŸãåºæ¬çãªLuaã®ããã°ã©ãã³ã°ç¥èãå¿ èŠã§ãããŸããèšèšããã©ã€ãã©ãªãã©ã®ãããªæ©èœãæããã®ãããã®çšéãšç®çãæ確ã«ããããšãéèŠã§ãã
次ã«ãã©ã€ãã©ãªã®éçºã«åœãã£ãŠã¯ã³ãŒãã®ä¿å®æ§ãšå¯èªæ§ãéèŠããŸããããããã¯ä»ã®éçºè ãããªãã®ã©ã€ãã©ãªãå©çšããããä¿®æ£ãããããéã«å€§ãã«åœ¹ç«ã¡ãŸãããŸããå¯èœãªéãããã¥ã¡ã³ããŒã·ã§ã³ã詳现ã«ããããŠåãããããèšè¿°ããããšãæ±ããããŸãã
æåŸã«ãäžè¬çãªãšã©ãŒãã³ããªã³ã°ããã©ã€ãã©ãªã®æ§èœã«åœ±é¿ãåãŒãå¯èœæ§ã®ããéšåã«ã€ããŠã¯ãã¹ããè¡ããæ¹åãšæé©åãéããããšã倧åã§ãã
5.2 Luaã©ã€ãã©ãªãå ¬éã»é åžããæ¹æ³
Luaã©ã€ãã©ãªãäœæããããä»ã®éçºè ãšå ±æããŠãã£ãŒãããã¯ãåŸãããšãã§ããŸãããã䜿ãããé åžæ段ã¯GithubãBitbucketçã®ãªããžããªãã¹ãã£ã³ã°ãµãŒãã¹ã§ãã
ãŸããLuaRocksã¯Luaã®ããã±ãŒãžãããŒãžã£ãŒã§ãããããã«ã©ã€ãã©ãªãã¢ããããŒãããããšã§å€ãã®Luaéçºè ã«å¯ŸããŠæ軜ã«é åžããããšãã§ããŸãã
å ¬éæã«ã¯ã䜿çšæ¹æ³ãæ©èœãã©ã€ã»ã³ã¹æ å ±çãæèšããããã¥ã¡ã³ããŒã·ã§ã³ã®æäŸãæšå¥šãããŸãã
5.3 Luaã©ã€ãã©ãªã®ã©ã€ã»ã³ã¹ã«ã€ããŠ
Luaã©ã€ãã©ãªãå ¬éããéã«ã¯ã©ã€ã»ã³ã¹ã«ã€ããŠèæ ®ããå¿ èŠããããŸããããã¯ããªããéçºããã©ã€ãã©ãªãã©ã®ããã«äœ¿çšãããŠè¯ãã®ããèŠå®ãããã®ã§ãã
ã©ã€ã»ã³ã¹ã¯ããããã®çš®é¡ããããŸãããäžè¬çã«ã¯MITã©ã€ã»ã³ã¹ãApacheã©ã€ã»ã³ã¹ãªã©ã䜿ãããŸãããããã®ã©ã€ã»ã³ã¹ã¯ä»äººãããªãã®ã©ã€ãã©ãªãèªç±ã«äœ¿çšãæ¹å€ãåé åžããŠãè¯ããšèš±å¯ããããªãŒãã³ãœãŒã¹ã®ã©ã€ã»ã³ã¹ã§ãã
ãŸããèªèº«ã§ã©ã€ãã©ãªãéçºããéã«ä»ã®ã©ã€ãã©ãªãåèã«ããã䜿çšãããããå Žåããã®ã©ã€ãã©ãªã®ã©ã€ã»ã³ã¹ã確èªããéµå®ããå¿ èŠããããŸãã
5.4 ã³ãã¥ããã£ã«åå ¥ããããã®ã¢ããã€ã¹
Luaããã°ã©ãã³ã°ã«ãããã³ãã¥ããã£ãžã®åå ¥ã¯ã©ã€ãã©ãªã®éçºã«ãããŠå€§å€æçã§ããã³ãã¥ããã£ã¯ç¥èã®å ±æãæè¡ã®åäžããŸãåé¡è§£æ±ºã®ããã®æå©ããããŠãããŸãã
Luaã®ã³ãã¥ããã£ã«ã¯äžçäžã®å€ãã®Luaéçºè ãåå ããŠããããã®çµéšãæŽå¯ãå ±æããŠããŸãããŸããèªèº«ã®äœæããã©ã€ãã©ãªãã³ãã¥ããã£ã«æçš¿ããããšã§ãã£ãŒãããã¯ãåŸãããã©ã€ãã©ãªã®æ¹åã®ã¢ã€ãã¢ãåŸãããšãå¯èœã§ãã
æåŸã«ãã³ãã¥ããã£ã¯æ°ããªç¹ãããäœãããã®è¯ãå Žæã§ããããŸããä»ã®åãç®æšãæã€éçºè ãšã®ã³ãã¥ãã±ãŒã·ã§ã³ã¯ãæåãžã®éµãšãªãã§ãããã
6. ãŸãšãïŒLuaã©ã€ãã©ãªãæ倧é掻çšããã«ã¯
ãã®èšäºãéããŠãããªããLuaã©ã€ãã©ãªã®å¥¥æ·±ããŸã§æ¢ãããšãã§ããããšã§ããããããã§ã¯ãæåŸã«ãããã®ã©ã€ãã©ãªãæ倧éã«æŽ»çšããããã®4ã€ã®éµã玹ä»ããŸãã
ãããŸã§ã«Luaã©ã€ãã©ãªã®ç¹åŸŽã䜿ãæ¹ã«ã€ããŠè©³ãã説æããŠããŸããããäžæ¹ã§Luaã©ã€ãã©ãªãçšããããã°ã©ãã³ã°ã«ã¯å¹ åºãã¹ãã«ãå¿ èŠã§ããããã®ç¿åŸã«ã¯æéãšåªåãå¿ èŠãšãªãããšãç解ããŠããã ãããã§ããããã§ã¯ããã®éã®ããã¹ã ãŒãºã«é²ããããã®ãã³ããããã€ã玹ä»ããŸãã
ããã§ã¯å®éã«ç§ãã¡ãè¡ã£ãŠãã以äžã®é ç®ã«ã€ããŠèª¬æããŸãããã
6.1 é©åãªã©ã€ãã©ãªã®éžæ
Luaã©ã€ãã©ãªã¯ãã®çšéã«å¿ããŠæ§ã ãªãã®ãååšããŸããããªããã©ã®ãããªãããžã§ã¯ããé²ããŠããã®ãã«ãã£ãŠãæé©ãªã©ã€ãã©ãªã¯ç°ãªãã§ãããã
ãããžã§ã¯ãã®ç®çãé²è¡ç¶æ³ãèŠæ±ã«åºã¥ããŠé©åãªã©ã€ãã©ãªãéžã¶ããšã¯éèŠãªã¹ãããã§ããé©åã«ã©ã€ãã©ãªãéžæããããšã§ãå¹ççã«éçºãé²ããããšãå¯èœã«ãªããŸãã
ãã®ãããLuaã©ã€ãã©ãªã®è©³çŽ°ãç解ããããããã®ç¹æ§ãšçšéãææ¡ããããšã倧åã§ããããã«ãããå¿ èŠãªã©ã€ãã©ãªãå¹çããéžæã§ããããã«ãªãã§ãããã
6.2 Luaã¹ãã«ã®ç£šãæ¹
Luaã¹ãã«ã磚ãäžã§åºæ¬çãªããã°ã©ãã³ã°ã®ç解ãå¿ èŠã«ãªããŸããåºæ¬çãªããŒã¿æ§é ãã¢ã«ãŽãªãºã ãã«ãŒããæ¡ä»¶åå²ãªã©ã®å¶åŸ¡æ§é ã®ç¥èã¯æ¬ ãããŸããã
ãã¡ãããLuaç¹æã®æ©èœãã·ã³ã¿ãã¯ã¹ãç解ãã䜿ãããªãããšãäžå¯æ¬ ã§ããLuaã«ã¯ä»ã®èšèªãšã¯ç°ãªãå€ãã®ç¹åŸŽãããããããã®ç¹æ§ã«æºããããã°ã©ãã³ã°ã¹ã¿ã€ã«ã身ã«ã€ããããšããªãããéèŠã§ãã
ãããŠæçµçã«ãLuaã®çšéãLinuxäžã§ã®åäœãªã©ãããŸããŸãªç¹å®ã®ç¥èãååŸããããšã§ãLuaã¹ãã«ã磚ãããšãã§ããŸãã
6.3 Luaã³ãã¥ããã£ãžã®åå
Luaã®ã¹ãã«ã¢ããã«ã¯ãã³ãŒãã®ç解ã ãã§ãªããä»ã®éçºè ãšã®ã³ãã¥ãã±ãŒã·ã§ã³ãéåžžã«éèŠã§ãããããå®çŸããã®ãLuaã³ãã¥ããã£ã®ååšã§ãã
Luaã³ãã¥ããã£ã«åå ããããšã§ãä»ã®Luaéçºè ãããã£ãŒãããã¯ãåããæ°ããªèŠç¹ãåŸãããšãå¯èœã§ãããŸããæ°ããªã©ã€ãã©ãªã®ãªãªãŒã¹æ å ±ãã䜿ãæ¹ã®ãã³ããªã©ãåŸãããŸãã
ããã«ãããããªãèªèº«ã®ã¹ãã«ã¢ããã®é床ã倧ããäžããããšãã§ããŸããã³ãã¥ããã£ã¯ããŸããŸãªåœ¢ã§ååšããŠãããããäžã€ãŸãã¯è€æ°ã«åå ããŠã¿ãŠãæé©ãªãã®ãèŠã€ããŠãã ããã
6.4 ç¶ç¶çãªåŠç¿ãšå®è·µ
æåŸã«ããããŸã§è¿°ã¹ãŠãããã¹ãŠã®ã¹ãããã¯ãäžè²«ããåŠç¿ãšå®è·µã䌎ããã®ã§ããåã«çè«ãåŠã¶ã ãã§ã¯ãªããå®éã«Luaã©ã€ãã©ãªã䜿ã£ãŠããã°ã©ãã³ã°ãè¡ãããšããã¹ãã«ã磚ãäžã§å¿ èŠäžå¯æ¬ ã§ãã
ããŸããŸãªãããžã§ã¯ãã§Luaã©ã€ãã©ãªã䜿ãããšã§ããã®å šäœåãç解ããåé¡ã解決ããããã®åçš®æ段ãåŠã³ãŸãããã®ããã»ã¹ãéããŠãããªãèªèº«ã®Luaã¹ãã«ã¯å€§ããåäžããã§ãããã
Luaã©ã€ãã©ãªãæ倧éã«æŽ»çšããããã«ã¯ãLuaèšèªã®æ·±ãç解ã¯ãã¡ãããç¶ç¶çãªåŠç¿ãšå®è·µãç¶ããããšãå¿ èŠã§ãããã®éçšãéããŠãããªãã¯Luaã©ã€ãã©ãªãšå ±ã«æé·ããæŽãªãå¯èœæ§ãéãããšãã§ããã§ãããã