ð§ ããããããšããå§ããïŒAI æä»£ã® Rust åŠç¿è¡ãšãã®èœãšã穎
ðéç®åããã°ã©ãã³ã°åŠç¿æ³ãšã¯ïŒ
âããã ãããããããã€ããã® HTTP ãµãŒããŒéçºãµããããâ
ãã®èšäºã¯ ChatGPT ã§çæããŸããã
ðããã ããïŒè³ªå圹ïŒ
ããã£ïŒïŒ ãããïŒãéç®åãã£ãŠãªããç®æ°ã£ãœãèšèã ãã©ãããã°ã©ãã³ã°ã§ã䜿ããã®ã ïŒ
ðãããïŒè§£èª¬æ åœïŒ
ã¯ããããã ããããéç®ååŠç¿æ³ããšããã®ã¯ãç®çããéã«å¿ èŠãªç¥èãã¹ããããå²ãåºããŠåŠç¿ããæ¹æ³ã§ããããšãã°ãRust ã§ HTTP ãµãŒããŒãäœãããïŒããšããç®æšããããªããããããéã«ãHyper ãšããã©ã€ãã©ãªãå¿ èŠããã ãããã®ããã«ã¯ Tokio ã®éåæåŠçãç¥ã£ãŠããå¿ èŠãããããšéã«ãã©ã£ãŠãããã§ãã
ð¡ïžã€ããïŒãŸãšã圹ïŒ
ãµãããäœããããã®ããããå¿ èŠãªç¥èããçãåºããã€ãŸããå°å³ãªãã§æ©ãã®ã§ã¯ãªããç®çå°ããéãåŒããŠãããšããèãæ¹ã§ããããªã
ðããã ãã
ã§ããŒãããã¥ãŒããªã¢ã«ã«æ²¿ã£ãŠã³ãŒããåçµããŠããšããã€ãããããäœã®åœ¹ã«ç«ã€ã®ã ïŒãã£ãŠæã£ã¡ããã®ã ãïŒ
ðããã
ãããããéç®åã®ãã€ã³ãã§ããããã®ã³ãŒãã¯ã©ããªç®çã®ããã«ååšããã®ãããæèãããšãåŠç¿ã®ã¹ããŒããå®ççãäžãããŸãã
ããšãã°ãã®ã¹ãããïŒ
1. ç®æšïŒHTTP/2 ã«å¯Ÿå¿ããRust 補 Web ãµãŒããŒãäœã
2. å¿
èŠãªæ§æïŒTLSãéåæ I/Oãh2c 察å¿ãéçãã¡ã€ã«æäŸ
3. äœ¿çšæè¡ïŒHyper + Tokio + hyper_util
4. åŠã¶å
容ïŒFutureãStreamããµãŒãã¹ã®æœè±¡åïŒService ãã¬ã€ããªã©ïŒ
ð¡ïžã€ãã
ãªãã»ã©ãç®çããéã«éçãå®ããããŸãã§æŠå Žã®åžé£ã®ããã§ãããªãéã«ãé åºéãã«äžŠãã æ¬ããäžããèªãã ãã§ã¯ã宿Šã§ã¯åœ¹ã«ç«ãã¬ãšããããã§ãããã
ðããã ãã
ãããããŸãã¯ãäœããããã®ããæ±ºããã°ããã®ã ïŒ ããã£ããŒãã¯âŠãPHP ãåãRust 補 Web ãµãŒããŒããäœãããã®ã ïŒ
ðããã
ãããªãããFastCGI 察å¿ãããPHP ã®ããã»ã¹å¶åŸ¡ããMIME ã¿ã€ãã®æ±ãããªã©ãå¿ èŠã§ããããããªããã¹ãŠãåŠã¶ã®ã§ã¯ãªãã䜿ãå Žé¢ãåºãŠããæã«éç¹çã«èª¿ã¹ãã®ãã³ãã§ãã
ð¡ïžã€ãã
ããå¿ã§ããããç®çãå®ãŸãã°ãå°é£ã楜ãã¿ã«å€ãããéã¯éºãããšããå·±ã®éãèŠå€±ãã¬ããã«ãªã
ðããã ãã
ããŒãïŒç®æãããŒãã®æåŒ·WebãµãŒããŒããªã®ã ãïŒïŒ
ãŸãšã
ð§éç®åããã°ã©ãã³ã°åŠç¿æ³ã®ãã€ã³ã
ã¹ããã | å 容 |
---|---|
ð¯ç®çã®æç¢ºå | äœãäœããããïŒã©ãåãããããïŒ |
ð§©æè¡ã®æŽãåºã | å¿ èŠãªã©ã€ãã©ãªãããŒã«ãç¹å® |
ð ïžç¥èã®éç® | ãããåããããã«äœãåŠã¶ã¹ããïŒ |
ðå¿ èŠæåŠç¿ | ãã¹ãŠã§ã¯ãªãã䜿ããšãã«åŠã¶ã |
ð¡ïžã€ããïŒçµã³ïŒ
ãäœã®ããã«åŠã¶ã®ãïŒããã®åããããã°ãåŠã³ã¯è¿·åã«ãªãã¬ããã¹ãŠã®ç¥èã¯ç®çã«åãã£ãŠåæããããããã宿Šçããã°ã©ãã³ã°ä¿®è¡ã§ãããã
ðããã ãã
ç®çãæ±ºãããšãã³ãŒããæå³ããèšèã«èŠããŠããã®ã ïŒããã£ãæ°ãããã®ã ãïŒ
ãã¹ã³ãŒãå¶éãã§æå°æ§æããå§ãããïŒ
ðããã ããïŒè³ªå圹ïŒ
ããã£ïŒAI ã«ã³ãŒããæžããŠãããããšãããã©ããªããå šäœã®æ§æããµãã£ãšããŠãŠãåºãŠããã³ãŒããããããããªãã®ã ãïŒ
ðãããïŒæŽç圹ïŒ
ãããããããèœãšã穎ã§ãããAI ã¯äžèœã«èŠããŠãããå ·äœçãªã¹ã³ãŒãïŒç¯å²ïŒãããªããšãèšèšããã¬ãŠããŸããŸãã
ð¡ïžã€ããïŒç· ã圹ïŒ
æè ãçµéšãããããå šéšäœã£ãŠããšèšã£ãŠããèå¿ãªä»æ§ãææ§ã§ã䜿ãã¬ãã®ãåºãŠããããããããæå°ã®æ§æããæç€ºããããããAIæä»£ã®èŠè«Šã§ãããã
ðããã
ä»åã¯ãAI ã«æ£ããã³ãŒããæžããŠãããããã®ã¹ã³ãŒãå¶éãã«ã€ããŠã以äžã®ãããªæ§æã§è§£èª¬ããŸãïŒ
1. ãªãã¹ã³ãŒãå¶éãéèŠãªã®ãïŒ
2. æå°æ§æã£ãŠã©ãããå§ããã°ããã®ïŒ
3. AI ã«åºãæç€ºã®å
·äœäŸ
4. æ¡åŒµããŠãããšãã®æ³šæç¹
ðããã ãã
ããŒãïŒã³ãŒããé¡ããããšãã®ããé¡ãã®ãããè¬åº§ããªã®ã ãïŒ
â 1. ãªããã¹ã³ãŒãå¶éããéèŠãªã®ãïŒ
ðããã
AI ã«ãWeb ãµãŒããŒäœã£ãŠããšã ãé Œããšããã¬ãŒã ã¯ãŒã¯éžã³ããã«ãŒãã£ã³ã°ãŸã§å šéšèªåã§éžã°ããŸããã§ãããã£ãŠãããªãã®ç®çãšåã£ãŠããªããããããŸããã
ð¡ïžã€ãã
èŠã¯ãäœããã©ããŸã§ãã©ã®ããã«ãäœãããã®ããéå®ããã°ãAI ã¯ç確ãªå©å€ªåãšãªãã§ãããã
ðããã ãã
ãããããHyper ã䜿ã£ãŠãGET ãªã¯ãšã¹ããè¿ãã ãã®ãµãŒããŒããšãèšãã°ããã®ã ïŒ
ðããã
ãã®éãïŒããã æå°æ§æã®èãæ¹ã§ãã
âïž2. æå°æ§æã¯ããå§ãããïŒ
ç®çäŸ | æå°ã¹ã³ãŒãã®æžãæ¹ |
---|---|
éçãªã¬ã¹ãã³ã¹ãè¿ããµãŒã㌠| ãHyper + Tokio ã§ Hello, world! ãè¿ãã ãã |
åçã« HTML ãçæããã | ããã³ãã¬ãŒããªãã§ãç°¡å㪠HTML ãæååã§è¿ãã |
ããŒã¿ä¿åããã | ããã¡ã€ã«æžã蟌ã¿ã ããDB ã¯ããšã§ã |
ðããã ãã
ããã£ãããšã§ããããããšããããšãã¯ããšãããããããšã§ããïŒãã£ãŠæ±ºããšãã®ãã³ããªã®ã ãªïŒ
ð§ 3. AI ãžã®æç€ºãã³ãã¬ãŒã
ðãããã®ããããïŒ
Rust ã§ Hyper ã䜿ã£ãŠã以äžã®æ¡ä»¶ãæºããæå°æ§æã® HTTP ãµãŒããŒãæžããŠãã ããã
- Tokio ã䜿ã
- ãªã¯ãšã¹ã㯠GET ã®ã¿å¯Ÿå¿
- `/hello` ã«ã¢ã¯ã»ã¹ãããš "Hello, Zundamon!" ãè¿ã
- ãšã©ãŒãã³ããªã³ã°ã¯æäœé
- æ¡åŒµããããæ§é ã«ããŠãããŠãã ãã
ð¡ïžã€ãã
ãæå°ã§ãããã ãåŸã®æ¡åŒµãèŠæ®ããããæ§æã®æ ¹ã¯å°ãããšããå¹¹ã䌞ã°ãç€ãšãªãããã«ç³ããããã
â©ïž4. æ¡åŒµæã®å¿æ§ãïŒãã¬ãªã軞ãæãŠ
ðããã
æå°æ§æãäœã£ãããæ¬¡ã«ãã©ã®æ¹åã«äŒžã°ããããæ±ºããŠãããŸãã
äŸïŒ
- ð éåæåŠçã远å ïŒStream, async handler
- ð èªèšŒã远å ïŒmiddleware åãæ€èš
- ðŸ ãã¡ã€ã«ã»DB ä¿åïŒè²¬åãåé¢ããæ§æã«
ãã®ãšãããäžåºŠã«å šéšããããšããªãããšãéåã§ãã
ðããã ãã
ãæå°âã¡ãã£ãšè¿œå âãŸã AI ã«èããã£ãŠç¹°ãè¿ãã°ãè¿·åã«ãªããªãã®ã ïŒ
ð¡ïžã€ããïŒçµã³ïŒ
æå°æ§æãšã¯ãå¶éã§ã¯ãªãæéãAIã¯ç¡éã«åºãããã人ã®å¿ã¯æéãæè ãã¡ã¯ãã¹ã³ãŒããšããç¯ç«ã§ãæ£ããéãç §ããã§ãããã
ãŸãšã
ðAIã«ã³ãŒããæžãããããã®ãæå°æ§æ à ã¹ã³ãŒãå¶éã5ã«æ¡
æèš | å 容 |
---|---|
ð¯ç®çãæç¢ºã« | ãäœãåãããããèšèªåãã |
âïžæå°åäœã§é Œã | Hello world ã§ãååã«æå³ããã |
ð§æç€ºãå ·äœåãã | äœ¿çšæè¡ã»æ¡ä»¶ãæç€ºãã |
ð ïžæ§æãåºå®ããããªã | ãããŠæªå®éšåãæ®ã |
ðæ®µéçã«é²ãã | æ¯åãAIãšæ§æãèŠçŽã |
ðããã ãã
ããã§ãAI ã«äžæã«é Œããããªã®ã ïŒããã ããæµã»æå°ã¹ã³ãŒãéçºãå§ãŸãã®ã ãïŒ
ð§ AI ã³ãŒãã£ã³ã°ã®èœãšã穎
ðããã ããïŒè³ªå圹ïŒ
ããã£ïŒRust ã§ãããããããšãããå§ããããéäžã§ã©ãããã¡ãªã®ãããããªããªã£ãŠãAI ã«èããŠãã©ãã©ã沌ã«ããã£ãã®ã ïœïŒ
ðãããïŒè§£èª¬ã»æŽçïŒ
æè¿ã¯ããŸããã£ãŠã¿ããïŒããåèšèã¿ããã«ãªã£ãŠããŸãããAIãšäžç·ã«RustãåŠã¶å Žåã«ã¯ããã€ãèœãšã穎ããããã§ããä»åã¯ãããã ããã®å€±æãããšã«ãAI æä»£ã® Rust åŠç¿ã§ãããã¡ãªâã€ãŸããâãšãããããåŸãç¥èŠã玹ä»ããŸãã
ð¡ïžã€ããïŒãŸãšãã»å€æïŒ
å¿ããè ã®å€±æã¯å®ã§ãããã倱æããæ§é ãèªã¿è§£ããæ¬¡ãªãæŠãžæŽ»ããããããçã®åŠã³ãšãããã®ã
ð¥ 倱æâ ïŒãåãã°ããããã§çµã¿å§ãããäŸåå°çïŒ
ðããã ãã
ãHyper ã§ãµãŒããŒäœãã®ã ïŒãã£ãŠ AI ã«èããããTokio ãå¿
èŠã£ãŠèšãããŠã次ã¯TLSïŒh2ïŒãªãããã£ã±ãåºãŠããã®ã ãïŒ
ðããã
æåã«ãå
šéšå
¥ãã®ç®æšããç«ãŠããšãããã«ä»éããæè¡ãäžæ°ã«è¥²ã£ãŠããŸããããããRust ã¯å®å
šæ§ã®ããã«æç€ºçãªæ§æãæ±ãããããããAI ãæ£ç¢ºã«æ¡å
ãã«ãããã§ãã
ð¡ïžã€ãã
ãå šéšäœã£ãŠãã¯æŠç¥ãªãçªæãéãå®ããã
ð¡æèšâ ïŒããããããšã¯ãåå²ãããŠå°ããå®è£ ïŒ
NGäŸ | æ¹åäŸ |
---|---|
TLS 察å¿ã® HTTP/2 ãµãŒã㌠| Hyper ã§ Hello ãè¿ãã ã |
AI ã©ã€ãã©ãªçµã¿èŸŒã¿ | JSON API ã§å€éšåŒã³åºãã®ã¿ |
ð¥ 倱æâ¡ïŒAI ã®åºãã³ãŒãã®ãæå³ããããããªãã£ãïŒ
ðããã ãã
clone ãšã async ãšãããªãã§ããããã®ãåãããªãã®ã ãïŒ
ðããã
AI ã¯ã³ãŒããçæã§ããŠããæå³ãèæ¯ãŸã§ã¯äŒããŠãããªãããšãå€ãã§ãã質åã®ä»æ¹ãæ§é åããå¿
èŠããããŸãã
ð¡æèšâ¡ïŒãæ§é åãããåãããå¿ èŠïŒ
ãã¡ãªèãæ¹ | ããèãæ¹ |
---|---|
ããªãã§ããããã®ïŒã | ããã®é¢æ°ãå¿ èŠãªçç±ãšãåŒæ°ã®åã®é¢ä¿ã説æããŠã |
ããã® clone ã£ãŠããïŒã | ããã® clone ããªããšã©ããªãããäŸã亀ããŠèª¬æããŠã |
ð¥ 倱æâ¢ïŒããšã§å€æŽã§ããªããªã£ãïŒ
ðããã ãã
AI ãæžããŠãããã³ãŒãã¯åããã©ãããšã§å·®ãæ¿ããããšãããå
šç¶èŠã€ããããªãã®ã ãïŒ
ðããã
å·®ãæ¿ããããã¯ãæåã®èšèšæ¬¡ç¬¬ãAI ã¯çæçã«æ£ããåãã³ãŒããè¿ããã©ãä¿å®æ§ãŸã§ã¯èæ
®ããªãããšãå€ãã§ãã
ð¡æèšâ¢ïŒãå·®ãæ¿ãå¯èœæ§é ããæèããïŒ
é¿ãããæ§é | æãŸããæ§é |
---|---|
å šãŠ main.rs ã§åŠç | ã¢ãžã¥ãŒã«åå² + trait æœè±¡å |
ãã¹ãã ããã® match | ãã³ãã©é¢æ°ã®æœåºãšæç€º |
â ãŸãšã
æèš | å 容 |
---|---|
ð¯ã¹ã³ãŒãå¶é | å°ããå§ããŠæ®µéçã«æ¡åŒµ |
ð§ æ§é çãªåã | ããªãããããã®ãïŒããèšèªåãã |
ð§å·®ãæ¿ãåæèšèš | å¯å€éšåã trait ã颿°ã§ç®¡ç |
ðèšé²ãæ®ã | 察話ãã°ãèšèšã¡ã¢ã Markdown ã§ç®¡ç |
ð¡ïžã€ããïŒçµã³ïŒ
倱æãæãããªããã ããåŠã³ã眮ãå»ãã«ããŠã¯ãªãã¬ãAI ãšãšãã«ããæä»£ãããèªãåããç«ãŠãæ§é ãæãè ã匷ãã§ãããã
ðãããïŒãµããããïŒ
AI ãš Rust ã§æ¥œããéçºããã«ã¯ããã€ãŸãããèšé²ããŠåãã«å€ãããå§¿å¢ã倧åã§ããè¡ãè©°ãŸã£ãããããã¯æ¬¡ã®åãã®ã¿ãã倱æãæãããåããè²ãŠãŠãããŸãããã
Discussion