ã2010幎ã®æ¥ã«ãTwitteræ€çŽ¢ããŒã ã¯ãå¢ãç¶ãããã©ãã£ãã¯ã«å¯Ÿå¿ãããšã³ããŠãŒã¶ãŒã®åŸ ã¡æéãççž®ãããµãŒãã¹ã®å¯çšæ§ãé«ããæ°ããæ€çŽ¢æ©èœãè¿ éã«éçºããããã«ãæ€çŽ¢ãšã³ãžã³ã®æžãæããéå§ããŸããã ä»äºã®äžç°ãšããŠãæ°ãããªã¢ã«ã¿ã€ã æ€çŽ¢ãšã³ãžã³ãç«ã¡äžããããã¯ãšã³ããMySQLããLuceneããŒãžã§ã³ã«å€æŽããŸããã å é±ãRuby-on-Railsããã³ããšã³ãã®ä»£æ¿åããªãªãŒã¹ããŸãããããã¯ãBlenderãšåŒã°ããJavaãµãŒããŒã§ãã ãã®å€æŽã«ãããæ€çŽ¢æéã3åã«ççž®ãããä»åŸæ°ãæã§æ€çŽ¢æ©èœãäžè²«ããŠåäžãããæ©äŒãåŸãããããšããç¥ããããããŸãã
ããã©ãŒãã³ã¹ã®åäž
Twitter Searchã¯ãäžçã§æãå¿ããæ€çŽ¢ãšã³ãžã³ã®1ã€ã§ããã1æ¥ããã10åãè¶ ããæ€çŽ¢ã¯ãšãªãåŠçããŸãã ä»é±ãBlenderãå±éããåã«ãæ¥æ¬ã§ã®#tsunamiã¯ãæ€çŽ¢ã¯ãšãªãšããã«é¢é£ããæ€çŽ¢é 延ã®ããŒã¯ã®å€§å¹ ãªå¢å ã«è²¢ç®ããŸããã Blenderãèµ·åããåŸã95ïŒ ã®é 延ã800ããªç§ãã250ããªç§ã«3åæžå°ããããã³ããšã³ããµãŒããŒã®CPUè² è·ãååã«ãªããŸããã ããã§ããã·ã³ããšã«10åã®ãªã¯ãšã¹ããåŠçã§ããããã«ãªããŸããã ããã¯ãããå°ãªããµãŒããŒã§åãæ°ã®ãªã¯ãšã¹ããç¶æã§ããããã³ããšã³ããµãŒãã¹ã®ã³ã¹ããå€§å¹ ã«åæžã§ããããšãæå³ããŸãã
Blenderãèµ·åããååŸã®æ€çŽ¢APIã®95ïŒ ã®é 延ã
æ¹åãããTwitteræ€çŽ¢ã¢ãŒããã¯ãã£
ããã©ãŒãã³ã¹ã®åäžãããããç解ããã«ã¯ãæåã«ä»¥åã®Ruby-on-Railsããã³ããšã³ããµãŒããŒã®åŒ±ç¹ãç解ããå¿ èŠããããŸãã åºå®æ°ã®ã·ã³ã°ã«ã¹ã¬ããã¯ãŒã¯ãããŒãéå§ããããããã次ã®ããšãè¡ããŸããã
- æ€çŽ¢ã¯ãšãªã解æããŸããã
- åæçã«èŠæ±ãããæ€çŽ¢ãšã³ãžã³ã
- çµæãéçŽããŠåœ¢æããŸããã
ç§ãã¡ã¯ãåæãªã¯ãšã¹ãåŠçã¢ãã«ãCPUãéå¹ççã«äœ¿çšããŠããããšãé·ãéèªèããŠããŸããã æéãçµã€ã«ã€ããŠãã¡ã€ã³ã®Rubyã³ãŒãã«ããªãã®æè¡çè² åµãèç©ãããæ©èœã®è¿œå ãšæ€çŽ¢ãšã³ãžã³ã®ä¿¡é Œæ§ã®åäžãå°é£ã«ãªããŸããã Blenderã¯ãããã®åé¡ã次ã®æ¹æ³ã§è§£æ±ºããŸãã
- å®å šã«éåæã®éçŽãµãŒãã¹ãäœæããŸãã ãããã¯ãŒã¯I / Oã®å®äºãåŸ æ©ããã¹ã¬ããã¯ãããŸããã
- ãªã¢ã«ã¿ã€ã ãµãŒãã¹ãããããã€ãŒããµãŒãã¹ãå°çã€ã³ããã¯ã¹ãµãŒãã¹ãªã©ã®ããã¯ãšã³ããµãŒãã¹ããã®çµæãéçŽããŸãã
- ãµãŒãã¹éã®äŸåé¢ä¿ãããæ£ç¢ºã«è§£æ±ºããŸãã ã¯ãŒã¯ãããŒã¯ãããã¯ãšã³ããµãŒãã¹éã®æšç§»çãªäŸåé¢ä¿ãèªåçã«åŠçããŸãã
次ã®å³ã¯ãTwitteræ€çŽ¢ãšã³ãžã³ã®ã¢ãŒããã¯ãã£ã瀺ããŠããŸãã ãŠã§ããµã€ããAPIããŸãã¯Twitterã®å€éšã¯ã©ã€ã¢ã³ãããã®ãªã¯ãšã¹ãã¯ãããŒããŠã§ã¢ããŒããã©ã³ãµãŒãä»ããŠBlenderã«éä¿¡ãããŸãã Blenderã¯æ€çŽ¢ãªã¯ãšã¹ãã解æããã¯ãŒã¯ãããŒã䜿çšããŠãµãŒãã¹éã®äŸåé¢ä¿ãåŠçããããã¯ãšã³ããµãŒãã¹ã«æž¡ããŸãã æåŸã«ããµãŒãã¹ã®çµæãçµåãããã¯ã©ã€ã¢ã³ãã®é©åãªèšèªã§åœ¢æãããŸãã
Blenderã«ããTwitteræ€çŽ¢ã¢ãŒããã¯ãã£ã
ãã¬ã³ããŒã¬ãã¥ãŒ
Blenderã¯ãJavaã§èšè¿°ãããåºãã¹ã±ãŒã©ãã«ãªNIOã¯ã©ã€ã¢ã³ã/ãµãŒããŒã©ã€ãã©ãªã§ããNettyäžã«æ§ç¯ãããThriftããã³HTTPãµãŒãã¹ã§ãããããŸããŸãªãµãŒããŒããã³ã¯ã©ã€ã¢ã³ãåãã«è¿ éãã€ç°¡åã«éçºã§ããŸãã Netaãéžæããã®ã¯ãMinaãJettyãªã©ã®ããã€ãã®ç«¶åä»ç€ŸããNettyãéžæããããã§ããããã¯ãããéæãªAPIãåªããããã¥ã¡ã³ãããããŠæãéèŠãªããšã¯ãä»ã®ããã€ãã®Twitterãããžã§ã¯ãããã®ãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠããããã§ã NettyãThriftã§åäœããããã«ããœã±ããããèªã¿åããããšãã«Nettyãã£ãã«ãããã¡ãŒããã®çä¿¡ThriftèŠæ±ããã³ãŒããããœã±ããã«æžã蟌ãŸãããšãã«çºä¿¡Thriftå¿çããšã³ã³ãŒãããåçŽãªThriftã³ãŒããã¯ãäœæããŸããã Nettyã¯ããããã¯ãŒã¯ãœã±ãããžã®æ¥ç¶ãã«ãã»ã«åãããã£ãã«ãšåŒã°ããããŒæœè±¡åãå°å ¥ããŸããããã¯ãèªã¿åããæžã蟌ã¿ãæ¥ç¶ããã€ã³ããªã©ãå€ãã®I / Oæäœãå®è¡ããããã®ã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããŸãã ãã¹ãŠã®ãã£ãã«I / Oæäœã¯æ¬è³ªçã«éåæã§ãã ããã¯ãèŠæ±ãããI / Oæäœãæåã倱æããŸãã¯ãã£ã³ã»ã«ããããšãã«ã¬ããŒãããChannelFutureã®ã€ã³ã¹ã¿ã³ã¹ã§ãI / OåŒã³åºããçŽã¡ã«è¿ãããããšãæå³ããŸãã NettyãµãŒããŒã¯ãæ°ããæ¥ç¶ãåãå ¥ãããšãæ¥ç¶ãåŠçããããã®æ°ãããã£ãã«ãã€ãã©ã€ã³ãäœæããŸãã ãã£ãã«ãã€ãã©ã€ã³ã¯ãèŠæ±ã®åŠçã«å¿ èŠãªããžãã¹ããžãã¯ãå®è£ ããäžé£ã®ãã£ãã«ãã³ãã©ã§ãã 次ã®ã»ã¯ã·ã§ã³ã§ã¯ãBlenderããããã®ãã€ãã©ã€ã³ãã¯ãšãªåŠçã¯ãŒã¯ãããŒã«ç§»è¡ããæ¹æ³ã瀺ããŸãã
ã¯ãŒã¯ãããŒã©ã€ãã©ãª
Blenderã§ã¯ãã¯ãŒã¯ãããŒãšã¯ãçä¿¡ãªã¯ãšã¹ããåŠçããããã«åŠçããå¿ èŠãããäŸåé¢ä¿ãæã€ããã¯ãšã³ããµãŒãã¹ã®ã»ããã§ãã Blenderã¯ãããã®éã®äŸåé¢ä¿ãèªåçã«æ±ºå®ããŸããããšãã°ããµãŒãã¹AããµãŒãã¹Bã«äŸåããŠããå ŽåãAãæåã«èŠæ±ããããã®äœæ¥ã®çµæãBã«éä¿¡ãããŸãã
6ã€ã®ããã¯ãšã³ããµãŒãã¹ã䜿çšãããµã³ãã«Blenderã¯ãŒã¯ãããŒã
ã¯ãŒã¯ãããŒã®äŸã§ã¯ã6ã€ã®ãµãŒãã¹{s1ãs2ãs3ãs4ãs5ãs6}ãããããããã®éã«äŸåé¢ä¿ããããŸãã s3ããs1ãžã®çŽç·ã¯ãs1ãs3ã®çµæãå¿ èŠãšãããããs1ãåŒã³åºãããåã«s3ãåŒã³åºãå¿ èŠãããããšãæå³ããŸãã ãã®ãããªäœæ¥ãããžã§ã¯ãã®å ŽåãBlenderã©ã€ãã©ãªã¯DAG㧠ããããžã«ã«ãœãŒããå®è¡ããŠããµãŒãã¹ã®æçµé åºã決å®ããŸããããã¯ããµãŒãã¹ãåŒã³åºãããé åºã§ããããŸãã äžèšã®ã¯ãŒã¯ãããŒã®å®è¡é åºã¯{ïŒs3ãs4ïŒãïŒs1ãs5ãs6ïŒãïŒs2ïŒ}ã«ãªããŸãã ã€ãŸããæåã®ã¹ãããã§s3ãšs4ã䞊è¡ããŠåŒã³åºãããšãã§ããŸãã çµæãè¿ããããšã次ã®ã¹ãããã§ãs1ãs5ãããã³s6ã䞊è¡ããŠåŒã³åºãããŸãã æåŸã®åŒã³åºãs2ã«ã Blenderãå®è¡é åºã決å®ãããšãNettyãã€ãã©ã€ã³ã«ãããã³ã°ãããŸãã ãã®ãã€ãã©ã€ã³ã¯ãåŠçã®ãªã¯ãšã¹ããæž¡ãå¿ èŠãããäžé£ã®ãã³ãã©ã§ãã
ã€ã³ããŠã³ãèŠæ±ã®å€éå
ã¯ãŒã¯ãããŒã¯Blenderã®Nettyãã€ãã©ã€ã³ã«ãããããããããçä¿¡ã¯ã©ã€ã¢ã³ããªã¯ãšã¹ããé©åãªãã€ãã©ã€ã³ã«éãå¿ èŠããããŸããã ãããè¡ãããã«ã次ã®ã«ãŒã«ã«åŸã£ãŠã¯ã©ã€ã¢ã³ãèŠæ±ãå€éåããŠã«ãŒãã£ã³ã°ãããããã·ã¬ã€ã€ãŒãæ§ç¯ããŸããã
- ãªã¢ãŒãã®Thriftã¯ã©ã€ã¢ã³ããBlenderãžã®æ°žç¶çãªæ¥ç¶ãéããšããããã·å±€ã¯ããŒã«ã«ã¯ã©ã€ã¢ã³ãçšã®ããããäœæããŸããã¯ãŒã¯ãããŒã¯ãããŒã«ã«ãµãŒããŒããšã«1ã€ãã€äœæãããŸãã ãããã®ãµãŒããŒã¯ãã¹ãŠãJVMç°å¢ã®Blenderããã»ã¹ã§èµ·åãããBlenderããã»ã¹ã®èµ·åæã«äœæãããããšã«æ³šæããŠãã ããã
- èŠæ±ããœã±ããã«å°çãããšããããã·å±€ã¯ãããèªã¿åããã©ã®ã¯ãŒã¯ãããŒãèŠæ±ãããããå€æãã察å¿ããã¯ãŒã¯ãããŒãµãŒããŒã«éä¿¡ããŸãã
- åæ§ã«ãã¯ãŒã¯ãããŒãåŠçããããŒã«ã«ãµãŒããŒããå¿çãæ¥ããšããããã·ã¯ãããèªã¿åãããªã¢ãŒãã¯ã©ã€ã¢ã³ãã®å¿çãæžã蟌ã¿ãŸãã
ã€ãã³ãé§åã®Nettyã¢ãã«ã䜿çšããŠãäžèšã®ãã¹ãŠã®ã¿ã¹ã¯ãéåæã«å®è¡ãããããI / OãåŸ æ©ããã¹ã¬ããã¯ãããããŸããã
ããã¯ãšã³ããªã¯ãšã¹ãã®ãã£ã¹ããã
æ€çŽ¢èŠæ±ãã¯ãŒã¯ãããŒã®ãã€ãã©ã€ã³ã«å°çãããšããã«ãã¯ãŒã¯ãããŒã«ãã£ãŠæ±ºå®ãããé åºã§äžé£ã®ãµãŒãã¹ãã³ãã©ãŒãééããŸãã åãµãŒãã¹ãã³ãã©ãŒã¯ããã®æ€çŽ¢èŠæ±ã«å¯Ÿå¿ããããã¯ãšã³ãèŠæ±ãäœæãããªã¢ãŒããµãŒããŒã«æž¡ããŸãã ããšãã°ããªã¢ã«ã¿ã€ã ãµãŒãã¹ãã³ãã©ãŒã¯ãªã¢ã«ã¿ã€ã ãªã¯ãšã¹ããäœæãã1ã€ä»¥äžã®ãªã¢ã«ã¿ã€ã ã€ã³ããã¯ã¹ã«éåæã§éä¿¡ããŸãã twitter commonsã©ã€ãã©ãªïŒæè¿ãªãŒãã³ãœãŒã¹ã«ãªããŸããïŒïŒã䜿çšããŠãæ¥ç¶ããŒã«ç®¡çãè² è·åæ£ãããã³ããããã¹ãã®ç¹å®ãæäŸããŸãã æ€çŽ¢èŠæ±ãåŠçããI / Oã¹ã¬ããã¯ããã¹ãŠã®ããã¯ãšã³ãå¿çãåŠçããããšè§£æŸãããŸãã ã¿ã€ããŒã¹ã¬ããã¯ãæ°ããªç§ããšã«ããã¯ãšã³ãã®å¿çããªã¢ãŒããµãŒããŒããè¿ããããã©ããã確èªããèŠæ±ãæåããããã¿ã€ã ã¢ãŠããè¶ ãããã倱æãããã瀺ããã©ã°ãèšå®ããŸãã ãã®ããŒã¿åã管çããããã«ãæ€çŽ¢ã¯ãšãªã®ã©ã€ããµã€ã¯ã«å šäœã§åäžã®ãªããžã§ã¯ããç¶æããŸãã æåããå¿çã¯éçŽãããã¯ãŒââã¯ãããŒãã€ãã©ã€ã³ã®ãµãŒãã¹ãã³ãã©ãŒã«ããåŠçã®ããã«æ¬¡ã®ã¹ãããã«éä¿¡ãããŸãã æåã®ã¹ãããããã®ãã¹ãŠã®å¿çãå°çãããšãéåæèŠæ±ã®2çªç®ã®ã¹ããããå®äºããŸãã ãã®ããã»ã¹ã¯ãã¯ãŒã¯ãããŒãå®äºããããåŸ æ©æéã蚱容é床ãè¶ ãããŸã§ç¹°ãè¿ãããŸãã ã芧ã®ãšãããã¯ãŒã¯ãããŒã®å®è¡äžãI / OãåŸ æ©ããŠããåäžã®ã¹ã¬ããã¯ãããŸããã ããã«ãããBlenderãã·ã³ã§CPUãå¹ççã«äœ¿çšããå€æ°ã®ç«¶åãããªã¯ãšã¹ããåŠçã§ããŸãã ãŸããããã¯ãšã³ããµãŒãã¹ã«å¯Ÿããã»ãšãã©ã®ãªã¯ãšã¹ãã䞊è¡ããŠå®è¡ãããããé 延ãç¯çŽã§ããŸãã
Blenderã®å±éãšä»åŸã®äœæ¥
Blenderãã·ã¹ãã ã«çµ±åããéã«é«å質ã®ãµãŒãã¹ã確ä¿ããããã«ãå€ãRuby-on-Railsããã³ããšã³ããµãŒããŒããããã·ãšããŠäœ¿çšããŠãBlenderã¯ã©ã¹ã¿ãŒã®ã¹ãªãããªã¯ãšã¹ãããªãã€ã¬ã¯ãããŸãã å€ãããã³ããšã³ããµãŒããŒããããã·ãšããŠäœ¿çšããããšã§ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®æŽåæ§ã確ä¿ããåºç€ãšãªããã¯ãããžã«å€§å¹ ãªå€æŽãå ããããšãã§ããŸãã å±éã®æ¬¡ã®æ®µéã§ã¯ãæ€çŽ¢ã¹ã¿ãã¯ããRuby-on-Railsãå®å šã«åé€ãããŠãŒã¶ãŒãBlenderã«çŽæ¥æ¥ç¶ããæœåšçãªã¬ã€ãã³ã·ãŒãããã«åæžããŸãã