ãã½ããã¦ã§ã¢æ¸ãç´ããã®æ¯éã¯ãªããç®ã®é¢ããªã話é¡(1, 2, 3)ã§ããã®æã®è©±ãããã¨ã¤ãèªãã§ãã¾ããèªåã¯ä»äºã§ã¯å¥ã«æ¸ãç´ãã決æã§ããç«å ´ã§ã¯ãªãããä½æã§ãç¹ã«æ¸ãç´ãã½ããã¦ã§ã¢ããªããä»äººäºããªã®ã«ç®ãé¢ããªãããªãã»ãã·ã§ã³ã¨è¨ã£ã¦ããããªã®ã§æ°å¹´ã«ä¸åº¦ã¯å¿ã®ä¸ã®ãªã©ã¤ã話ãåãåºãã¦ç²¾ç¥ã®å¹³å®ãåãæ»ããããä»æ¥ã¯ãããªæ¥ã§ãã
Things You Should Never Do
ã¤ã³ã¿ã¼ãããã®ããã°ã©ãã³ã°ã»ãµãã«ã«ãã£ã¼ã«ãæ¸ãç´ãã»ãã¡ã»çµ¶å¯¾ãã¨ãããã¼ã ãæã¡è¾¼ãã ã®ã¯ãä»ããããã 20 å¹´åã® 2000 å¹´ã« Joel Spolsky ãæ¸ãã Things You Should Never Do, Part I â Joel on Software ã ã¨æãã(æ¥æ¬èªè¨³ã¯æ¬ã«ãªã£ã¦ãããæã¯ã¤ã³ã¿ã¼ãããã§ãèªããæ°ããããã ãã©ã) ãã㯠Netscape ã¨ããä¼ç¤¾ãæ¸ãç´ãã主è¦è£½å Netscape Navigator ã«é¢ãã話ã§ãããå社ã¯ãã©ã¦ã¶ããã«ã¹ã¯ã©ããã§æ¸ãç´ããã§ããã®åºè·ãé ãã«é ãã競åã® Internet Explorer ã«å¸å ´ãæã渡ããã¨ã«ãªã£ããçµæã¨ã㦠Netscape ã¨ããä¼ç¤¾ã¯å¾ãã¦ãæ°å¹´å¾ã«ã¯è²·åããããªããªã£ã¦ãã¾ã£ããæ®å¿µã§ãããããã£ã±ãæ¸ãç´ãè¯ããªãã§ããããããã¨ããæ¹ãããã§ãããæ¸ãç´ããªãã¦ãã¢ã¼ããã¯ãã£ã¨ãç´ãã¾ãããã»ã»ã»ã¨ã¾ããããªè©±ã ã
å½æã®äººã ã¯ãããèªãã§ããã¨èª¬å¾ãããæ¸ãç´ãè¯ããªããªã»ã»ã»ã¨ãæã£ãããã¦ãããæ代ã®æµãããã£ããæ¸ãç´ãã®ä¸»è¦ãªä»£æ¿ã§ãããªãã¡ã¯ã¿ãªã³ã°ãä¸ã«åºãã Martin Fowler ã®æ¸ç± Refactoring ã®åºçã 1999 å¹´ãã¡ããã¨ä¸ã®ä¸ã®ããã°ã©ãããã¯ã½ã³ã¼ããæ¸ãç´ããªãã¦ãå¿ãç ã¾ãã«æ¸ãæ¹æ³ããããããããªãã»ã»ã»ãã¨æ°ã¥ãã¯ãããé ã ã£ãã
éã«è¨ãã¨ããªãã¡ã¯ã¿ãªã³ã°ãã¨ããè¡çºã¯ä»ã»ã©å½ããåã§ã¯ãªãã£ããã ãã Joel ã®ä¸»å¼µã«ãæ°é®®å³ããã£ãã
å ã®è¦ç´ã¯å®ã¯ã¡ãã£ã¨ã¦ã½ããã£ã: “Things You Should Never Do” 㯠Netscape ã Netscape Navigator ã®ãã¼ã¿çé å¸ãã¯ãããæã«æ¸ããã¦ãããã¤ã¾ã Netscape ãæ½°ããåã«æ¸ãããæå¾ ã®æ°ãã¼ã¸ã§ã³ã«ãã£ã¡ãæ°´ãå·®ãã¦ãããä¸ã®ä¸ï¼ãµã³ãã«æ° 1, ã¤ã¾ããããã) ã¯ãã®æ°ãã¼ã¸ã§ã³ Netscape Navigator ãããã楽ãã¿ã«ãã¦ããããªãã UI ããã£ããããªã£ãããã¦ãããã¤ã¯ããããã¨ãèµ·ããããã ãä»ã®ã¨ãããã°ã ãã§ã¯ã½é ããã©ã»ã»ã»ã¿ãããªæ°åã ã£ããããã« Joel ã¯ãã¯ã½é ãã¦ãã°ã ãããªã®ã¯æ¸ãç´ãã ããã ããã¨æ°å¹´å¾ã®å´©å£ãäºè¨ããããã§ãå è¦ã®æããæ §ç¼è¨äºã¨ãã¦äººã ã¯ãã®ãã¨ãã°ããèªã¿ç¶ãã ããã
ããã© 20 å¹´å¾ã®æã ã¯ãã£ã¨è²ã ãªãã¨ãç¥ã£ã¦ãããNetscape ã®ä¸ã®äººã¯ãã®å¾ã«è²·åå ã® AOL ã説å¾ããNetscape Navigator 5 ããªã¼ãã³ã½ã¼ã¹åãããããã¯å²ä¸åã¨ãã£ã¦ããã¬ããªä¼æ¥çº OSS ã ã£ããã³ã¼ãããªã¼ãã³ã½ã¼ã¹ããã®ã¿ãªãããä¸ã®äººã¯ Mozilla ã¨ããæ°ä¼ç¤¾/éå¶å©å£ä½ãã¹ãã³ã¢ã¦ããã¦éçºãç¶ããNetscape Navigator ã Firefox ã¨ããè¶ äººæ°ãã©ã¦ã¶ã¨ãã¦èããWeb 2.0 ã¨ããå¾æ¼ãã㦠Microsoft ã®è å¨ã¨ãªã£ããã¤ã¾ãæ¸ãç´ã㯠Netscape (ä¼ç¤¾) ãæ½°ããããã© Firefox (製å) ãçã¿åºããããããããã¡ãªã®ï¼
Go, from C to Go
ä¸æ¹ã®ãªãã¡ã¯ã¿ãªã³ã°ã 20 å¹´ã®éã«ããã¶ãé²åãããIDE ã®ãªãã¡ã¯ã¿ãªã³ã°ãµãã¼ããããã°ã©ãã³ã°è¨èªã® AST ã¢ã¯ã»ã¹å®¹æåã®ãããªæè¡é©æ°ããã£ãããMicroservices ã®ãããªå¤§è¦æ¨¡ã¤ã³ã¿ã¼ãããã½ããã¦ã§ã¢ã®ãªãã¡ã¯ã¿ãªã³ã°ã»ãã¿ã¼ã³ãåºãç¥ãããããã«ãªã£ãããã¼ã³ã¨æ¸ãç´ããªãã¦ããæ¸ãç´ãããã¨ããããªãã¡ã¯ã¿ãªã³ã°ã§åãåºãã¦ãããã ãæ¸ãç´ãã°ãããããããããªèããæ®éã«ãªã£ãã
èªåã¯ããææã¾ã§ãªãã¡ã¯ã¿ãªã³ã°åç主義è ã ã£ãã®ã§ãã¤ãããã½ããã¦ã§ã¢ãæ¸ãç´ãã®ã¯ããã°ã©ããã¶ã³ã ããã»ã»ã»ã¨ããã®ã¯ç ½ãããã ãã©ãç¼ã®åã®åé¡ã«å¯¾ãã¦å®åã足ããªãããã ã¨æã£ã¦ããããã®ä¸»å¼µãè£ä»ããä¸ã®ä¸ã®ãã¤ãã¯ãªãã¡ã¯ã¿ãªã³ã°ãããªã¼ãã³ã½ã¼ã¹ãã¨ã³ã¸ãã¢ãªã³ã°ã»ããã°ã®éçã«ä¼´ãè²ã ã¨ç®ã«ããããã¨ãã°å¾æ¥é£ããã¨ããã¦ãããã¼ã¿ãã¼ã¹ã®ãªã³ã©ã¤ã³ã¹ãã¼ãå¤æ´ã移è¡ãã人ã ã¯æ®éã«ãã£ã¦ã®ããããã«ãªã£ãã“database migration dual write <æ°ãç®ã®ãã¼ã¿ãã¼ã¹>” ã¨ãæ¤ç´¢ããã¨ç°¡åã«äºä¾ãè¦ã¤ããã
ãã¤ãã¯ã»ãªãã¡ã¯ã¿ãªã³ã°ã®éåå¡ã®ä¸ã¤ã¯ Golang ã³ã³ãã¤ã©ã® C ãã Go ã¸ã®æ¸ãæã ã ã¨æããå¾æ¥ã¯ã¤ãããã®æ¸ãç´ãã®å£å®ã«ãªããã¡ãªããã°ã©ãã³ã°è¨èªã®ä¹ãæãããã³ã¼ã翻訳ãã¼ã« ãä½µç¨ãããã¨ã§å®å ¨ã«ä¹ãåã£ã¦ãããã»ãããç¼ã®åã®åé¡ã«å¯¾ãã¦ååãªå®åãããã°æ¸ãç´ãã¨ãå¿ è¦ãªãã§ããï¼
ãã®ä¾ã®ããã¨ããã¯ããããªå®åãããããã¼ã ãï¼ãå¿ç½®ããªãã¤ã£ãããã¨ãããRuss Cox ããå®åãªãã¦ãã¾ã£ããå°ããªããããå°ããããããªããã©ãããã¯äººé¡ããã°ã©ãæ°åãé¤ãã ãããã¿ããªå°ã£ã¦ãã
ãããã¦ããªãã¡ã¯ã¿ãªã³ã°ã»ã»ã»ããä¸è¬åãã¦ããã¨å®å ¨ã§æ¼¸è¿çãªã¬ã¬ã·ã¼æ®ºãã¯ããã£ããããã®ã«ãªã£ããå°ãªãã¨ã森ç°ã®ä¸ã§ã¯ã
Showstopper!
æ¸ãç´ãã®æ¹ã¯ã¨ããã¨ãã¾ãè²ã ããã¨æããã©èªåã®å°è±¡ã«ã®ãã£ã¦ãããã®ãã¡ããã£ã¨ç´¹ä»ããã
ããªãã¡ã¯ã¿ãªã³ã°ãã常èã«ãªãåã® 20 ä¸ç´ãæ¸ãç´ãã¯èªæ®ºè¡çºã§ã¯ãªããæã«ãã£ãããè±éçè¡çºã ã£ãããã®è±¡å¾´ã Windows NT ã¨ãã Windows 10 ã®ç¥å ã®éçºãæããæ¸ç± “éãããã°ã©ãã¼” ã ã¨æããåå Showstopper! ã®åºç㯠1993 å¹´ãWindows NT ã§ã¯ãä½å¹´ãæ¸ã㦠Windows ã¨ãã OS ãã¾ãã¾ãã¤ãããæ¸ãç´ãã¦ããããã®ãã°ããã¹ãã¶ããæããã®ããéãããã°ã©ãããã¨ã¯ããåæ¥çã«ã¿ãã¨ï¼ããã¦ãã¶ããã¯ãã«ã«ã«ãï¼Windows NT ã¯å¤§æåããããã¹ãã«å·»ãè¾¼ã¾ããå½æã® Microsoft 社å¡ã家ã®ä¸ã¤ãããã¯å»ºã£ããã¨ã ããããã¹ãã«ãã¦ããèªåã¯ãã®ããã¸ã§ã¯ãã§ã¯çµ¶å¯¾ã«åããããªãããã©å人ã®ä¸ã«ã¯ã俺ãã«ãã©ã¼ã®ä¸ã§ä¸ã¤åæ¥ãæãéãããããã ããã¨ããçè ããã¦ãããã«ãã種ã®é åã¯ãã£ããã¤ã¾ã Joel Spolsky ããã¤ã¦åãã¦ãã Netscape 殺ãã® Microsoft ãããªãã ããã ã§æ¸ãç´ãããã¦ããã
æã®æµããæ¯ã¹ããããæè¿èªãã ãªã©ã¤ãã»ãã¹ãã»ã¹ãã¼ãªã¼ãä¸ã¤ç´¹ä»ããã: “Uber’s Crazy YOLO App Rewrite, From the Front Seat” 㯠2016 å¹´ã«è¡ããã Uber ã®ã¹ããã¢ããªæ¸ãç´ãã®æ§åãå½äºè ãä¼ãã¦ãããã¤ãã³ãç»å£ä¸ã®ç¤¾é·ã®çºè¨ã«ãã£ã¦æ±ºã¾ãæ ¹æ ã¬ã¹ãªç· åããã¼ã¯ãã¼ã³ãç¡ãã段éçãã¼ã«ã¢ã¦ãç¡ãã®åæãªãªã¼ã¹ãããã«ã«ç¼¶è©°ã®ãªã¼ã«ãã¤ã¿ã¼ãçãå°½ãã¦ãã人ã ãã¢ãã¤ã«åºæã®å³ãããå·®ãå¼ãã¦ãååä¸ç´ã®æè¡çé²å±ãæããããªãèã ããããããããããã¦ãã³ã¼ã³ã£ã¦ãã¤ãã»ã»ã»ã
å½æã® Uber ãå ãã§ããæ代ã®é¢¨ã«ãã£ã¦ãã®ãªã©ã¤ãã¯å¥è·¡ã®æåãåãããããã Windows NT ã¨éã£ã¦æ代ã®é¢¨ã¯é·ãç¶ãããç¿å¹´ 2017 å¹´ã®å é¨åçº (ã¹ãããã¹ãã¨ã¯ç¡é¢ä¿) ã«ãã£ã¦ä»¶ã®ç¤¾é·ã¯è·ã追ãããã®ã§ãã£ããæ ªä¾¡ãè¦ãéãä»ãæ¥ç¸¾ã¯ã±ã£ã¨ããªãã
ããããã° Showstopper! ã® Microsoft ã§ã, Windows ã®æ¸ãç´ãçããã¸ã§ã¯ãã ã£ã Longhorn (2006) ã¯å¤±æã¨ã¿ãªããã¦ãããªãããããæ¸ãç´ãã¨ã¯ã¡ãã£ã¨éãæ°ããããã©ã
Servo
ã¾ããã¹ãã®è©±ã¯ç½®ãã¦ããããèªåã«ã¨ã£ã¦ãã 10 å¹´ãããã§ä¸çªå°è±¡çã ã£ãæ¸ãç´ãã¯ããªãã¨ãã£ã¦ã Servo ã ãªã
Servo 㯠Mozilla ã«ããã¦ã§ããã©ã¦ã¶ã®æ¸ãç´ãã§ãããããã°ã©ãã³ã°è¨èª (Rust) ããä½ã£ã¦ããã®ã§ãæ£çæ£éã®ã¤ãããã®æ¸ãç´ãã¨è¨ãããJavaScript ã®å¦çç³»ã¯åå©ç¨ãã¦ãããã©ããã¯ã¾ããããããããããã¸ã§ã¯ãã®éå§ã¯ 2012 å¹´ããããNetscape Navigator 5 ä»¥æ¥ 10 å¹´ã¶ãã®ãªã©ã¤ãã¨è¦ããã¨ãã§ãããNN 㯠C ãã C++ ã«ç§»è¡ããããã©ãä»åº¦ã¯ C++ ããç¹è£½è¨èªã® Rust. ãã㦠Firefox ã®æ¬¡ãã¼ã¸ã§ã³ã§ã¯ãªã research ã¨ããä½ç½®ã¥ããé¸ãã ãã¤ã¾ã Firefox ã¯ä¸¦åã«éçºãç¶ãã¦ããã
ãã®å¾ Servo ã® CSS ãã¼ãµ Stylo ã GPU ãã¼ã¹ã®ã¬ã³ãã© WebRender ãªã©ãããã¤ãã®ææ㯠Quantum ã¨ããããã¸ã§ã¯ãã¨ã㦠Firefox ã«æã¡è¾¼ã¾ããä¸å®ã®ææãæãããããã© Servo ã¯æåãã…ã¨ç´ ç´ã«è¨ãã®ã¯ã¡ãã£ã¨é£ããããªã«ããå»å¹´ã®ã¬ã¤ãªãã§ãMozilla 㯠Servo ã Rust ã®éçºè ãã°ã£ãã解éãã¦ãã¾ã£ããServo ã¯ãªã¼ãã³ã½ã¼ã¹ãªã®ã§éçºã¯ä¸å¿ç¶ãã¦ããããæ¸éã¯èãããNN ã®ã¨ãã¨ã¡ãã£ã¦ Servo ã®éçºã®é ããã¬ã¤ãªãã®ä¸»å ã§ã¯ãªãã¨ããããã©ã(ãã¶ã Firefox OS ã®ããããã£ã½ã©äººã¨éãã¤ã£ãã¾ãã¦ããã¨æããã) ããã§ãéçºè ãã¯ãã«ãªã£ã¦ãã¾ã£ãããã¸ã§ã¯ããæåã¨å¼ã¶ã®ã¯æãããã
ãã¯ã Servo ã¯æ¸ãç´ãã®å¤±æã§ãJoel Spolsky ã¯æ£ããã£ãã®ã ãããã
Flutter
ãªã©ã¤ãã§ããªãã¡ã¯ã¿ãªã³ã°ã§ããªãã½ããã¦ã§ã¢ã®å¤§æ¹é ææ³ã«ãã©ã¼ã¯ããããã¯ãéæ¹é ãããããå ã®ã³ã¼ãããäºææ§ãæ°ã«ãããã³ãã³æ¸ãæãã¦ãããäºææ§ãæå³çã«æ¨ã¦ãç¹ã§ãéæ¹é ã¯ãªãã¡ã¯ã¿ãªã³ã°ã¨å¯¾ç §çã§ãããä¸æ¹ã§ã³ã¼ãã®é£ç¶æ§ã¯ãªãã¡ã¯ã¿ãªã³ã°ã«éããé¨åãããããã®é£ç¶æ§ã¯ãªã©ã¤ãã¨ä¼¼ã¦ãä¼¼ã¤ããªãä¸æ¹ããªãã¡ã¯ã¿ãªã³ã°ã§ã¯è¾¿ãçããªãã´ã¼ã«ãç®æãã·ã§ã¼ãã«ããã¨ãã¦ãªã©ã¤ãã¨éæ¹é ã«ã¯ä¼¼éã£ãã¨ãããããããªãã¡ã¯ã¿ãªã³ã°ã¨ãªã©ã¤ããæ··ãåããã¦ã²ã£ããè¿ãã¨éæ¹é ã«ãªãã
èå³æ·±ãéæ¹é ã®äºä¾ã¨ãã¦ãDart ã¨ããè¨èªåãã® ã¯ãã¹ OS ã¢ãã¤ã« SDK Flutter ãæãããã
Flutter ã¯ãã¨ã㨠Chrome (Blink) ã®éæ¹é ããã¸ã§ã¯ãã¨ãã¦å§ã¾ã£ãã2014 å¹´ã« push ãããæåã®ã³ããããã¿ãã¨ã¾ã Blink ã®å§¿ãè¦ããã¨ãã§ãããå½æ㯠Sky ã¨å¼ã°ãã¦ãããã®ããã¸ã§ã¯ãããªã«ããããã®ãã¯å¤å誰ã«ãããã£ã¦ããªãã£ããREADME ã«ã “We’re experimenting with different ideas and exploring various approaches, many of which won’t work and will need to be discarded, but, if we’re lucky, some of which might turn out to be useful.” ã¨æ¸ãã¦ããããã®å¾ããã¸ã§ã¯ããã㯠HTML ã¨ããåãå»ãããJS 㯠Dart ã«å·®ãæ¿ããããããã¦ã¹ããã®ã¯ãã¹ OS 㪠UI ãã¬ã¼ã ã¯ã¼ã¯ã¨ãã¦åæãã¦ãããä»æ¥ã®ã³ã¼ãã«ãã®åºèªãä¼ããè¦ç´ ã¯ç¡ãã
éæ¹é ããªã©ã¤ãããªãã¡ã¯ã¿ãªã³ã°ã¨ååã«èªãã®ã«ã¯ããç¡çããããã§ãèªåã¯ã©ããã¦ã Servo ã¨ã®å¯¾ç §ãèãã¦ãã¾ããFlutter ã¯ãã¨ãã¨ãå½æã® Chrome (Blink) ãã©ãã«ããã¦åçã«éããããã¨ããåæ©ã§å§ã¾ã£ãããã¶ã Servo ã Firefox ã«å¯¾ãã¦åããããªæãããã£ã¦å§ã¾ã£ãã¨æããã ããã¹ã¿ã¼ãå°ç¹ã¯ãå°ãªãã¨ããã¤ã¬ãã«ã«ã¯ä¼¼ã¦ãããFlutter 㯠Web æ¨æº … ã¤ã¾ãä»æ§ãè¤éãããã¨ã¿ãªãããããæ¨ã¦ã¦ã¿ããã¨ã«ãããServo 㯠Gecko … ã¤ã¾ãå®è£ ãè¤éãããã¨ã¿ãªãããããæ¨ã¦ã¦ã¿ããã¨ã«ããããããªå対ãããã
å人çã« Dart ã¯ã¾ã£ãã好ãã§ãªãã Android ã¢ããªéçºè ã¨ãã¦ã¯ãã¹ OS ã®ãã¬ã¼ã ã¯ã¼ã¯ã«ãèå³ããªãããã©ãåç®ããè¦ãããã¸ã§ã¯ãã¨ãã¦ã® Flutter ã¯ã¾ãã¾ãæåããã¨è¨ããããããªãã ããããåãç¨éã ã¨ãã¶ã React Native ã®æ¹ã人æ°ã¨ã¯ãããäºçªæãããã«ã¯ã¤ãã¦ãããã¤ã³ã¿ã¼ãããã®ã¬ãã¥ã¼ã¨ããèªãéãã§ã¯æ¡ç¨ããéçºè ã¯æ¦ãæºè¶³ãã¦ããããã ãããªã«ãã Flutter ã®éçºãã¼ã ã¯ã¯ãã«ãªã£ã¦ããªãï¼ã¨æããGoogle ã§ããã¸ã§ã¯ã失æã«ä¼´ãã¯ããããã®ãããããããªããï¼ã
ãªã©ã¤ãã®å¼å
ã¨ã¯ããããæ¯ã¹ã¦ã¿ã㨠Servo ã失æã¨å¼ã¶ãã¨ã¸ã®æµæãå¼·ããªããServo 㯠Rust ãçã¿åºãããã½ããã¦ã§ã¢ç£æ¥ã¸ã® Rust ã®ã¤ã³ãã¯ã㯠Flutter ãããã£ã¨å¤§ãããRust ã«åé¡ãããã¨ããã°å½åã®ã¹ãã³ãµã¼ã§ãã Mozilla ã®å©ãã«ãªããªãã£ããã¨ã ã … ã¾ããããããã¨ãããããããããããã° Netscape Navigator ã®æ¸ãç´ããä¼¼ããããªãã®ã§ãä¼ç¤¾ (Netscape) ã¯æ½°ãããã©ãã®éºç£ (Firefox) ã¯äººé¡ã«è²¢ç®ããããã£ã¨ãã㨠Mozilla ãã¯ãã«ãªã£ã Rust / Servo ã®éçºè éã¯ãããã¸ã§ã¯ãã«åå ããèªåã®å¤æãå¾æãã¦ããã ããã? å½æã® Netscape 社å¡ãã¡ã¯? ã¨ã¦ãããã¯æããªãã巨大ã½ããã¦ã§ã¢ã®ãªã©ã¤ãã¨ããéå¿çãªããã¸ã§ã¯ãã¯å¤±æã®å¯è½æ§ãç¹ãè¾¼ãã§ããã¯ããã ãã大å±çã«ã¯ãæãæããåæãå¤ããããã ããã ãã®è©±ãããªããã ããããããã ããã ããã§å¤±æ¥ã¯ã¡ãã£ã¨ã¤ã¤ã ãã©ã
ãããã¦å¤ãè¯ããªã©ã¤ãã®ãã£ããããèªåã®ä¸ã®ãªãã¡ã¯ã¿ãªã³ã°ã®æ£ããã«å½±ãè½ã¨ãã¦ããä»æ¥ãã®é ã§ãããçæ§ããããéããã§ããããã