Mojo ã¯ãPython ã®èªã¿ããããš C++ ã®é床ãçµã¿åãããèšèªã§ãã ããã¯ãããŒããŠã§ã¢ã«è¿ãäœã¬ãã«ã®ã³ãŒããããããã¯ãšã³ã API èšèšãä»ããŠãããã³ããšã³ãã Web ã®äžçã«è³ããŸã§ãããŸããŸãªçšéã«åœ¹ç«ã¡ãŸãã Mojo ã¯ãææ°ã®ã¹ã¿ãã¯å šäœã«ããã£ãŠæ¡åŒµã§ããã»ã©åŒ·åã§ãããã®èšèªã¯ AI ãšæ©æ¢°åŠç¿ã念é ã«çœ®ããŠèšèšãããŠãããããAI éçºè ãããŒã¿ ãµã€ãšã³ãã£ã¹ãã«ãšã£ãŠç¹ã«åœ¹ç«ã¡ãŸãã ã¢ãžã§ã¯ãŸã è¥ãã§ãããšã³ã·ã¹ãã ã«ã¯ããããã¯ãŒãã³ã°ãåºæ¬ç㪠HTTP æäœãªã©ãæ¥åžžçãªãœãããŠã§ã¢éçºã®ããã®ããŒã«ãæ¬ ããŠããŸãã ãã㧠ãç»å ŽããŸãã Lightbug ð¥ð çŽç²ãª Mojo ã§æžãããã·ã³ãã«ãª HTTP ãã¬ãŒã ã¯ãŒã¯ã§ãããããã©ã«ãã§ã¯å€éšäŸåé¢ä¿ããããŸãããããã¯ãããè€éãªãããžã§ã¯ãã®åºç€ãšããŠæ©èœããããšãç®çãšããŠãããéçåä»ããåªããããã©ãŒãã³ã¹ãªã©ã®ãã®èšèªã®æ©èœã掻çšããªãããAPI ãªã©ã® Web ãµãŒãã¹ã®éçºãåºæ¬çãªã«ãŒãã£ã³ã°ã®èšå®ãããã«ã¯ Mojo 㧠HTML ããŒãžã®æäŸãè¡ãããšãã§ããŸãã ã Lightbug ð¥ð 㯠å§ããã«ã¯ãåã« ãš ãã€ã³ã¹ããŒã«ããLightbug Github ãªããžããªã®ã¯ããŒã³ãäœæããŸãã Mojo Git git clone https://github.com/saviorand/lightbug_http.git ã¯ããŒã³ãäœæãããããã³ãã³ã ã©ã€ã³ã§ãã£ã¬ã¯ããªã«åãæ¿ããŸãã cd lightbug_http 次ã«ããµãŒããŒãå®è¡ããŸã (ã¯ãããã㯠Mojo ãã¡ã€ã«æ¡åŒµåã§ã! ð¥): mojo lightbug.ð¥ 次ã®è¡ãã³ã³ãœãŒã«ã«åºåãããã¯ãã§ãã ð¥ð Lightbug is listening on 0.0.0.0:8080 Ready to accept connections... ããã§ããµãŒããŒãžã®ãªã¯ãšã¹ããéå§ãããããã©ãŠã¶ã§ ãŸã㯠ãéããŠã¿ãŠãã ãããã€ã³ããç»é¢ã衚瀺ãããã¯ãã§ãã Mojo ã¹ã¿ã€ã«ã® Web ãžãããã!ããã§ã¯ãå®éã®ã³ãŒãã£ã³ã°ã«ç§»ããŸãããã localhost:8080 0.0.0.0:8080 Lightbug ã¯ãŸã è¥ãã§ãããçŸä»£ã® Web åãã«éçºã§ãããšäººã ãæåŸ ããŠããã³ã¢æ©èœã¯ãã§ã«ååšããŠããŸãã ãŸã ããã±ãŒãž ãããŒãžã£ãŒããªããããç¬èªã®ãããžã§ã¯ãå ã®ãµããã©ã«ããŒãšã㊠ãå«ããå¿ èŠãããããšã«æ³šæããŠãã ããããã㯠ãšããŠæ©èœããWeb ããªããã£ãããµãŒããŒãªã©ã®ããŒã«ã Lightbug ããã€ã³ããŒãã§ããããã«ãªããŸãã lightbug_http Mojo ããã±ãŒãž ããšãã°ããµãŒããŒãã€ã³ããŒãããã«ã¯ãããããã¡ã€ã«ã®å é ã«è¿œå ããŸãã from lightbug_http.sys.server import SysServer ããã«ãããçŽç²ãª Mojo ã«ãµãŒããŒå®è£ ãã€ã³ããŒããããŸãã Python å®è£ ã䜿çšããå Žåã¯ã代ããã« ãã€ã³ããŒãããŸããåãããã«åäœããŸãã PythonServer HTTP ãµãŒãã¹ãäœæããã«ã¯ã ãæºããæ§é äœãäœæããã ãã§ããã€ãŸãã次ã®ã·ã°ããã£ãæ〠ã¡ãœãããå«ãŸããŠããŸãã HTTPService trait func trait HTTPService: fn func(self, req: HTTPRequest) raises -> HTTPResponse: ... ããã¯ãçµã¿èŸŒã¿ããªããã£ãã䜿çšã㊠ãåãåããMojo ãŸã㯠Python ã§äœæããã«ã¹ã¿ã ããžãã¯ãå®è¡ããããŒã¿ãå«ã ãªããžã§ã¯ãã API ã³ã³ã·ã¥ãŒããŒã«è¿ããŸãã HTTPRequest HTTPResponse ã«éä¿¡ããããã¹ãŠã®ãªã¯ãšã¹ããã³ã³ãœãŒã«ã«åºåãããµãŒãã¹ãäœæããŠã¿ãŸãããããããè¡ãã«ã¯ã ãšãããã¡ã€ã«ãäœæãã次ã®å 容ã貌ãä»ããŸãã 0.0.0.0:8080 my_awesome_service.ð¥ from lightbug_http import * @value struct Printer(HTTPService): fn func(self, req: HTTPRequest) raises -> HTTPResponse: let body = req.body_raw print(String(body)) return OK(body) fn main() raises: var server = SysServer() let handler = Printer() server.listen_and_serve("0.0.0.0:8080", handler) ãå®è¡ãã ã ãªã©ã®ãæ°ã«å ¥ãã® API ã¯ã©ã€ã¢ã³ããã ã«ãªã¯ãšã¹ããéä¿¡ããŸãããªã¯ãšã¹ãã«é¢ãã詳现ãã³ã³ãœãŒã«ã«åºåãããã¯ãã§ãã mojo my_awesome_service.ð¥ Insomnia Bruno 0.0.0.0:8080 ããã§ãšãããããŸãïŒããã§ããªãã¯æ£åŒã« Mojo Web éçºè ã§ã ð¥ã ãã®äŸã§ã¯ãããããããããããã«ã ãšããå€æ°ã ã§åæåã (åå²ãåœãŠã§ããªãããšãæå³ããŸã)ãããã 2 çªç®ã®ãã©ã¡ãŒã¿ãšã㊠ã«æž¡ããŸãã handler let listen_and_serve ãã³ã¬ãŒã¿ãŒã®è¿œå ã¯ãªãã·ã§ã³ã§ããäžçŽ Mojician ã§ããã°ã代ããã« ãè¿œå ã§ããŸããåãããã«æ©èœããŸãã ããã®ã¡ãœãããšä»ã®äŸ¿å©ãªã¡ãœãããèªåçã«çæããã ãã§ãã @value __init__ ã³ã³ã¹ãã©ã¯ã¿ãŒ ã¡ãœãã @value struct Printer(HTTPService): fn __init__(inout self): print("Printer initialized!") fn func(self, req: HTTPRequest) raises -> HTTPResponse: let body = req.body_raw print(String(body)) return OK(body) ãšèšãããããç¥ããŸããããããã¯äžã€ã®ã«ãŒãã«éããŸããïŒææ°ã® API ã«ã¯ãã以äžã®ãã®ãå¿ èŠã§ãã Lightbug ã¯ããã€ãã®åºæ¬çãªã«ãŒãã£ã³ã°ãè¡ãããšãã§ããŸãã @value struct ExampleRouter(HTTPService): fn func(self, req: HTTPRequest) raises -> HTTPResponse: let body = req.body_raw let uri = req.uri() if uri.path() == "/": print("I'm on the index path!") if uri.path() == "/first": print("I'm on /first!") elif uri.path() == "/second": print("I'm on /second!") return OK(body) ããã ã«è¿œå ãããã³ãã©ãŒãšããŠãµãŒããŒã«æž¡ããŸãã my_awesome_service.ð¥ fn main() raises: var server = SysServer() let handler = ExampleRouter() server.listen_and_serve("0.0.0.0:8080", handler) ããã§ããã©ãŠã¶ãéã㊠ã ã«ç§»åããŠå€æŽã確èªã§ããŸãã localhost:8080/first localhost:8080/second ãã®æ©èœã¯ã ã§ãã軜éãã¬ãŒã ã¯ãŒã¯/ããŒã«ããããæäŸã§ããæè»æ§ãšã«ã¹ã¿ãã€ãº ãªãã·ã§ã³ã掻çšããªãããHTTP ãå©çšããç¬èªã®ã¢ããªãã©ã€ãã©ãªãããã³ãµãŒãã¹ãéçºããããã®åºç€ãæäŸããŸãã lightbug_http ç§ãã¡ã¯ã ããã³ ããã±ãŒãžãæ§ç¯ããããšã§ãã«ãŒãã£ã³ã°ã ãã§ãªããOpenAPI ä»æ§ããã® API ã®äœæãšçæãããŒã¿ ã¢ãã«ã®èšèšãWeb ã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãªã©ã®ä»ã®ã¿ã¹ã¯ãå°æ¥çã«ããã«æ¥œããããäºå®ã§ãã詳现ã«ã€ããŠã¯ ãã芧ãã ããã lightbug_api lightbug_web ãããŒãããã ã®çŽ¹ä»ã¯ä»¥äžã§ã !ã圹ã«ç«ãŠã°å¹žãã§ãã Lightbug ð¥ð ããã¯ãªãŒãã³ãœãŒã¹ã®éå¶å©ã³ãã¥ãã㣠ãããžã§ã¯ãã§ãã ç§ãã¡ã® ã¹ã¿ãŒãä»ããŠãã ãã â ã«åå ããŠãããªãã®ã³ãŒãã«è²¢ç®ããæ¹æ³ããã§ãã¯ããŠãã ãããããããã°ãä»ã® Mojicians ã«ãšã£ãŠããã«è¯ããã®ã«ããããšãã§ããŸãã Github ãªããžããªã« Discord 次åãŸã§ïŒ