ãã£ã³ãã¹ãšã³ãŒãã®åºäŒã: Figmaã®ã³ãŒãã¬ã€ã€ãŒã®æ§ç¯



ããããã¶ã€ã³ãšãã«ããåããã£ã³ãã¹äžã§è¡ãããšãããã©ãã§ããããããã§ã¯ããã¶ã€ã³ãšã³ãŒããçµã³ã€ããããã«ãã©ã®ããã«ã³ãŒãã¬ã€ã€ãŒãäœæãããã玹ä»ããŸãã
ãã£ã³ãã¹ãšã³ãŒãã®åºäŒã: Figmaã®ã³ãŒãã¬ã€ã€ãŒã®æ§ç¯ãå ±æ
ã€ã©ã¹ã: Fiona Ye
å é±ãFigma Sitesã®æ°ããã¬ã€ã€ãŒã¿ã€ãã§ããã³ãŒãã¬ã€ã€ãŒã®ããŒã¿çããªãªãŒã¹ããŸãããããã¯Reactã³ãŒãã«ãã£ãŠã¬ã³ããªã³ã°ãããã¬ã€ã€ãŒã§ãããŠãŒã¶ãŒã¯ã³ãŒãã¬ã€ã€ãŒã䜿çšããããšã§ãWebã®æ©èœãããžã¥ã¢ã«ãã£ã³ãã¹ã«ãã«ã«æŽ»çšãããã©ãŒã ãã·ã§ãŒããŒãã€ã³ã¿ã©ã¯ã·ã§ã³ãAPIãªã©ãçšããã€ã³ã¿ã©ã¯ãã£ããªäœéšãæ§ç¯ã§ããŸããåæã«ãã³ãŒãã¬ã€ã€ãŒã¯ä»ã®Figmaã¬ã€ã€ãŒãšåæ§ã«ããã¬ãŒã å ã«ãã¹ãããããã³ã³ããŒãã³ãå ã§äœ¿çšãããããã£ã³ãã¹äžã§èªç±ã«ç§»åã»ãµã€ãºå€æŽãããããããšãã§ããŸããããã«ãFigma Makeã§æŽ»çšããŠããåãAIã¢ãã«ã䜿çšããŠããŠãŒã¶ãŒã¯ãã¿ã³ãã¯ãªãã¯ããã ãã§ãFigmaã§äœæãããã¶ã€ã³ãå³åº§ã«ã³ãŒãã¬ã€ã€ãŒã«å€æããåäœã远å ããããšãã§ããŸãã
Figmaã§ã³ãŒãã¬ã€ã€ãŒãæ§ç¯ããã«ã¯ããã¶ã€ã³ãšã³ãŒããšãã2ã€ã®ç°ãªããœãããŠã§ã¢ã®èãæ¹ã調åãããå¿ èŠããããŸããçŸåšãFigmaã®ããžã¥ã¢ã«ãã£ã³ãã¹ã¯ããŠãŒã¶ãŒããã¶ã€ã³ãè¿ éã«å埩ã§ãããèªç±åºŠãé«ãæè»ãªç°å¢ãšãªã£ãŠããŸããã³ãŒãã¯ãããªãæ©èœã®å¯èœæ§ãè§£ãæŸã¡ãŸãããããæ§é åãããŠãããéå±€çãªæ§æãšæ£ç¢ºãªæ§æãæ±ããããŸããããã2ã€ã®ã¢ãã«ã調åãããããã«ã¯ããã¶ã€ã³ã®è¿ éã§æ¢æ±çãªæ§è³ªãå°éãã€ã€ãã³ãŒãã®æã€å šæ©èœãæå€§éã«åŒãåºããã€ããªãããªã¢ãããŒããæ§ç¯ããå¿ èŠããããŸãã
ãããæåãããããã«ã¯ã次ã®3ã€ã®èª²é¡ã解決ããå¿ èŠããããŸãã
- ã³ãŒãã¬ã€ã€ãŒãã³ã³ããŒãã³ããFigmaã®ãšã³ã·ã¹ãã ã«èªç¶ã«çµ±åãã
- ã³ãŒãã«ã¹ã¿ãã€ãºã匷åããããã®åŒ·åã§äœ¿ããããIDEã®æ§ç¯
- ãã¶ã€ããŒãšéçºè ã®éã§ãã«ããã¬ã€ã€ãŒã³ã©ãã¬ãŒã·ã§ã³ãæå¹ã«ãã
çŽ æãšããŠã®ã³ãŒã
ã³ãŒãã¯åŸæ¥ããã¡ã€ã«ã·ã¹ãã ãšããŠæ§æãããŠããŸããã€ãŸãããã£ã¬ã¯ããªã®ããªãŒæ§é ã§ãããã³ãŒããã¡ã€ã«ããã®æ«ç«¯ããŒããšãªããŸãããã®ã¢ãã«ã¯éçºã«ã¯æé©ã§ãããFigmaã®ç©ºéçãª2Dãã£ã³ãã¹ãšã¯çžå®¹ãã«ããé¢ããããŸããäŸãã°ããªããžã§ã¯ãã¯ããžã¥ã¢ã«ãã£ã³ãã¹ã®ã©ãã«ã§ãååšã§ããŸãããã³ãŒããã¡ã€ã«ã¯ãã¡ã€ã«ã·ã¹ãã å ã®ç¹å®ã®å Žæã«ååšããŸãããã®äžäžèŽã¯ãã¯ãŒã¯ãããŒã«ãããŠå®çšçãªèª²é¡ããããããŸããç¹å®ã®ãã¡ã€ã«äœçœ®ã«å¯Ÿå¿ããããžã¥ã¢ã«ã¬ã€ã€ãŒããã©ã®ããã«ã³ããŒããã°ããã®ã§ãããã? çå®ã®æ å ±æºã¯ãã£ã³ãã¹ãªã®ãããããšããã¡ã€ã«ã·ã¹ãã ã§ãããã? ã³ãŒãã¬ã€ã€ãŒãè€è£œããéãã³ãŒãã®äžçã§ã¯äžè¬çãªãã€ã³ã¹ã¿ã³ã¹äœæãè¡ãã¹ããããããšãFigmaã«ãããåŸæ¥ã®è€è£œæ¹æ³ã§ãããåå²ããããŒãžã§ã³äœæãè¡ãã¹ãã§ãããã?
Figmaã®ã³ãŒãæ©èœãããã¶ã€ããŒãšéçºè ã®åæ¹ã«ãšã£ãŠéŠŽæã¿ããããã®ã«ããå¿ èŠãããããšã¯ããã£ãŠããŸãããã€ãŸãããŠãŒã¶ãŒã空éãã£ã³ãã¹äžã§ã³ãŒãã¬ã€ã€ãŒãèªç±ã«æäœã§ããæ©èœãç¶æãã¹ãã ãšããããšã§ããããã§ç§ãã¡ãå°ãåºãã解決çã¯ãã³ãŒãã¬ã€ã€ãŒãæ°ãããã£ã³ãã¹ããªããã£ããšããŠå®è£ ããããšã§ãããã³ãŒãã¬ã€ã€ãŒã¯ä»ã®ã¬ã€ã€ãŒãšåæ§ã«åäœããå®å šãªç©ºéçæè»æ§(ç§»åããµã€ãºå€æŽã芪ã¬ã€ã€ãŒã®å€æŽãªã©)ãšã·ãŒã ã¬ã¹ãªã¬ã€ã¢ãŠãçµ±å(ãªãŒãã¬ã€ã¢ãŠãã¹ã¿ãã¯ãžã®é 眮ãªã©)ãåããŠããŸããæãéèŠãªç¹ã¯ãã³ãŒãã¬ã€ã€ãŒãç°¡åã«è€è£œã»å埩åŠçã§ããããšã§ãããžã¥ã¢ã«ãã£ã³ãã¹ã®èªç±ã§å®éšçãªæ§è³ªãåçŸããŠããããšã§ããããã«ãããç°ãªãããŒãžã§ã³ã®ã³ãŒãã䞊ã¹ãŠäœæã»æ¯èŒããããšãå¯èœã«ãªããŸããéåžžãæ¯èŒã®ããã«ã³ãŒãã2ã€è€è£œããã«ã¯ãå¥ã ã®Gitãã©ã³ããäœæããå¿ èŠããããŸãããã³ãŒãã¬ã€ã€ãŒã䜿ãã°ãâ¥ããŒãæŒããªãããã©ãã°ããã ãã§æžã¿ãŸããããã«ããããœãŒã¹ã³ãŒãã®åå²ãèªåçã«äœæãããè¿ éãªæ¹è¯ãå¯èœã«ãªããŸãã
ReactããµããŒãããããšã«ããã®ã¯ããã®ã³ã³ããŒãã³ãã¢ãã«ãFigmaã®ã³ã³ããŒãã³ãã®æŠå¿µãšå¯æ¥ã«äžèŽããŠããããã§ããFigmaã®ã³ã³ããŒãã³ãã¯ããã¶ã€ããŒãã€ã³ã¿ãŒãã§ãŒã¹ãæ§ç¯ããããã«äœ¿çšãããåå©çšå¯èœã§æè»ãªæ§æèŠçŽ ã§ããReactãåæ§ã«æ©èœããŸããéçºè ã¯åå©çšå¯èœãªReactã³ã³ããŒãã³ããçµã¿åãããŠãç»é¢ãã¢ããªãæ§ç¯ããŸããããã«ãReactã®propsã¯Figmaã®ã³ã³ããŒãã³ãããããã£ã®æŠå¿µãšçŽæ¥å¯Ÿå¿ããŠãããããäž¡è ã飿ºãããŸãããã³ãŒãã§ããããã£ãå®çŸ©ããåŸããã°ã«ãã¹ã©ã€ããŒãããããããŠã³ãªã©ã®ã«ã¹ã¿ãã€ãºå¯èœãªã³ã³ãããŒã«ã䜿çšããŠãèŠèŠçã«ç·šéããããšãã§ããŸãã

ãã¹ãŠãæã£ãWebäžã®IDE
ã³ãŒãã¬ã€ã€ãŒã¯AIã ãã§äœæã»ç·šéããããšãå¯èœã§ããããŠãŒã¶ãŒãå®å šãªæè»æ§ãæ±ããŠãã³ãŒããçŽæ¥ç·šéããããšããããŒãºããããšç§ãã¡ã¯èããŠããŸããããããã·ãŒã ã¬ã¹ã«å®çŸãããããFigmaã«ææ°ã®ã³ãŒãç·šéæ©èœããã«ãã€ã³ããŸããããã®ç¬¬äžæ©ãšããŠãIDEã®äžæ žãšã³ãžã³ãšããŠCodeMirrorãæ¡çšããŸããã
CodeMirrorã¯ãWebããŒã¹ã®ã³ãŒãç·šéã®ããã®æ¡åŒµå¯èœãªåºç€ãæäŸããŠãããã«ã©ãŒããŒããæ€çŽ¢ã»çœ®æãè¡çªå·ãªã©ã®æ©èœã«å¯Ÿããæ¡åŒµæ©èœãå®çŸ©ã§ããŸããå€ãã®å Žåãã³ãŒããšãã£ã¿ãŒãFigmaã«çµ±åããããã«ãããã©ã«ãã®åäœããªãŒããŒã©ã€ãããå¿ èŠããããŸãããäŸãã°ãCodeMirrorã®ããã©ã«ãã®å ã«æ»ã/ããçŽãã®åäœããç¬èªã®å ã«æ»ãã¹ã¿ãã¯ã«åºã¥ããã«ã¹ã¿ã å®è£ ã«çœ®ãæããŸããã
ç§ãã¡ã¯æ©ã段éãããç¹ã«å€§èŠæš¡ãªã³ãŒãããŒã¹ã«ãããŠãããã©ãŒãã³ã¹ãããã«ããã¯ã«ãªãåŸãããšãèªèããŠããŸããããã³ãã«ãåãã§ãã¯ãšãã£ãIDEã®åŠçã¯æéãããããã¡ã§ãJavaScriptã¯ã·ã³ã°ã«ã¹ã¬ããã§ãããããå€§èŠæš¡ãªãã¡ã€ã«ãåŠçããéã«UIãããªãŒãºããŠããŸãããšããããŸããFigmaã®ã³ãŒãç°å¢ãé«éã«ä¿ã€ãããéçºããŒã«ãã§ãŒã³ã®å€§éšåãWeb Workeräžã§å®è¡ããŠããŸããã¯ãŒã«ãŒã®å éšã§ã¯ãè¿ éãªãã³ãã«æéãå®çŸããããã«esbuild (Figmaã®å ±å嵿¥è Evan Wallaceãäœæ)ã䜿çšããå¹ççãªã¹ã¿ã€ã«ã³ã³ãã€ã«ã®ããã«Tailwind v4ãšLightning CSSãæ¡çšããŠããŸãããããã®ããŒã«ã¯äžéšããã€ãã£ãã³ãŒãã§èšè¿°ãããWebAssemblyã«ã³ã³ãã€ã«ããããããããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããŸãã
äŸåé¢ä¿ã®ç®¡çã®è€éããæå°éã«æããããã«ãNPMãŸãã¯ESM URLããã€ã³ããŒããããããã±ãŒãžã¯èªåçã«ã€ã³ã¹ããŒã«ãããŸããpackage.jsonãåæåããå¿ èŠã¯ãããŸãããå¿ èŠãªã©ã€ãã©ãªãã€ã³ããŒãããã ãã§ãå®å šãªãµã³ãããã¯ã¹ç°å¢ã§ãã«ããéå§ã§ããŸããMotionãReact-Three-Fiberãšãã£ãã³ãã¥ããã£ã§äººæ°ã®ããã±ãŒãžãå«ããã»ãšãã©ã®ããã±ãŒãžã¯Figmaå ã§ãã®ãŸãŸå©çšå¯èœã§ãã

ã³ãŒãã¬ã€ã€ãŒã®å ±åç·šéãå®çŸãã
Figmaã®äžå¿ã«ããã®ã¯ããã«ããã¬ã€ã€ãŒã®ã³ã©ãã¬ãŒã·ã§ã³ã§ãããããã«ããããŒã ã¯å¹ççã«ååããŠåªããäœéšããã¶ã€ã³ãããªãªãŒã¹ããããšãã§ããŸããç§ãã¡ã®ãã«ããã¬ã€ã€ãŒæè¡ã¯ãäœçœ®ãè²ãªã©ã®å€ãã®ããŒããã£ãŒã«ãã®åæèª¿æŽããµããŒãããŠããŸããããããæ°åè¡ã«ãåã¶å¯èœæ§ã®ãããœãŒã¹ã³ãŒãã®ãããªè€éãªãã£ãŒã«ãã«å¯ŸããŠã¯ããããŸã§ãã®æè¡ã掻çšãããããšã¯ãããŸããã§ããã
ãã®æ°ããªèŠä»¶ã¯ãç§ãã¡ã®ã¢ãããŒããèŠçŽã奜æ©ãšãªããŸãããç·šéå 容ãåæãããæãåçŽãªè§£æ±ºçã¯ãæçµæžã蟌ã¿åªå (last-write-wins)æ¹åŒã§ãããåãŠãŒã¶ãŒã«ãã倿Žãä»ã®ãŠãŒã¶ãŒã®å€æŽãäžæžãããŸããããã¯ãFigmaã®ãã¶ã€ã³å ã®UXã³ããŒã®ãããªçãããã¹ãã«ã¯æå¹ã§ãããå€§èŠæš¡ãªãœãŒã¹ã³ãŒããã¡ã€ã«ãåæã«ç·šéããå Žåãç¹ã«éä¿¡é床ãé ãç°å¢ã§ã¯æ©èœããªããªããŸãããŸããAIã¢ãã«ãã³ãŒãã«å¯ŸããŠåæç·šéãè¡ãããããªãç«¶åãåŒãèµ·ããããšã§ããã®åé¡ãããã«æ·±å»åããããšã倿ããŸããã
æäœå€æ(OT)ã¯ãå®è¡é åºãšã³ã³ããã¹ãã«åºã¥ããŠæäœã調æŽããããšã«ãããåæãéæããããã«åæçºçããæäœã倿ããç«¶åè§£æ±ºã®ææ³ã§ãã
ããã§ãããåªããä»£æ¿æ¡ãæ¢ããæäœå€æ(OT)ãã³ã³ããªã¯ãããªãŒã®è€è£œããŒã¿å(CRDT)ãšãã£ããåŸæ¥ã®å ±åããã¹ãç·šéã¢ã«ãŽãªãºã ã«æ³šç®ããŸãããOTã¯ãç«¶åããæäœã倿ããããšã§ãç«¶åãªãé©çšã§ããããã«ããŸããããã¯ãGoogleããã¥ã¡ã³ããªã©ãå€ãã®å ±åããã¹ããšãã£ã¿ãŒã®åºç€æè¡ãšãªã£ãŠããŸããããããç«¶åã®å€ããã¡ã€ã«ãããŒãžããéã«ã¯åŠçãé ããªããŸããç«¶åãããã¹ãŠã®ç·šéå 容ãäºãã«ç §ããåãããŠå€æããªããã°ãªããªãããã§ãã
ã³ã³ããªã¯ãããªãŒã®è€è£œããŒã¿å(CRDTs)ã¯ãæäœã®é åºã«ãããããããã¹ãŠã®ã¬ããªã«ãåãç¶æ ã«åæããããšãä¿èšŒããããšã§ãæçµçãªäžè²«æ§ãä¿èšŒããããŒã¿æ§é ã§ãã
äžæ¹ãã»ãšãã©ã®CRDTã§ã¯ãåæåãç¬ç«ãããšã³ãã£ãã£ãšããŠæ±ããŸããããã«ãããç·šéå 容ã®ããŒãžã¯æ Œæ®µã«å®¹æã«ãªããŸãããã¡ã¢ãªã®ãªãŒããŒãããã¯å€§ãããªããŸããæŽæ°ãåŠçããã«ã¯ãããšãåæç·šéãè¡ãããŠããªãå Žå(ãããæãäžè¬çãªãŠãŒã¹ã±ãŒã¹)ã§ããããã¥ã¡ã³ãã®å±¥æŽå šäœãã¡ã¢ãªäžã«åæ§ç¯ããå¿ èŠããããŸããããã«ããã¡ã¢ãªäœ¿çšéãèšãäžãããããã©ãŒãã³ã¹ãäœäžããŸãã
幞ããªããšã«ãæšå¹Žçºè¡šãããè«æã§ãOTãšCRDTäž¡æ¹ã®å©ç¹ã®ã»ãšãã©ãå Œãåããæ°ããã¢ã«ãŽãªãºã ãEvent Graph Walker (Eg-walker)ã玹ä»ãããŸãããEg-walkerã¯ãç·šéæäœãå ææåéå·¡åã€ãã³ãã°ã©ããšããŠè¡šçŸããŸãããã®ã¢ã«ãŽãªãºã ã¯gitã®rebaseã«é¡äŒŒããŠãããè€æ°ã®åå²ãããã©ã³ããç·åœ¢ãªé åºã«åé 眮ããŸããåæçºçããã€ãã³ããããŒãžããããã«ãEg-walkerã¯äžæçã«CRDTæ§é ãæ§ç¯ããŸãã解決ã¢ã«ãŽãªãºã ãå®äºãããšãEg-walkerã¯å éšã®CRDTãç Žæ£ããã¡ã¢ãªãè§£æŸããŸããé æ¬¡ãã€ç«¶åã®ãªãç·šéãè¡ãããçæ³çãªã±ãŒã¹ã§ã¯ãæŽæ°ã³ã¹ãã¯ã»ãŒãŒãã«ãªããŸãããã®çµæãããŒãžåŠçã®é床ã¯CRDTãšåçã§ãããªãããã¡ã¢ãªãªãŒããŒãããã¯OTãšåæ§ã«æå°éã«æããããŸãã

ããã©ãŒãã³ã¹ãšã¡ã¢ãªäœ¿çšéã®é¢ã§åªããŠããããšãããã³ãŒãã¬ã€ã€ãŒåãã®ãã«ããã¬ã€ã€ãŒå ±åç·šéãµãŒãã¹ã®æ§ç¯ã«Eg-walkerã¢ã«ãŽãªãºã ãæ¡çšããŸããããŠãŒã¶ãŒãã³ãŒããã¡ã€ã«ãç·šéãããšãã¯ã©ã€ã¢ã³ãã¯ç·šéãªã¹ãããµãŒããŒã«éä¿¡ããŸãããµãŒããŒã¯Eg-walkerã䜿çšããŠãã¢ã¯ãã£ããªãã¹ãŠã®ã¯ã©ã€ã¢ã³ãããã®åæç·šéã調æŽããç«¶åã解決ããäžã§ãæŽæ°ãããç·šéãªã¹ããã¯ã©ã€ã¢ã³ãã«è¿ããŸãããã®ã¢ãŒããã¯ãã£ã«ããããã«ããã¬ã€ã€ãŒãµãŒãã¹ããã¹ãŠã®ã¯ã©ã€ã¢ã³ãã«ä»£ãã£ãŠèšç®è² è·ã®é«ãããŒãžäœæ¥ãåŠçãããããååã®ããŒãæéãéããå€§èŠæš¡ãªãã¡ã€ã«ã·ã¹ãã ã§ãã£ãŠãããã©ãŒãã³ã¹ã®é«ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå®çŸããŸãã
ã³ãŒããšãã¶ã€ã³ã®æªæ¥
ååã«åºã¥ãçºæ
圱é¿åã®ããäœå®¶ãç ç©¶è ãã€ã³ã¿ãŒãã§ãŒã¹ãã¶ã€ããŒã§ããBret Victorã¯ããã»ãšãã©ã®äººãå£ã«ããªãçãæ¹ãã«ã€ããŠèªã£ãŠããŸããèªåã«ãšã£ãŠéèŠã§ãå¿ èŠã§ãæ£ãããšä¿¡ããæéãèŠã€ãããããåååã«ããæ¹æ³ã«ã€ããŠãåæ°ã®è¬æŒã®å šç·šãã芧ãã ããã
ã³ãŒãã¬ã€ã€ãŒã¯ãFigmaã«ãããã³ãŒãæ©èœã®å§ãŸãã«éããŸãããä»åŸãã³ãŒãã¬ã€ã€ãŒãžã®çŽæ¥æäœæ©èœãããã«æ¡å ããã³ãŒããšãã¶ã€ã³ã®ã¯ãŒã¯ãããŒéã®éãããããã«çž®ããŠããäºå®ã§ããããã«ããããŠãŒã¶ãŒã¯ç¶æ³ã«å¿ããŠãã·ãŒã ã¬ã¹ã«äœæ¥ç°å¢ãåãæ¿ããããšãã§ããããã«ãªããŸãã
ã€ã³ã¿ãŒãã§ãŒã¹ãã¶ã€ããŒã®Bret Victorã¯ãè¬æŒãInventing On Principle (ååã«åºã¥ããŠçºæãã)ãã®äžã§ããã¯ãªãšã€ã¿ãŒã¯ãèªåãäœãåºããŠãããã®ãšã®å³æã®ã€ãªãããå¿ èŠã âŠâŠäœããäœã£ãŠãããšãã倿Žãå ãããæ±ºæãäžããããããªãããã®å¹æãå³åº§ã«ç¢ºèªã§ããå¿ èŠãããããšè¿°ã¹ãŠããŸããFigmaã«ãããã³ãŒãã®æ©èœãæ¡åŒµãç¶ããäžã§ãç§ãã¡ã¯ããèããæéãšããŠããŸããããã¯ããã¶ã€ã³ãšã³ãŒããå¥ã ã®ããŒã«ã§åæããã®ã§ã¯ãªããå ±æãããç°å¢ã®äžã§ã誰ããå ±ã«äœæã§ããããã«ãã¹ãã ãšããããšã§ãã
Figma Sitesã§ã¯çŸåšãã³ãŒãã¬ã€ã€ãŒãããŒã¿çã§æäŸãããŠããŸããçãããäœãåºããã®ãèŠãã®ã楜ãã¿ã«ããŠããŸãã

ãšã³ãžãã¢åéäž! Figmaã§ã®åãæ¹ã«ã€ããŠè©³ããã¯ãåéäžã®ãã¹ããã芧ãã ããã


