InfoQãRyan Dahlã«45åéNode.jsã®ãã¨ãè¨ãã¾ãã£ãã
- infoQ 2010.12.13å ¬éã®ã¤ã³ã¿ãã¥ã¼è¨äº
- 2010.12.16èãæã®è³ªåæ¸ã足ãã¦ã10åãããã¾ã§æ¸ãã
InfoQ: Deep inside Node.js with Ryan Dahl
- Node.jsã¯ãªã¨ã¼ã¿Ryan Dahlã¸ã®45:15ã®ãã³ã°ã¤ã³ã¿ãã¥ã¼
- 2010.11éå¬ã®QCon San Francisco 2010ã§Ryanãã¹ãã¼ã«ã¼ã®ä¸äººã¨ãã¦åå ãã¦ãã®ã§ãåéã«åé²ãããã¤ã³ã¿ãã¥ã¼ã¨æãã
- ãã©ã³ã¹ã¹ã¯ãªãããå
¬éããã¦ã¦å©ãããtypoãå¤ã
- whatãwasã«ãªã£ã¦ããdomã¯domeã«ãªã£ãããjsdomã "JS DOM"ã«ãªã£ãã
- åç»ã¿ã¦é©å®
- å
¥éçãªè©±é¡ã¯ã»ã©ã»ã©ã«ãã¦ã¦çµæ§çªã£è¾¼ãã å
容話ãã¦ã
- ãã®çµæãçµæ§æ¯ãç«ããªãç®æã°ããããã©ãªãã¨ãæãèªãã
- èãæã¯@synodinos
以ä¸æãèªãã å 容
- è¦æ¨
- Node.jsã®ç®æãã¨ãã
- concurrencyã«ããããåé¡ãæ½è±¡åãã¦èã«è¿½ããã
- ã¡ãã£ã¨ããçµé¨ã§ãæ°ï¼ï¼ï¼ï¼ã³ãã¯ã·ã§ã³ã¬ãã«ã¸ãµã¼ãã¼ãã¹ã±ã¼ã«ãããã¨ã§ãããµã¼ãä½ããããã«ãã
- ãã®ã¤ã³ã¿ãã¥ã¼
- å ¥éç話é¡ã¯ã¹ããã
- ryanã®ã¢ããã¼ã·ã§ã³ããnodeå é¨ã®åé¡ããããã°ãã¢ãã¿ãªã³ã°ãã¹ã±ã¼ãªã³ã°ãªã©ç¾å®çãªåé¡ã¸ãã©ã¼ã«ã¹
- Node.jsã®ç®æãã¨ãã
- Ryanç¥æ´
- Joyentã§åãããã°ã©ã
- Node.jsã¯ãªã¨ã¼ã¿
- NYå·Rochesterè²ã¡
- San Franciscoå¨ä½
- Qï¼ã¨ããããèªå·±ç´¹ä»
- Aï¼
- ãã¹ãã£ã³ã°ãµã¼ãã¹ãã£ã¦ãJoyentã§åãã¦ãã
- Node.jsä½ã£ããã ããã¤ã³ã¿ãã¥ã¼ããã¦ããã ã¨æã
- ï¼±ï¼node.jsãå§ããçç±ã解決ãããã¨æã£ãåé¡ãå°éãã解決ç
- Aï¼
- 大å¦ã§ã¯æ°å¦ãã£ã¦ãããcomputingã®ä¸çã«å
¥ã£ãã®ã¯å°ãåãã
- ï¼è£è¶³ï¼University of Rochesterã§2005å¹´ã«æ°å¦å°æ»ã§ä¿®å£«å·åå¾
- rubyã®ã¦ã§ããµã¼ãã¼éçºã¯é·ãéãã£ã¦ã
- ã¾ãrubyã«èå³ãã£ã
- å½æãé¢ç½ããã¨æã£ãåé¡
- ã¦ã¼ã¶ããã¡ã¤ã«ã¢ãããã¼ããã¦ãã¨ããããã®ã¦ã¼ã¶ã«ã¢ãããã¼ãé²æãããã°ã¬ã¹ãã¼ä½¿ã£ã¦ãªã¢ã«ã¿ã¤ã ã«éç¥ãããããããã©ãå®è£ ãããã
- å®è£
ãçµæ§é£ããåé¡ã¨ããã£ã¦é©ãã
- ãã©ã¦ã¶ã¯é²æã表示ããã®ã«ä½¿ããããªãã¼ã¿ãæã£ã¦ããã§ããã®ãã¼ã¿ã¸DOMããã¯ã¢ã¯ã»ã¹ã§ããªãã
- ã²ã¨ã¤ã®è§£æ±º
- ã¦ã§ããµã¼ãã¼ã¸ãªã¯ã¨ã¹ãã ã
- ã¢ããããã¦ããã¡ã¤ã«ã®ä½å²ãåãåã£ã¦ããããµã¼ãã¸åãåãããã
- ã¬ã¹ãã³ã¹ããã£ãããã®ãã¼ã¿ã§DOMãæ´æ°ãã
- ã¨ããæµã
- æ®éã¯Apacheã¢ã¸ã¥ã¼ã«ãCã§æ¸ããã¨ãå¿ è¦ã«ãªã
- Mongrel ã«åºä¼ã
- æ°å¹´éMongrelã«ã®ãããã
- ããããjavasccriptã¨ã¤ãã³ãããªãã³ãªããã°ã©ãã³ã°ã«ã¤ãã¦èªåãå¾ãç¥èãçµã¿åããã¦ã¿ã
- å½æåãã³ãã¼éã§javascripté«éå競äºãå§ã¾ã£ãé
- jsã¨ã¤ãã³ãããªãã³ããã°ã©ãã³ã°ã®çµã¿åããã¯ã¡ãã£ã¨ããå®é¨ã¨ãã¦ãã£ã¦ã¿ã
- jsã¨ã¤ãã³ãããªãã³ãªããã°ã©ãã³ã°ã¯ã¨ã¦ããã¾ããã£ãããã
- ãã£ã¦ã¿ãããã¾ããã£ã
- 大å¦ã§ã¯æ°å¦ãã£ã¦ãããcomputingã®ä¸çã«å
¥ã£ãã®ã¯å°ãåãã
- Q[02:26]ï¼
- ãµã¼ãã¼ãµã¤ãJSã®ããã¸ã§ã¯ãã¯ä»ã«ããããã
- RingoJSã¨ããAppengineJSã¨ãã
- ããã¦ãJVMã§å®è¡ããã
- Node.jsãä»ããã¸ã§ã¯ãã¨åãéã¦ãéè¦ãªéãã¯ï¼
- ãµã¼ãã¼ãµã¤ãJSã®ããã¸ã§ã¯ãã¯ä»ã«ããããã
- Aï¼
- 確ãã«ãµã¼ããµã¤ãJSã¯æãããããããã£ã
- ã¨ãããããJVMã§ã¯ãªãV8ä¸ã§å®è¡ããã
- ä»ã®ããã¸ã§ã¯ãã¯ä¼çµ±çãªã¢ããã¼ãã¨ããç¹ã§å
±é
- ä»ã®è¨èªï¼ruby/python/etc.ï¼ã«ãããã®ããµã¼ãã¼ãµã¤ãjavascriptã§ãå®è£ ãã¾ãããã¨ããæµã
- ä¾
- ããããã¯ã©ã¤ã¢ã³ããã£ã¦ãããããµã¼ãã¼ã¸ãªã¯ã¨ã¹ãããã¨ããå ´é¢
- ãã«ãã¹ã¬ãã欲ãããããã«ãã¹ã¬ããã§ãªã¯ã¨ã¹ãæãã
- ã¨ããã®ãä¼çµ±çã¢ããã¼ã
- è¦ããã«ãããéã
- VMãéã
- JSã®æ¬è³ªããå¤ããæ¡å¼µããã£ã¦ãªãç¹ãéã
- ãã·ã³ã°ã«ã¹ã¬ãããããã³ããããã³ã°ãã¨ããJavascriptã¨ããè¨èªããã¤ç¹å¾´ããã®ã¾ã¾ä½¿ã
- ã¡ãªã¿ã«èªåãæåã«ã¦ã§ããµã¼ãã¼ã®ä¾ã§Node.jsã®è©±ããã¦ãã®ã¯ããããå ¸åçä¾ã ãã
- ãµã¼ãã¼ãµã¤ãã®ä¸çã§javascriptã¯ã©ãããã¹ããã¨ãã話
- CommonJSããã£ã¦ããã¨ãä»æ§ãä½ããã¨ãã¦ã
- Q[04:21]ï¼
- node.jsã§éåæAPI群ãåãä»çµã¿ããã£ãã説æ
- ãµã¼ãã¼ãµã¤ãã®éçºãã£ã¦ã人ã¯éåæAPIã«æ £ãã¦ãªãã®ã§
- ãã£ã¹ã¯I/OãDBã¸ã®æ¥ç¶ãRESTãªã¦ã§ããµã¼ãã¹ã®å®è£ ã«ã¤ãã¦ã¯ã©ããã£ã¦ããï¼
- node.jsã§éåæAPI群ãåãä»çµã¿ããã£ãã説æ
- Aï¼
- ãã¹ã¦ã³ã¼ã«ããã¯
- æ®éã®ãµã¼ãã¼ãµã¤ãéçºã ã¨ãããªã
- ã¯ããã«DBã¸ã¢ã¯ã»ã¹
- ãããããã¡ã¤ã«ã¸æ¸ãè¾¼ãã§
- ãããããã¡ã¤ã«ç§»åãã¦
- ããããä»ã«ããããããã£ã¦
- ã¨ãªã
- ãã®æã®ã·ã¼ã±ã³ã·ã£ã«ãªå¦çãï¼ã¤ãã¤å®è¡
- ããããã³ã°I/Oã¨ã¹ã¬ãããå½ããåã®ä¸çã®ããæ¹
- nodeã®å ´å
- ããæ¹ãå¤ããªãã¨ãããªã
- å¦çï¼ã¤ï¼ã¤ã«æéãããããæè¦æéã¼ãã«ãªããªã
- ãã¡ã¤ã«ã®ç§»åã«ã¯ãã£ã¹ã¯ãå転ãå¿ è¦
- DBååãã ã£ã¦ã¬ã¹ãã³ã¹æ¥ãã¾ã§ã«æ°ããªç§ã¯å¾ ã¤
- nodeã§ã¯ãã¹ã¦ããã³ããããã³ã°
- ãã¬ã¹ãã³ã¹ãå¾ ã¡ã¬ã¹ãã³ã¹ãæ¥ã¦ããå¦çã«ç§»ããã¨ãããã¨ãã§ããªã
- ã³ã¼ã«ããã¯ãå¿ é ã®ä¸ç
- nodeã«ã¯å¤§éã®ç¡åé¢æ°ã
- ç¡åé¢æ°å ã§ãã¬ã¹ãã³ã¹ãåãåãããã«ã³ã¼ã«ããã¯ãç¨æãã
- nodeã®ä¸çã®æ··ä¹±ã®ãã¨ã¯ã¹ã¿ã¤ã«ã®åé¡ãªã®ã§ãæ £ããã°è§£æ±ºãã話
- Q[05:48]ï¼nodeã®ä¸çã¯ããã³ãã¨ã³ãéçºè ãããæ £ã親ããã§ãä¸çã¨è¨ããï¼
- Aï¼
- ãã®ã¨ãã
- nodeã®ã»ã¼ã«ã¹ãã¤ã³ã
- nodeã®ä¸çã®ååã§ãããã³ããããã³ã°/ã³ã¼ã«ããã¯ãã¼ã¹ã®ããã°ã©ãã³ã°ãå¤ãã®äººãç¿å¾æ¸ã¿ã§ããç¹
- ããã³ãã¨ã³ãéçºã§ç¿å¾æ¸ã¿
- xhrãªãã¸ã§ã¯ã使ããããã°éåæããã°ã©ãã³ã°ãå¿ é ã§ãããã¨ã¯å¨ç¥ã®ãã¨
- xhrãåæçã«ä½¿ãã°ã¦ã§ããã¼ã¸ãããã¯ããã¦ãã¾ããã¨ãç¥ã£ã¦ã
- nodeã®ä¸çã®ååã§ãããã³ããããã³ã°/ã³ã¼ã«ããã¯ãã¼ã¹ã®ããã°ã©ãã³ã°ãå¤ãã®äººãç¿å¾æ¸ã¿ã§ããç¹
- åæçã«xhrã使ãã¹ãã¨ããã¯ãã
- DBã¸ãªã¯ã¨ã¹ãæããã¨ã
- åæçã§ãªãã¨ãããªãããåæçã§ãªãã¨ããã°ã©ã ãæ¸ããªãã¨ãããã¨ã ã£ã¦ãã
- DBã¸ãªã¯ã¨ã¹ãæããã¨ã
- Q[06:35]ï¼
- ryanã®ãã¬ã¼ã³ãä½åãã¿ã
- js/nodeããã¾ãã«ä»ã®è¨èªã§ãå®é¨ãã¦ãããããªãï¼ã¨æã£ã
- jsã®ã·ã³ã¿ãã¯ã¹ãV8ã«ï¼ã»ãã®è¨èªã«ã¯ãªãï¼é åããã£ãã®ãï¼
- Aï¼
- rubyé·ããã¨ä½¿ã£ã¦ã¿ã
- rubyã®VM使ã£ã¦ãã¨æ¬æ«è»¢åãªãã¨ã«ãªãã
- é ãããéããããã¨ãããããã®é¨åã¯Cã§æ¸ããªããããã£ã¦ãªã
- rubyã§ï¼è¡æ¸ããã³ã«ãµã¼ãã¼ããã£ãããã¦ãã
- rubyããã¦Cã§ãµã¼ãã¼æ¸ããã¨ã«ãªã£ã
- Cã ãã«ãªã£ããè¶ å¿«é©
- Cã§ãµã¼ãã¼æ¸ãããã¡ã¤ã«i/oãå®è£ ã
- ã¡ããã©ãã®ã¨ã夢æ³ãã¦ããã¨
- é¢åãããªåé¡ã¯æ½è±¡åãã¦èã«è¿½ããã£ã¦ãããã©ã¤ãã©ãªããªãªã¼ã¹ãããã
- ã¿ããªCã§ãã®æã®ã©ã¤ãã©ãªãã¬ã·ã¬ã·æ¸ã
- ã¿ããªãèªåç¨ã«ã¡ãã£ã¨ãããµã¼ãã¼ãæ¸ã
- ãã¡ãããã®å¤¢æ³ã¯ç¾å®ã«ã¯ããå¾ãªããã¿ããªCã§æ¸ãããããªã
- ãã³ããããã³ã°ãªç°å¢
- ãããã¨ã³ã¸ãã¢ãã¡ã«æä¾ãããã¨ãæã£ã¦ã
- ãã³ããããã³ã°ãªä¸çãããããµã¼ãã¼ãã¶ã¤ã³ã«æé©
- ãµã¼ãã¼ãã¶ã¤ã³
- ãã°ããç´ç²é¢æ°åãªï¼Purely functionalãªï¼ä¸çããæ°ã«å
¥ãã ã£ã
- HaskellãHaskellã©ã¤ã¯ãªå®£è¨åè¨èªã®ä¸ç
- ã½ã±ããããã¤ãã³ãããã£ããããå ´é¢ã§ãã£ã¦ããpurely functional
- ããããå¯ä½ç¨ï¼Side effectï¼ãã¤ãã³ãã«ã¼ãå ã§èµ·ãããã¤ãã³ãã«ã¼ãã§èµ·ããããã«ã³ã³ããã¼ã«ã§ãã
- é¢æ°ãã³ã¼ã«ãã¦ãªãããã¼ã¿ï¼ã©ããªãã¼ã¿ã§ãï¼æ¸¡ããã¨ãã§ããããå¯ä½ç¨ã¼ãã®é¢æ°å¼ã³åºã
- ãããªãã¨ãã§ãã
- ãã¼ã¿ããããã¡ã¸æ¸ãè¾¼ãããã®ãããã¡ã¯ã«ã¼ãã«ã¸æ¸¡ããã
- ã¾ãã¤ãã³ãã«ã¼ãã¸æ»ã
- ã¤ãã³ãã«ã¼ãããã¤ãã³ãããã£ãããã¦ãã¨ãã«ãpurely functionalãªã¾ã¾ã§ãå¯ä½ç¨ã¨ãä»ã®ãã¨ããåãé¢ããã¦ãããã¨ãã§ããä¸ç
- ã§ããé¢æ°åè¨èªã«èªåã¯æ«æãã
- GHCï¼The Glasgow Haskell Compilerï¼ã®ã½ã¼ã¹èªããã¨ãã¦ã¿ã
- è¶ ã ãºã¤ããããèªã¿ããªããã»ã©èªåã¯é人ããã°ã©ãã¼ãããªãã¨æã£ã
- æ«æã
- ã¡ããã©ãã®é V8ããªãªã¼ã¹ããã¦ã
- javascriptã¯ããã»ã©ä½¿ã£ã¦ãªãããV8ã®ãã¨ãåè¦ã ã£ã
- V8ã§ã¡ãã£ã¨éãã§ã¿ãããæå¤ã«ãè²ã ãã£ããããç¹ãå¤ãã£ã
- Q[09:18]ï¼
- Rubyã§ã®çµé¨ã¯äºæ³ãã¦ããã©ãHaskellããã£ã¦ãã®ã¯é©ãã
- ããè¨ãããnodeã®ã»ã¼ã«ã¹ãã¤ã³ãã¯ãjavascriptã
- ã ãRyanããããã°javascriptã¯éè¦ãªãã¤ã³ãã§ã¯ãªãnodeã®ç¹å¾´ã®ï¼ã¤
- ãã®ç解ã§ãã£ã¦ãï¼
- Aï¼
- æ£è§£
- æ¬å½ã¯node.jsã«ã¨ã£ã¦jsã¯éè¦ãªã®ãããããªãããèªåçã«ã¯éè¦ãããªã
- googleãV8ä½ã£ã¦BSDã©ã¤ã»ã³ã¹ã§é å¸ãã¦ãã®ã¯ãããã¨
- V8ã¯ã¨ã¦ããããããã¯ã
- V8ã®éçºãæ´»çºãªã®ããããã¨
- javascriptã®å¤§å¤è¯ãç¹
- stdin/stdout/etcãªã©ã®I/Oåããä¸åæªå®ç¾©ãä»æ§ã«ããªãããã«ãã¤ã³é¢æ°ã«ããªã
- ãã¡ããjsã§I/Oã¯ã©ããã¹ããã¨ããè°è«ã¯ããããã¦ãããç¬èªæ¡å¼µãã¦ãã®ããã
- jsã§I/Oã®å®è£ ãå¶ç´ãªãã§ãã
- rubyã ã£ããã©ããªãã
- put()ã¨ããçµã¿è¾¼ã¿é¢æ°ã¨ãã¦ãã
- put()ãªã©ã®ãã«ãã¤ã³é¢æ°ãåæã«I/Oãèããªãã¨ãããªããã
- Luaãé·ããã¨ä½¿ã£ã¦ã¿ããã¨ãã£ã
- Luaã«ãio.read()ã¨ãio.write()çã ã®æ¨æºã©ã¤ãã©ãªããã
- jsã«ã¯ãã®æã®ãã®ããªãã®ãèªåã«ã¯é å
- javascriptã¯ï¼ruby/Luaã¨æ¯ã¹ãã¨ï¼ã¨ã¦ããã¥ã¢ã§ã·ã³ãã«
- æ°å¤ã®å ç®ãæååçµåãç¡åé¢æ°ãçã ã®å°ã¶ããªè¨èª
- ãããé åç
- nodeãã¿ããªãã注ç®ãããããã«ãªã£ã¦ãçç±ã¯èªåãjsã«é
åãæããé¨åã¨ã¯å¥ã®æã«ããã¨æã
- nodeã§ã¯javascript使ãã¨ããããã¦ãã
- ãJVMç³»è¨èªããjavascriptã¸ãã¨è¡¨ç¾ã§ãããããªéçºç°å¢ã®ç§»è¡ãçµé¨ãããããªã¨ã³ã¸ãã¢ã¯çç¡
- ãããããã¨ããã¯ãå¤ãã®äººã«ã¯é åçãããããªã
- javascriptã¯ãã åã«ä½¿ãåæã®ããå°ã¶ããªè¨èª
- ãã®ç¹ãã¾ãèªåã«ã¨ã£ã¦é åç
- Q[11:06]:
- Ryanã®è¦³æ¸¬ç¯å²ã§ã©ãããã¿ã¤ãã®ã¦ã§ãã¢ããªã§nodeã使ããã¦ãï¼
- nodeãæ´»ããã±ã¼ã¹ã¯ï¼
- Aï¼
- -
- -
- Q[12:25]ï¼
- ãªã¢ã«ã¿ã¤ã ã¦ã§ãçãªï¼
- Aï¼
- -
- -
- Q[13:05]ï¼
- Yahoo! Emailããã°ã«ãyahoo mailã§nodeãæ¤è¨ãã¦ãã¨ããã¨ã³ããªãã£ã
- ä½ãç¥ã£ã¦ãï¼ãã¨ã»ãã«ãã«ã¤æ¡ç¨ã±ã¼ã¹ç¥ã£ã¦ãï¼
- Aï¼
- Yahoo!ã¯nodeãçµæ§æ°ã«å ¥ã£ã¦ããã¦ã
- Yahoo!ã¯nodeãããã¸ã§ã¯ãã«ä½¿ãã®ãæ¤è¨ãã¦ã
- Yahoo!ã®ã¯å®é¨ãã§ã¼ãºã ã¨æã
- Yahoo!ã®ãã¼ã ã¯ãã©ã¦ã¶ãµãã¼ãã§graceful degradationãããã大äºã«ãã¦ã
- ï¼è£è¶³ï¼ï¼graded browser support
- ãªãããªãã©ã¦ã¶ã«ã¯ãªãããªæ©è½ãããã§ãªããã©ã¦ã¶ã«ã¯ã·ã³ãã«ãªæ©è½ãçã
- ãã¨ãã°Yahoo!ã®ãµã¤ãã¯jsããªãã«ãªã£ã¦ã¦ãæ©è½å¶éã¯ãã£ã¦ãã³ã³ãã³ãã«ã¢ã¯ã»ã¹ã§ãã
- Q[14:00]ï¼
- ä»Yahoo!ã«ã¢ã¯ã»ã¹ãã¦ãjsãªãã§å©ç¨ã§ããï¼
- Aï¼
- -
- Q[14:47]
- nodeã§ã¯eventãã¼ã¹ããã°ã©ãã³ã°ã§ããç¹ã«ã¤ãã¦æãä¸ããã
- eventãã¼ã¹ããã°ã©ãã³ã°ã使ããã¨ãå«æãããã¨
- eventãã¼ã¹ããã°ã©ãã³ã°ã§åãçµã¾ãªãã¨ãããªãåé¡
- Aï¼
- -
- -
- Q[17:00]ï¼
- nodeããã«ã¼ã®ãã¼ã«ã»ãã
- Ryanã¯ã©ãäºæ³ãã¦ãï¼
- ã¨ãã£ã¿,ããããã°æ©è½ããã¹ãããããã¤ãã¤ãã³ãã¢ãã¿ãªã³ã°
- Aï¼
- -
- -
- Q[17:30]ï¼Ryanã¯ä½ä½¿ã£ã¦ãï¼
- Aï¼
- -
- -
- Q[18:50]ï¼
- å ¬éãã¦ããã£ããã¢ããªã®ãµã³ãã«ã§å©ç¨å¯è½ãªã¡ã¢ãªãåºåãã¦ã件
- Q[19:37]ï¼
- nodeã§ã¯ããã¼ã³ã³ããã¼ã«ã®ä»çµã¿ãè²ã ããããã£ãã説æãããã
- ã³ã¼ã«ããã¯
- Eventemitter
- promise
- Aï¼
- -
- -
- Q[21:00]ï¼
- nodeã§ã®ãã¼ããã©ã³ã·ã³ã°
- ç¾æç¹ã§ã®ããæ¹
- ä»å¾ã®ãã©ã³
- Aï¼
- -
- -
- Q[24:18]ï¼
- node/Nginx/js+jvmã®å°è¦æ¨¡ãªãã³ããã¼ã¯ããããã§ããã¿ãããã
- ãããããããã³ããã¼ã¯ããè²ã
çµè«ãåºããã¨ãã¦ãã
- ãGCã§ã¯V8ãããä¸ãããã±ãããµã¤ãºã大ãããªãã¨nodeã®ããã©ã¼ãã³ã¹ã¯ä¸ãããetc
- ryanèªèº«ã¯nodeã®ããã©ã¼ãã³ã¹ã«ã¤ãã¦ã©ãæã£ã¦ãï¼
- Q[28:02]ï¼
- -
- -
- Q[29:57]ï¼
- V8以åãjsã®VMã¯ããã¼ãã¨ã¿ãªããç¶ãã¦ãã
- V8ã¯ä»å¾æ°å¹´ã§æåãã¦ããã¨æããï¼
- Q[31:00]
- Aï¼
- èªåã¯javascriptããã®ã¾ã¾ä½¿ããã¨ãã¦ã
- ãã®æã®ã©ã¤ãã©ãªã¯å¥½ããããªã
- Q[31:35]ï¼
- node.jsã¢ããªããã¹ãã§ããå ´æï¼
- Aï¼
- -
- -
- Q[32:46]ï¼
- 2010å¹´10-12æã®ãã¼ãããããæè¿MLã«æ稿ãã¦ã件
- ï¼è£è¶³ï¼2010 Q4 Roadmap - nodejs
- ãã£ããã¨ãã説æ
- ä»å¾ã®å±éã®ãã³ããå°ã
- Aï¼
- -
- -
- Q[34:15]ï¼
- 注ç®ã®node.jsãã¬ã¼ã ã¯ã¼ã¯ãä½åãããã¯ã¢ãã
- Aï¼
- -
- -
- Q[35:59]ï¼
- ï¼ï¼ç¨®é¡ã®ãã©ã¦ã¶ï¼
- Aï¼
- -
- -
- Q[37:48]ï¼
- æ¬å½ã«ãã«ãããã»ã¹ï¼
- Aï¼
- -
- -
- Q[39:24]ï¼
- nodeã¨CommonJSã®é¢ä¿
- CommonJSã®ã¹ããã¯ã§ç¾å¨nodeã§ã®ãµãã¼ãç¶æ³
- æ¸ã¿ã®ãã®ã¯Modulesã®ä»ã«ããï¼
- CommonJSã¨nodeã®ã¯ä»å¾ã©ããªã£ã¦ãã¨æãï¼
- Aï¼
- ãã¨ã§
- -
- -
2011年以éã«ã§ã
- Q[42ï¼49]ï¼
- ä»ã®è©±ã¯ãç°ãªããµã¼ãã¼ãµã¤ãã§ã®è§£æ±ºæ¹æ³ã®éã§ã®interoperabilityã®è©±ã ã¨æã£ã
- ãã©ã¦ã¶ä¸ã§å®è¡ãããããã«æ¸ãããã³ã¼ãã¨nodeã®é¢ä¿ã¯ã©ãæãï¼
- ããµã¼ãã¼ãµã¤ãç¨ã«æ¸ãããã®ã³ã¼ãã¯ãå®ã¯ãã©ã¦ã¶ä¸ã§ãå®è¡ã§ããã
- ãããªè¨ãåããå½ã¦ã¯ã¾ããããªç¾å ´ã¯ããã¨æããï¼
- ãããã¯å®éã«ãããããªã±ã¼ã¹ãRyanã®è¦³æ¸¬ç¯å²å
ã§ç¥ã£ã¦ããã®ããï¼
- ãã©ã¦ã¶ä¸ã§å®è¡ãããã³ã¼ãã®å¤§åã¯DOMæä½ãªã®ã§ãæ¢ã«ãããããã¨æã£ã¦ãã
- Aï¼
- ãµã¼ãã¼ãµã¤ãï¼ããã³ãã¨ã³ãã§ã®ã³ã¼ãå ±æã¯ããããªã«å¤ãã®äººã¯æãã§ããã¨ãããªã
- ããµã¼ãã¼ï¼ãã©ã¦ã¶ã§ã³ã¼ããå
±æã§ãããããã¯ãããã¨ããããã¨ã
- nodeè¦ã¦ãããã¨è¨ã人ãã¡ãå±±ã»ã©ã¿ã¦ãã
- ã§ãããã©ã¦ã¶ãããå¦çã¨ãµã¼ãã¼ãµã¤ãã§å¿ è¦ãªå¦çã¯å ¨ç¶éã
- å®éã«ãµã¼ãã¼ï¼ãã©ã¦ã¶éã§å ±æã§ããã³ã¼ãã®éã¯å°ãªãã¨æã
- å°ãã¯ã³ã¼ãå
±æã§ããå ´é¢ã¯ãããã
- validationç³»ã®ã³ã¼ãï¼ã©ã¤ãã©ãª
- å ¥åãã©ã¼ã ã§ã®å 容ï¼mailã¢ãã¬ã¹ã¡ããã¨å ¥åãã¦ãããã¨ãï¼ãããã©ã¦ã¶ï¼ãµã¼ãã¼ãµã¤ãã§ãã§ãã¯ãã¨ããããããã¤
- ä»å¾å ±æã§ããå ´é¢ã¯åºã¦ãããã
- YUIãã¼ã ãä»ãã£ã¦ã
- ãµã¼ãã¼ãµã¤ãã§ã®DOMããªã¼æ§ç¯
- ãµã¼ãã¼ç¨ã®ã³ã¼ãçæã¨ã
- ã¹ã¯ã¬ã¤ãã³ã°æè¡
- ãã¨ã§
- Q[45:15]ï¼
- thank you very much Ryan.
- Aï¼
- thank you