
å人éçºããçéãªè³è²žæ€çŽ¢ãµãŒãã¹ã®æ§æïŒ2024幎çïŒ
å人ã§éå¶ããŠããè³è²žç©ä»¶ã®æ€çŽ¢ãµãŒãã¹ Comfy ã«é¢ããŠã®æè¡èšäºã§ããããå人éçºãçéãªè³è²žç©ä»¶ã®æ€çŽ¢ãµãŒãã¹ãäœã£ããã¯ãããŸãŸã§ããããã®äººã«èªãã§ããã ãããšãã§ããŸãããããããšãããããŸãã
ãªãªãŒã¹ããæ¬æ¥ã§äžžäžå¹Žãšããç¯ç®ã§ããããèšäºã«èšèŒãããªãªãŒã¹åœåã®æ§æããããã¶ããšå€æŽããŠããã®ã§ãçŸç¶ã®ã·ã¹ãã æ§æãå ¬éããããŸãã
Comfy ãšã¯
Comfy ã¯ æ¥æ¬å šåœã®è³è²žç©ä»¶ãè¶ é«éã«æ€çŽ¢ã§ãã Web ãµãŒãã¹ ã§ãã

ãšãŠããã ãã£ãŠ UI ãäœã蟌ãã§ããã®ã§ããããããã°ãã¡ãããã詊ãé ãããšããããã§ãã
çŸç¶ã®ã·ã¹ãã æ§ææŠèŠ
2024幎11æçŸåšã®ã·ã¹ãã æ§æã¯ãã¡ãã§ãã

å³ã®äžã§èµ€ãå²ã£ãéšåãããªãªãŒã¹åœåããã®å€æŽç¹ã§ãã
ãã以å€ã®ç®æã«é¢ããŠã¯å€§ããªå€åã¯ãªããäžèšã®ä»¥åã®èšäºã«æžãããšããã§ãã
ãªãªãŒã¹åœåããã® 5 ã€ã®å€æŽç¹
ïŒïŒãããã³ããšã³ãã Cloudflare Pages ãã Vercel ã«

ãªãªãŒã¹åœåã¯ãããã³ããšã³ãã®ãããã€å
ãšã㊠Cloudflare Pages ã䜿çšããŠããŸããã 2022 幎㫠Vercel ã«ç§»è¡ããŸããã
èæ¯ãšããŠã¯ãNext.js ã® SSR (ãµãŒããµã€ãã¬ã³ããªã³ã°)ã䜿çšããŠãå°åãçµã蟌ãã ã©ã³ãã£ã³ã°ããŒãžãçšæãããã£ãããã§ãïŒäŸãã°æ±äº¬éœæž¯åºã®ã©ã³ãã£ã³ã°ããŒãžãšã㊠https://comfy.maison/location/3-13103 ãçšæããæãã§ãïŒã
åœæã¯ãŸã App Router å°å
¥åã® Next.js ã§ãããã Cloudflare Pages 㯠Next.js ã® SSR ã«å¯Ÿå¿ããŠããŸããã§ããïŒãããã¯ãããªãé¢åãªããšãããªããã°å®çŸã§ããªãã£ãïŒã
Vercel ã«ç§»è¡ããŠãã䜿çšåž¯åã SSR ã® build ã®åæ°ãä»ã®æ¡ä»¶ã»å¶çŽã«é¢ããŠããªãŒãã©ã³ã®é©çšå
ã«åãŸã£ãŠããŸãã䜿ãåæèªäœã Cloudflare Pages ãšå€§ããŠå€ãããŸããã§ããã
ç¹ã«äžæºã«æã£ãç¹ã¯ãªããVercel ãžç§»è¡ããŠããã£ããšæã£ãŠããŸããïŒããç§»è¡äœæ¥èªäœã 2 幎以äžåãªã®ã§ãã¯ã£ãããšèŠããŠããŸãããâŠïŒ
ïŒïŒãããã³ããšã³ãã Preact ãã React ã«

ãŸããVercel ãžä¹ãæã㊠Next.js ã® componentïŒnext/script ã next/link ãªã©ïŒã䜿ã£ãã SSR ã§ããŒãžã远å ããéã«ããããŸã§äœ¿çšããŠãã Preact ã ãšãããããªãšã©ãŒãåºããããŸããããªãããšããã£ãã®ã§ãçŽ çŽã« React ã䜿ãããšã«ããŸããã
Preact èªäœã¯è»œéãªã®ã§ããããããã React æ¬äœã®ãµã€ãºã¯ããŸãããã«ããã¯ã«ãªã£ãŠããªãã£ãã®ãšãå€ãã®äººãå©çšããŠãã React ã®æ¹ã確å®ã«æ§ã
ãªæ©æµãåãããã ãããšãã倿ã§ããã
Preact ãã React ãžã¯ãã»ãŒäœæ¥ç¡ãã§ç§»è¡ã§ããããšæã£ãŠããã®ã§ããããªã«ããš build ã®ãšã©ãŒãçºçãããããŠå€§å€ã ã£ãããšãèŠããŠããŸãâŠïŒè©³çްã¯èŠããŠããŸãããGitHub çã®èšé²ãããã®ãŒã£ãŠç¢ºèªããããšã¯ã§ããã®ã§ãæ°ã«ãªãæ¹ãããã°ãé£çµ¡ãã ãããå¥ã®èšäºã«ã§ãããããããŸããïŒ
ïŒïŒãããã³ããšã³ãã  Leaflet ãã MapLibre GL JS ã«

ã€ã³ã¿ã©ã¯ãã£ããªå°å³æ©èœã®å®çŸã«ã¯ãLeaflet ãšããã©ã€ãã©ãªã䜿çšããŠããŸããããã¡ããã©ä»ããäžå¹Žã»ã©åã« MapLibre GL JS ãšããã©ã€ãã©ãªã«ç§»è¡ããŸããïŒãªããGoogle Maps ã¯ææã ã£ãã®ã§ãæåããéžæè¢ã«å ¥ã£ãŠããŸããïŒã
ãã®èæ¯ã¯ãéœéåºçãåžåºçºæã®ããªãŽã³ïŒèªæ²»äœã®å¢çç·ãããªãå³åœ¢ïŒã«é¢ããŠããã¯ãã«ã¿ã€ã«ãéçã«é
ä¿¡ãããã£ãããšã§ãã
ããã®è©±ã¯ããªãããããããã€ããå°éçãªè©±ãªã®ã§ãããLeaflet ãã€ãã£ãŠããéã«ã¯ãããã¯ãšã³ãã®åŠçãšããŠããªã¯ãšã¹ãã®åºŠã«åžåºçºæãªã©ã®ããªãŽã³ãéœåºŠéžå®ãåŠçããŠã¬ã¹ãã³ã¹ãè¿ããšããããšãè¡ã£ãŠããŸããã
ãã®åŠçèªäœãè¥å¹²éãã£ãããšããã£ãã®ã§ãããããã¯ãšã³ãã®ãã¡ã€ã«ãã©ã€ãã©ãªã§å°çæ
å ±ãå€åã«æ±ããããåŸããç
©éãªäœãã«ãªã£ãŠããŸããã
èªæ²»äœã®ããªãŽã³ããŒã¿ã PMTiles ãšããéçãªãã¯ãã«ã¿ã€ã«ãé
ä¿¡ããæ§æã«å€æŽããããšã«ãã£ãŠãããã¯ãšã³ãã§ã®å°çæ
å ±ã«é¢ããåŠçãã»ãŒé€å€ããããšãã§ãããšãŠãç°¡çŽ ãªä»çµã¿ã«ããããšãã§ããŸããã
ãã®å€æŽã¯ãããã¯ãšã³ãã®è€éæ§ãå€§å¹ ã«æžããã³ãŒãã倧éã«æžã£ããããããã¯ãšã³ãã® Rust ãžã®ãªãã¬ãŒã¹æã«ãéåžžã«æçšãªå€æŽãšãªããŸããã
ãŸãããã®ãªãã¬ãŒã¹ã«ãã£ãŠãå°å³ã®æäœæ§ãæ Œæ®µã«äžãããå°å³è¡šç€ºãå§åçã«çŸãããªããŸããïŒäžèšã¯ãã®æã®ãªãªãŒã¹ã®åç¥ãã€ãŒãã§ããïŒ
å»å¹Žã®æ®ããããããã£ããšéçºãã Comfy ã®å°å³ UI ã®æ¹åããªãªãŒã¹ããŸããâŠïŒïŒïŒ
â choo (@choo_s) January 31, 2024
ä»åãå°å³ã®ã©ã€ãã©ãªã Leaflet ãã MapLibre GL JS ã«ç§»è¡ããŠãä»ãŸã§é£ããã£ã衚瀺ãªã©ãå®çŸããããå šè¬çã«ãšãŠãçŸããæäœæ§ã®é«ãå°å³ UI ãå®çŸããŠããŸãð⊠https://t.co/wtWbIm3lmt
ïŒïŒãããã¯ãšã³ãã Python â FastAPI ãã Rust âActix Web ã«

ããã¯ãšã³ãã«é¢ããŠã¯ããªãªãŒã¹åœåããã»ãŒãã«ãªãã¬ãŒã¹ããŠãããä»åããŠããã³ãŒãã§ãªãªãŒã¹åœåãããã£ãã³ãŒãã¯äžè¡ããããŸããã
ãªãªãŒã¹åœåã¯ãPython3 ã§å®è£ ããŠããããã¬ãŒã ã¯ãŒã¯ãšã㊠FastAPI ã䜿çšããŠããŸãããããã¯ãšã³ããé«éã§åŠçãããããšã¯ãµãŒãã¹ã®æ ¹å¹¹ã§ãããé«éåã®å·¥å€«ã®ã²ãšã€ãšã㊠C++ ã«ãã Python ã®æ¡åŒµã¢ãžã¥ãŒã«ãå®è£ ããŠããŸããã
ä»åŸãããã¯ãšã³ãã«æ§ã
ãªæ©èœã远å ããããšèããŠããæã« C++ ã®æ¡åŒµã¢ãžã¥ãŒã«ãåŒãç¶ããã£ãšã¡ã³ããã³ã¹ããã®ãçªåŠããã©ãããæ°æã¡ã«ãªããŸããã
ããšãã£ãŠãã«ãªãã¬ãŒã¹ããå¿
èŠããªãããªãšæã£ãŠããã®ã§ããã詊ãã« Rust ã§ã³ãŒããæžããŠã¿ãããããšãã Rust ã®çŽ æŽãããã«ç®èŠããC++ ã®æ¡åŒµã¢ãžã¥ãŒã«ãåŒãç¶ãã¡ã³ããã³ã¹ããããã Rust ã«ä¹ãæããæ¹ããããšããçµè«ã«éããŸããã
Web ãã¬ãŒã ã¯ãŒã¯ãšã㊠Actix Web ãããã£ãšéžå®ããéçºæéã¯çŽ 1 ã¶æãããããããæ§èœãçŽ 1.5 åã«åäžããŸãããããã«å
šãåçã®æ©èœãå®è£
ããã®ã§ãããã³ãŒãã®è¡æ°ã¯çŽ 40 % ã«ãªããŸããã
Rust ã§ã®å®è£
ã¯ãéçºäœéšãéåžžã«ãããæ³å以äžã®çµæãåŸãããŠãšãŠãæºè¶³ã§ããã
ãã®ãªãã¬ãŒã¹ã®è©³çްã¯ãäžèšã®èšäºã«ãŸãšããŠããŸãã®ã§ããããããã°ãåç §ããã ããã°ãšæããŸãã
ïŒïŒãã€ã³ãã©ã Google Compute Engine ãã Cloud Run ã«

ãªãªãŒã¹åœåãããã£ãšãããã¯ãšã³ãã®åäœç°å¢ãšã㊠Google Cloud Platform ã䜿çšããŠããŸãã
äžèšã®ããã¯ãšã³ãã® Rust ãžã®ç§»è¡æã«ããããŸã§äœ¿çšããŠãã Google Compute Engine (GCEãAWS ã§ãã EC2) ãã Cloud Run ãžç§»è¡ããŸããã
èæ¯ãšããŠã¯ãRust ãš Actix Web ã䜿ã£ãŠç§»è¡åã® logging ãå®çŸãããããšãããšé¢åãªåŠçãå¿ èŠãšãªãããšãããããããã 3 æ¥éã»ã©ããªãæ©ãã åŸã«ãæšæºåºåããã®ãŸãŸ logging ã§ãã Cloud Run ãžç§»è¡ã決ããŸããã
å®ã¯ Cloud Run ãžã®ç§»è¡æãããã£ã¹ã¯ã䜿ãããã¹ãŠããŒã¿ãã¡ã¢ãªã§ä¿æããå¿ èŠããããªã©ãããããªåé¡ããã£ãïŒãªããžã§ã¯ãã¹ãã¬ãŒãžã¯ããŠã³ãã§ããã®ã§ãããæ€èšŒãããšããæ¬ãµãŒãã¹ã®äœ¿çšã ãšãããåé¡ãå€ãã£ãïŒã®ã§ãããããã¯ãŸãã©ããã§æžããã°ãšæããŸãã
Cloud Run ãžã®ç§»è¡ã¯ãçµæãšããŠã³ã¹ãã®å€§å¹ ãªåæžã«æåããããã¯ã©ã®ãªãã¬ãŒã¹ãããå å¿å¬ããçµæããããããŸããã

ãããã«
é·æãªããæåŸãŸã§èªãã§ããã ããæ¬åœã«ããããšãããããŸãã
ãããªã«ãã²ãšã€ã§ãåèã«ãªãããšãããã°å¹žãã§ãã
ãã® 11 æãããnote ã§æ¯æ¥ãªãããã®èšäºãæçš¿ãããšãã詊ã¿ãããŠããŸããä»åŸã¯æè¡èšäºããã¡ãã§æžããŠããããšæããŸãã
ä»åã® Comfy ã®æ§æã«é¢ãã話ã§ãããã§ãªã話ã§ããããæžããŠã»ããããŒããªã©ãããã°ããã²ãã²ãªã¯ãšã¹ãããã ãããšå¬ããã§ãã
P.S.
Comfy ã®ãªãªãŒã¹ãã仿¥ã§ã¡ããã© 3 幎ãçµã¡ãŸããã
ãã®ç¯ç®ã®æ¥ã«ããã®ãããªæ¯ãè¿ãã®èšäºãæžããããšãæãåºããšä»ãŸã§åãçµãã§ããããšãå€ã
ãã£ããšããäºå®ããªãªãŒã¹ãããããŸã§å€§ããªé害ãèµ·ããããšããªãäžåºŠãããšããµãŒãã¹åæ¢ããããšãªãéå¶ã§ããŠããããšããããŠãªã«ãããæ¬åœã«ããããã®ãŠãŒã¶ããã«äœ¿ã£ãŠããã ããããããã®å¬ããèšèãé ããŠããããšããã¹ãŠéçºè
ãšããŠãã®äžãªã幞ããªããšã§ãã
æ¬åœã«ããããšãããããŸãã
ããããããããã£ãšãã£ãšå€ãã®äººã«æããŠé ããããããã£ãšãã£ãšå€ãã®äººã®ã圹ã«ç«ãŠããããåŒãç¶ããµãŒãã¹ã磚ãäžããŠãããããšåžžæ¥é èããŠããŸãã
ãªã¢ã«ãªåè²ãŠãšåæ§ãããŸããããªãããšãå€ã
ããããªããªããŠãŒã¶ããã®ãªã¯ãšã¹ãã«ãå¿ããããŠããªãããšãå€ããããŸãããä»åŸããµãŒãã¹ãéçºè
ãšãã©ããåŒãç¶ãã©ãããæé¡§ã®ã»ã©ãããããé¡ãããããŸãã