ããã¾ãã¦ããã§ã¨ããããã¾ããã«ãªãã¯ãã ã£ãã®ã§ãããå¾ããèªãã ãGoogleã®ã½ããã¦ã§ã¢ã¨ã³ã¸ãã¢ãªã³ã°ãã®æ¹ãå ã«è¨äºã«ããã®ã§æ°å¹´2æ¬ç®ã®æ´æ°ã§ãã
ãã¦ãæ¬é¡ãæè¿ã®ãæ°ã«å ¥ãããããã£ã¹ãã§ããe34.fmã§æ¿è³ããã¦ãããA Philosophy of Software Designããèªã¿ã¾ãããåçã¯2018å¹´ã«åºã¦ãã¦ãä»åã¯2021å¹´ã«åºã第2çãèªã¿ã¾ããã
ã©ããªæ¬ï¼
æ¸ç±ã®ãã¼ãã¯ã½ããã¦ã§ã¢ã®è¤éãã§ããè¤éãã¨ã¯ãã·ã¹ãã ãç解ãããå¤æ´ãããããã®ãå°é£ã«ããããã®ã ã¨å®ç¾©ããã¦ãã¾ããããã¦ããã®å åã¯ãåç´ãªå¤æ´ãããããã®ã³ã¼ãã®ä¿®æ£ãå¼·ãã¦ãã¾ããã¨ããèªç¥è² è·ï¼ãTeam Topologiesãã§ãåºã¦ãã¾ãããï¼ãé«ã¾ã£ã¦ãã¾ããã¨ãªã©ã«è¡¨ãã¾ãããæãæ·±å»ãªã®ããæªç¥ã®æªç¥ãã®çºçã ã¨ããã¦ãã¾ããæªç¥ã®æªç¥ã¯ããã°ã®æ··å ¥ã«å®¹æã«ç¹ãã£ã¦ãã¾ãä¸æ¹ã§ãå®ç¾©ä¸ãã®åå¨ã«æ°ã¥ããã¨ãã§ããªãã®ã§ã¨ã¦ãåä»ã§ãã
æ¸ç±ã§ã¯ããã®ãããªè¤éããæ¸ããããã®ãã¾ãã¾ãªè¨è¨ååãç´¹ä»ãã¦ãã¾ãããã®ããã«æ¸ãã¨ãè¨è¨ååã®ã«ã¿ãã°ã®ããã«è¦ãã¦ãã¾ãããã§ãããè«è¿°ã®å±éã¯ä½ç³»çã§ããããç 究è ã®æ¸ããæ¬ã ã¨ããå°è±¡ãããã¾ãã
å°è±¡ã«æ®ã£ãç®æ
Deep Modules 㨠Shallow Modules
ãã®æ¬ã«ã¤ãã¦èªãã¨ãã«ã¯ãã°ãã°è¨åãããé¨åã§ãããã¢ã¸ã¥ã¼ã«ãDeep/Shallowã¨ãã軸ã§èªãã®ã¯æ°é®®ã§ãããDeepãªã¢ã¸ã¥ã¼ã«ã®æ¹ãããã¨ããã®ãæ¬æ¸ã®ä¸»å¼µã§ãããã®åºåã¯ç¬¬4ç« ã§åºã¦ããã®ã§ãããå¾ç¶ã®ç« ã§ãç¹°ãè¿ãè¨åãããï¼ãããããã¨ã¢ã¸ã¥ã¼ã«ãDeepã«ãªããããªã©ã®å½¢ã§ï¼æ çµã¿ã§ãã
ã¤ã³ã¿ãã§ã¼ã¹ | æ©è½ï¼Functionalityï¼ | |
---|---|---|
Deep | å°ãªã | å¤ã |
Shallow | å¤ã | å°ãªã |
â»ã¤ã³ã¿ãã§ã¼ã¹ããå¤ããã¨ããã®ã¯ãã¡ã½ããã®å¤ãããããã¡ã½ããã®å¼æ°ãå¤ããã¨ãªã©ãæãã¾ãã
第4ç« ãæ½è±¡ã®è©±ããDeep modulesï¼å°ããªã¤ã³ã¿ãã§ã¼ã¹ãå¤ãã®æ©è½ï¼ã¨shallow modulesï¼å¤§ããªã¤ã³ã¿ãã§ã¼ã¹ãå°ããªæ©è½ï¼ã®è©±ãéè¦ãªç¹ãï¼èª¤ã£ã¦ï¼åãé¤ãã¦ãã¾ãæ½è±¡ã®çµæã¨ãã¦ã®obscurityã
— ãã¾ (@koma_koma_d) 2021å¹´12æ30æ¥
General-purpose 㨠Special-purpose
第6ç« ãããããåºã¦ãã軸ã§ããç®ä¸ã®å¿ è¦ãæºãããããå°ãã°ããï¼somewhatï¼ä¸è¬çãªç®çã«ä½¿ããããã«è¨è¨ãã¾ããããã¨ããã®ã主張ã§ãã
第6ç« ã§ãç®ä¸ã®å¿ è¦ãæºãããããå°ãã°ããgeneral purposeãªã¢ã¸ã¥ã¼ã«ãä½ãã¾ãããã¨ãã話ããã¦ã¦ãã¡ã½ãããå°ãªãã§ããªããèãã¦ã¿ãããã代ããã«å¼æ°ãå¢ããã®ã¯ç©äºãã·ã³ãã«ã«ã§ãã¦ããªãã®ã§ãã¡ã ããã¨ãããã¦ã¦ããããªãã¨ãªã£ã¦ãã
— ãã¾ (@koma_koma_d) 2021å¹´12æ30æ¥
ãã®è»¸ã«é¢é£ãã¦æ¸ããã¦ãããã¨ã¨ãã¦ãããå¦çï¼ã³ã¼ãï¼ãgeneral-purposeãªã®ãspecial-purposeãªã®ããèãã¦ãããããæ··ãããªãããã«ãã¾ãããã¨ããã¢ããã¤ã¹ããããã©ã¼ãã³ã¹ã«é¢ããç« ï¼ç¬¬20ç« ï¼ã§ã®ã¯ãªãã£ã«ã«ãã¹ããspecial-purposeãªå¦çãåãé¤ãã¨ããã§ãããã¨ããã¢ããã¤ã¹ã¯å°è±¡ã«æ®ãã¾ããã
ã³ã¡ã³ãã«ã¤ãã¦
ãã³ã¡ã³ããå¿ è¦ã¨ãããããªã³ã¼ãã«ããªããã¨ããã®ãããè¨ããããã¨ã§ããããã®æ¬ã§ã¯ãããã¯ãã£ã¦ãã³ã¡ã³ããããªãã¨ã§ããªããã¨ã¯ããã§ãããã¨ããç«å ´ããã©ãããã³ã¡ã³ããæ¸ãã®ãããã®ããè«ãã¦ãã¾ãã
第10ç« ãã³ã¡ã³ãã«ã¤ãã¦ã®ç« ã ãã©ãæå¾ã§ã¾ãUncle Bob ãæ¹å¤ããã¦ãããè¯ãã³ã¼ããã³ã¡ã³ãã®å¿ è¦æ§ãæ¸ããã®ã¯ç¢ºãã ãã©ãã³ã¡ã³ããå¿ è¦ãªãã¨ã¯ã³ã¼ãã®è³ªã®ä½ããæå³ãããããããªãã§ããããã¨ã
— ãã¾ (@koma_koma_d) 2021å¹´12æ31æ¥
å人çã«ã¯æçã ã¨æããã¢ããã¤ã¹ãå¤ãã£ãã³ã¡ã³ãã«ã¤ãã¦ã®è«è¿°ã§ããããä¸ã§ãå°è±¡ã«æ®ã£ã¦ããã®ã¯ããã³ã¼ãããã詳細ã説æããã³ã¡ã³ãããã³ã¼ããããæ½è±¡çãªãã¨ã説æããã³ã¡ã³ãããã¨ããåºå¥ã§ããã³ã¼ãã®ç¹°ãè¿ãã«éããªããããªã³ã¡ã³ããæ¸ããªãã¨ããã®ã¯ããè¨ããããã¨ã§ããã詳細度ã¨ãã尺度ãããã¦ãã©ã£ã¡ã®æ¹åã«å¯ããã³ã¡ã³ããæ¸ãã¦ããã®ããæèããã¨ããã®ã¯ã¨ã¦ãå½¹ç«ã¡ãããªæ°ããã¾ããã
ã¾ããã³ã¡ã³ããå¾ã§æ¸ãã®ã§ã¯ãªããè¨è¨ã®æ段ã¨ãã¦æåã«æ¸ãã¾ãããã¨ãã話ãããã¦ããã®ãå°è±¡ã«æ®ãã¾ãããå¾ããæ¸ããã¨ããã¨ãã³ã¡ã³ããå®è£ ã®ç¹°ãè¿ãã«ãªã£ã¦ãã¾ã£ãããããããã³ã¡ã³ãæ¸ããªãã£ããã¨ãããã¨ãèµ·ããã¡ã§ãããå ã«ã³ã¡ã³ããæ¸ããã¨ã§ããã¯è¨è¨ã®æ´»åã®ä¸é¨ã¨ãªã£ã¦æ¥½ãããªãããæ½è±¡ãèãããã¨ã§è¨è¨ã®æ¹åã«ãã¤ãªããã¨è¨ããã¦ãã¾ãã
ãã¤ã³ã¯ãªã¡ã³ãã¯æ©è½ã§ã¯ãªãæ½è±¡ã§ããã¹ãã
第19ç« ã§ã¯ããªãã¸ã§ã¯ãæåï¼ç¹ã«ç¶æ¿ï¼ãã¢ã¸ã£ã¤ã«éçºãã¦ããããã¹ãããã¹ãé§åéçºããã¶ã¤ã³ãã¿ã¼ã³ãgetter/setter ã¨ãã£ããããã¯ã«ã¤ãã¦è«ãã¦ãã¾ãã
ããèã話ãå¤ãã£ãã®ã§ãããã¢ã¸ã£ã¤ã«éçºã«ã¤ãã¦è«ãã¦ããã¨ããã§ãthe increments of development should be abstractions, not featuresãã¨ããè¨è¿°ããã£ãã®ã¯å°è±¡çã§ãããã¤ã³ã¯ãªã¡ã³ã¿ã«ãªéçºãããã¨ãã«ãã©ã®ããã«è¨è¨ãèãããã¨ããã®ã¯å¤§ããªãããã¯ã§ããããã®ãããªå½¢ã§ã®ã¢ããã¤ã¹ã¯åãã¦ã¿ã¾ãããç¶ãã®æç« ã§ã¯ããæ½è±¡ã®å¿ è¦ã«æ°ã¥ããããæéãããã¦å°ããã¤ä½ãã®ã§ã¯ãªããä¸æ°ã«è¨è¨ãããã¨è¨ã£ã¦ãã¦ãããã¾ã§ãå¿ è¦ã«æ°ã¥ãããããã¼ã¹ã§ã¯ããã¾ãããéçºå¯¾è±¡ã®åä½ã¨ãã¦æ½è±¡ã主役ã¨ãã¦åãä¸ãããã¨ããæ¹åæ§ã¯ç´å¾åº¦ã¯ãããã®ã§ããã
ã¢ã¸ã£ã¤ã«ã«ã¤ãã¦ã®ç¯ã§ãthe increments of development should be abstractions, not features ã¨è¨ã£ã¦ããããã¨ã®ç®æã§ãæ½è±¡ã¯å°ããã¤ä½ãããããªãã¦ä¸æ°ã«è¨è¨ããã¨è¨ã£ã¦ããã®ã§ãæ©è½ãã¤ã³ã¯ãªã¡ã³ãã¨ãã¦ä½ã£ã¦ããä¸ã§æ½è±¡ãä½ãããããªãããã¨ãããã¨ãè¨ã£ã¦ããããªã
— ãã¾ (@koma_koma_d) 2022å¹´1æ1æ¥
å ¨ä½çãªã¹ã¿ã³ã¹ã«ã¤ãã¦
以ä¸ãå°è±¡ã«æ®ã£ãç®æãããã¤ãåãä¸ãã¦ç´¹ä»ãã¾ãããåå¥ã®ã¢ããã¤ã¹ã«ã¤ãã¦ã¯ããªãã»ã©ããããèãæ¹ãã§ããã®ããã¨æãã¨ãããå¤ãã£ãã®ã§ãããå ¨ä½ã¨ãã¦ã¯ãä»ã¾ã§æ £ã親ããã§ããã®ã¨çµæ§éãã¹ã¿ã¤ã«ã ãªãã¨ããå°è±¡ãå¼·ãæ®ãã¾ããã
大ã¯ã©ã¹ä¸»ç¾©ï¼
ä¸è¨ã®ãããªå°è±¡ãç¹ã«æããã®ã¯ãå°ããã¯ã©ã¹ãããããä½ããã¨ã«å ¨ä½çã«å¦å®çã§ããç¹ã§ãããã®æ¸ç±ã®ä¸ã§ã¯ãããããã®å°ããã¯ã©ã¹ãè¨ãããã¨ã¯å©ç¨è ã«ã¨ã£ã¦ã¯ã¤ã³ã¿ãã§ã¼ã¹ã®å¤ããã²ãã¦ã¯shallowãªã¢ã¸ã¥ã¼ã«ã«ç¹ãã£ã¦ãã¾ãããããã®ã¨ããã¦ãã¾ããã¾ãã大ããªã¯ã©ã¹ï¼ã¡ã½ããï¼ã®æ¹ããã¡ã¤ã«ãè¡ã£ããæ¥ããããã«ä¸è¦§ã§ããã®ã§ã¿ããããã¨ããç¹ã«ãè¨åãã¦ãããåå²ã«å¯¾ãã¦ã¯è¬æçãªã¹ã¿ã³ã¹ãã¨ã£ã¦ãã¾ãã
åºæ¬ã¹ã¿ã³ã¹ã¯ãã¡ã½ãããã¯ã©ã¹ã¯ã¾ããã«ãã¦ããããããã¿ãããããã¨ããæãã§ãåã¿ã¹ã¯ãåãåºãã¦ãããæ¡ä»¶ã¨ãã¦ã親åã®ãããããç¬ç«ãã¦ç解ã§ããï¼å対å´ãèªã¾ãªãã¦ãç解ã§ããï¼ãã¨ãæãã¦ããã
— ãã¾ (@koma_koma_d) 2021å¹´12æ31æ¥
ãã¡ããããä¸ã¤ã«ãªã£ã¦ããæ¹ãèªã¿ããããã ããåå²ãªãã¦ãããªããã¨ããéãªè°è«ã¯ãã¦ããããå ·ä½çãªäºä¾ã交ãã¤ã¤ãããããã±ã¼ã¹ã ã¨ãããããã¡ãªãããããã®ã§åå²ããªãæ¹ããããã¨ããä¸å¯§ãªè°è«ããã¦ããã®ã§ãããèªåã¯å人çã«ã¯ã責åã®å°ããªã¯ã©ã¹ãå¤ãä½ã£ã¦çµã¿åããããã¨ã§æ©è½ãå®ç¾ããæåã«è¦ªããã§ãã¦ãåå²åæã§ãã®ãèãããã¨ãå¤ãã£ãã®ã§ãï¼åçºããããã§ã¯ãªãã§ããï¼å¼ã£ããããªããèªã¿ã¾ããï¼ããã§ããèªã価å¤ãããã¨ãè¨ãã¾ãï¼ã
ãã®ãããªè°è«ãå±éããã¨ãã«ã¯ãèè ã¯ãã°ãã°Javaã®æ¨æºã¯ã©ã¹ã©ã¤ãã©ãªãåãä¸ãã¦æ¹å¤ãã¾ããJavaã®æ¨æºã¯ã©ã¹ã©ã¤ãã©ãªã®ä¸é¨ã«è¨è¨çã«ã¤ã±ã¦ãªãã¨ãããããã¨ãã話ã¯ãã°ãã°è³ã«å ¥ã£ã¦ããã®ã§ãè¨èªã®æåã®è©±ã§ããªãã®ãããããªãã§ãããRuby ã®ç¹å¾´ã¨ãã¦ã大ã¯ã©ã¹ä¸»ç¾©ãã¨ããã®ãæãããããã¨ãããããã§ãæåï¼ãããã¯è¨èªã¨ãã¦ã®è¨è¨ææ³ï¼ã®éããããã®ããªã¨æã£ãããã¾ããï¼å¦æ³ï¼ã
大ã¯ã©ã¹ä¸»ç¾© ã¯ã©ã¹è¨è¨ã«ããã¦ä¸ã¤ã®ã¯ã©ã¹ã«ãã¾ãã¾ãªæ©è½ãçãè¾¼ãæ¹éã Ruby ã® Array ã¯ãé åããªã¹ããã¿ãã«ãéåãã¹ã¿ãã¯ï¼LIFOï¼ããã¥ã¼ï¼FIFOï¼ãªã©ã®æ©è½ãå ¼ãåãã¦ããã大ã¯ã©ã¹ä¸»ç¾©çã¨è¨ããã
Ruby用語集 (Ruby 3.3 リファレンスマニュアル)
ãããããã¯å¤ã¯ã©ã¹ä¸»ç¾©ã§ãããã大ã¯ã©ã¹ä¸»ç¾©ã¯çµæçã«å°ã¯ã©ã¹ä¸»ç¾©ã«ã¤ãªããã¾ãã
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/14664
ç§å人ã®å°è±¡ã§ãããå°ã¯ã©ã¹ä¸»ç¾©ã§ç´äº¤æ§ãé«ãã®ã¯ææ°é¢æ°çãªè¤éãã®åå ã«ãªããããã¨æã£ã¦ã¾ããéã«å¤§ã¯ã©ã¹ä¸»ç¾©ã§ã¡ã½ãããå¤ãã®ã¯ç·å½¢ã®è¤éãã§ãããç§ã®å¥½ã¿ã¯ããã¾ã§ããªãã§ãããã
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/14675
ã¡ãªã¿ã«ã大ã¯ã©ã¹ä¸»ç¾©ãã¯æµ·å¤ã§ã¯èããªãæ¦å¿µã®ããã§ãã
è±èªã§ã大ã¯ã©ã¹ä¸»ç¾©ãã£ã¦ãªãã¦è¡¨ç¾ãããã ããããæµ·å¤ã§èãããã¨ã®ãªãæ¦å¿µã ãã©ã
— Yukihiro Matz (@yukihiro_matz) 2016å¹´6æ21æ¥
ãªããJava ã«è¿ãã³ãã¥ããã£ã ã¨ããç¾å ´ã§å½¹ç«ã¤ã·ã¹ãã è¨è¨ã®ååãã®å¢ç°ããã以ä¸ã®ããã«ãå°ã¯ã©ã¹ä¸»ç¾©ãã¨ã大ã¯ã©ã¹ä¸»ç¾©ãã«è¨åãã¦ãã¾ãããããã¯æ¥åã¢ããªã±ã¼ã·ã§ã³ã®ããã¯ã¨ã³ãã®è¨è¨ã®æèã§ãæ¸ç±ã§åºã¦ããUnixãè¨èªã®æ¨æºã©ã¤ãã©ãªã®è¨è¨ã¨ã¯ã ãã¶åæã¨ãã¦ãããã®ãéããããªã®ã§ããã®æèã§ã大ã¯ã©ã¹ä¸»ç¾©ããå°ã¯ã©ã¹ä¸»ç¾©ãã¨ããç¨èªãç¨ãããã¨ãã©ãã ãé©åãªã®ãã¯ä¸æã§ã¯ããã®ã§ããã
ãªãã id:snoozer-05 ã«ããã®å¤§ã¯ã©ã¹ä¸»ç¾©ã£ã¦ã®ãRubyistãããªãèªåã«ã¯ããããããã®ã§ãããã¨èããã¨ãããããç é½Rubyããã°ã©ãã³ã°ããèªãã¨ããããããªãããã¨è¨ããã¾ããã確ãã«ãé¢é£ãã話ãæ¸ããã¦ãããããªã®ã§ãå¾ã§èªãã§ã¿ããã¨æãã¾ãã
第 2 ç« ãå½¹ã«ç«ã¤ç¬èªã¯ã©ã¹ãè¨è¨ãããã§ã¯ããã¤ç¬èªã¯ã©ã¹ãå®ç¾©ãã¹ããã ç¬èªã¯ã©ã¹ã¸ã® SOLID ååã®é©ç¨ãã¯ã©ã¹è¨è¨ã§ã¯ã©ã¹ã大ãããããã¨ã¨ã¯ã©ã¹ã®æ°ãå¤ããããã¨ã®ãã¬ã¼ããªããæ±ãã¾ãã ï¼ãç é½Rubyããã°ã©ãã³ã° βçãã¾ãããï¼
研鑽Rubyプログラミング β版www.lambdanote.com
ã¨ã¾ããå¦æ³ãæ¸ãã¾ããããçé¢ç®ãªï¼ããã¦å®è·µçãªï¼è©±ã«æ»ãã¨ããã®æ¸ç±ã®ä¸»å¼µãã¦ãã Deep ãªã¢ã¸ã¥ã¼ã«ã®åªä½æ§ãããã¦ãã®ãããªã¢ã¸ã¥ã¼ã«ãå®ç¾ããããã«é度ã®ã¯ã©ã¹åå²ãé¿ããã¨ããæ¹éã¯ç解ã§ãããã®ã§ããããã¢ã¸ã¥ã¼ã«ããã¾ãã«ããããã®ã¯ã©ã¹ãã¤ã³ã¿ãã§ã¼ã¹ã¨ãã¦å¤é¨ã«å ¬éããã¨ãã¯ã©ã¤ã¢ã³ãã®èªç¥è² è·ã¯å¢å¤§ãã¾ãããã®ãããã¢ã¸ã¥ã¼ã«ã®è¨è¨è ã¨ãã¦ã¯ãæå°ã®ã¤ã³ã¿ãã§ã¼ã¹ã§ï¼å°ãã°ããgeneral purposeãªï¼æ©è½ãæä¾ãããã¨ãèããã®ã¯éè¦ã ã¨æãã¾ãã
ä¸æ¹ã§ãããã¢ã¸ã¥ã¼ã«ã®ã¤ã³ã¿ãã§ã¼ã¹ãåºå®ããä¸ã§ãããã®å é¨ã§ï¼å¤é¨ã«å ¬éãããªãï¼ã¯ã©ã¹ãã¡ã½ããã®åå²ãã©ãã ãããã®ãã¨ããç¹ã«ã¤ãã¦ã¯ããã®ç¯ã®åé ã«è²¼ã£ããã¤ã¼ãã§èªåãæ¸ãã¦ããããã«ãæ¡ä»¶ä»ãã§ãµãã¿ã¹ã¯ã®åå²ãèªãã¦ãã¦ãç´å¾ããããã®ã§ãããã¨ãã°ãæå³ã®ããã¾ã¨ã¾ããæã£ãã³ã¼ãã private ã¡ã½ããã«åãåºããã¨ã¯å¤é¨ã®ã¤ã³ã¿ãã§ã¼ã¹ã«ã¯å½±é¿ãä¸ãã¾ããããpublic ã¡ã½ããã®æ¬ä½ãèªããã¨ãã¦ãã人ã«ã¨ã£ã¦ã¯ï¼ã©ã¤ãã©ãªã®ã¯ã©ã¹ãã¢ã¸ã¥ã¼ã«å ã®ä»ã®ã¯ã©ã¹ã¨åæ§ã«ï¼æä¸ã®ã¤ã³ã¿ãã§ã¼ã¹ãæ½è±¡ãæä¾ãããã¨ã«ãªããå¹æçã§ããå ´åãå¤ãã§ãããï¼ä½ãèããã« private ã¡ã½ããã«åãåºããªããã¯ãã®éãï¼ã
第9ç« æ«å°¾ï¼é¢æ°ã®é·ãã«ã¤ãã¦ï¼ã¨ç¬¬12ç« æ«å°¾ï¼ã³ã¡ã³ãã«ã¤ãã¦ï¼ã®2ç®æã«ããã£ã¦ãUncle Bobã㨠Robert Martin ï¼ã®ããClean Codeãã«ããã主張ï¼ãæ¹å¤ããã¦ããã®ã¯å°è±¡çã§ãããããã¬ã¹ã§ããã
第9ç« ã®æå¾ã§ã¯Uncle Bobã®Clean Codeãæ¹å¤ããã¦ãã¦ãé·ãããã¨ããçç±ã ãã§ãã©ãããããªãã¨è¨ããã¦ãããé·ãï¼lengthï¼ãããã¢ã¸ã¥ã¼ã«ã®æ·±ãï¼depthï¼ã®æ¹ãéè¦ã§ãã¾ãæ·±ããã¦ããçãã§ããªããèããã¨è¨ã£ã¦ããã
— ãã¾ (@koma_koma_d) 2021å¹´12æ31æ¥
MITã¢ããã¼ãï¼
ããä¸ã¤ãããã£ãã¨æã£ãç¹ã¨ãã¦ã以ä¸ã®ä¸ç¯ãããã¾ãã
it is important for a module to have a simple interface than a simple implementation. ï¼p.61ï¼
ï¼å®è£ ãã¤ã³ã¿ãã§ã¼ã¹ãã·ã³ãã«ã§ããã«è¶ãããã¨ã¯ãªãã¨ããåæã®ä¸ã§ï¼ãã·ã³ãã«ãªå®è£ ããããã·ã³ãã«ãªã¤ã³ã¿ãã§ã¼ã¹ããã¨ãã主張ã§ãããããMITã¢ããã¼ãã®ç«å ´ã表æãã¦ããããã«èªãã¾ããã
MITã¢ããã¼ãã¨New Jersey ã¢ããã¼ãã«ã¤ãã¦ã¯ãajitofm 6: Worse is Betterã®å¾åï¼40åãããããï¼ã§ id:t-wada ãããè¨åãã¦ããã®ã§ãç¥ã£ã¦ãã人ãå¤ããã§ããRichard Gabrielã®ã¨ãã»ã¤ãThe Rise of Worse is Betterãã§ãMITã¢ããã¼ããã®ãã¶ã¤ã³å²å¦ã®ä¸ã¤ã¨ãã¦æãããã¦ãããç°¡æ½æ§ãã«ã¤ãã¦ã®ã¹ã¿ã³ã¹ã¯ãã¾ãã«ããã§ãã
Simplicity-the design must be simple, both in implementation and interface. It is more important for the interface to be simple than the implementation.
The Rise of ``Worse is Better''
æ¥æ¬èªè¨³ï¼ The Rise of "Worse is Better"
ä¸è¨ã®ã¨ãã»ã¤ã®ä¸ã§ãMITã¢ããã¼ãã¯ãMIT/Stanford æ¹å¼ã®è¨è¨ãã¨ãè¨ããã¦ãã¾ãããã¾ãã«ãã®æ¸ç±ã®èè ã¯ã¹ã¿ã³ãã©ã¼ã大å¦ã®ææãªã®ã§ãï¼é常ã«éãªçµã³ã¤ãã§ã¯ããã¾ããï¼ä¸å®ã®ãªãã»ã©æãããã¾ããã
ãã®æ¸ç±ã®ã¹ã¿ã³ã¹ãMITã¢ããã¼ãï¼ãããã¯å¤§ã¯ã©ã¹ä¸»ç¾©ï¼ã®ä¸å½¢æ ã ã¨æãããã¨ã«ã¯å®çã¯ãªãã®ã§ããããã®æ¸ç±ä»¥å¤ã«ããã¾ãã¾ãªç«å ´ããããä¸é¨å¯¾ç«ããããã«è¦ããé¨åãããï¼ä¾ãã°ãMITã¢ããã¼ãã¨å¯¾ç½®ããã¦ããNew Jerseyã¢ããã¼ãã§ã¯ããå®è£ ã®ã·ã³ãã«ãã®æ¹ãã¤ã³ã¿ãã§ã¼ã¹ã®ã·ã³ãã«ãããã大äºã ãã¨ä¸»å¼µãã¦ãã¾ãï¼ãã¨ããããã¨ãä¸æ©è·é¢ãã¨ã£ã¦æ¸ç±ãèªããã¨ãã§ããã¨æãã¾ãããã®æå³ã§ãæ¸ç±ã®ã¿ã¤ãã«ããA Philosophyãã¨ä¸å®å è©ã«ãªã£ã¦ããã®ã¯è¯ããªã¨æãã¾ããï¼ãA Pattern Languageãã® A ã«ãã ããã¢ã¬ã°ã¶ã³ãã¼ãªã¿ã¯ã®ææ³ï¼ã
追è¨
æ¹ãã¦Worse is Better é¢ä¿ã®è¨äºããã¤ã¼ããèªã¿ç´ãã¦ãã¦æ°ã¥ããã®ã§ããã Worse is Better ã«ã¤ãã¦ã® @rui314 ããã®è¨äºã§ãStanfordå¨å¦ä¸ã« "The Rise of Worse is Better" ã®ãªãªã¸ãã«ãèªã¾ãããã¨ãã£ããã£ã¦ãã¦ãMIT/Stanfordã¢ããã¼ã ã¨ãã£ã¦ãç¾ä»£ã«ã¾ã§ã©ãã¾ã§å¼ãç¶ããã¦ãããã¯ç¸å½æªããã¨ãããã¨ãæ¹ãã¦ãããã¾ããã
ãã¨ãã¨ã®ãæªãã»ããè¯ããã¨ãã»ã¤ã®æåã®ãã¼ã¸ã§ã³ã¯1989å¹´ã«æ¸ãããããã®ä¸ã§ã¯ãè¯ããã¶ã¤ã³ãã¯MITãStanfordã®ã¹ã¿ã¤ã«ã¨ãã¦è¨åããã¦ãããé¢ç½ããã¨ã«åã¯ãã®ãã¶ã¤ã³ååã®ã¨ãã»ã¤ãStanfordã®ã³ã³ãã¥ã¼ã¿ãµã¤ã¨ã³ã¹ã®ææ¥ã§èªã¾ããããã©ãããStanfordã®ææ¥ããã®30å¹´éã§ãã£ãããæªãæ¹åãã«å¤ãã£ã¦ãã¾ã£ãããã ããã®ææ¥ã§åãã¯ã©ã¹ã®æ²ç¤ºæ¿ã«æ稿ããæç« ãå¤å°ä¿®æ£ã®ä¸ã§ç¿»è¨³ããã®ããã®ã¨ãã»ã¤ã§ããã
ãããã«
以ä¸ããA Philosophy of Software Designããèªãã ããã¨ããã話ã§ããã
ãªããæ¥æ¬èªç¿»è¨³ã«ã¤ãã¦ã¯ãæ´ç°è³æ¨¹ããã以åããã°ã®ä¸ã§ã
ç§ãç¥ãéããæ®å¿µãªããããã®æ¬ã¯æ¥æ¬èªã¸ã¯ç¿»è¨³ãããªãããã§ãã
『A Philosophy of Software Design』:柴田 芳樹 (Yoshiki Shibata):SSブログ
ã¨è¿°ã¹ããã¦ãã¦ããæå¾ ã§ããªãã®ããªï¼ãã¨æã£ã¦ããã®ã§ããããã¤ãèªç¿»è¨³ï¼2nd Editionãã¼ã¹ï¼ã¯æ¢ã«åºã¦ããã®ã§ãããããããåºãããããã¾ãããã¨ã¯ãããæ¬æ170ãã¼ã¸ç¨åº¦ã®å°ããªæ¸ç±ã§ãè±æãããããããã£ãã¨æãã¾ãã®ã§ããè±èªã¯è¦æã ãã©èªããããã«ãªããããªã»ã»ã»ãã¨æã£ã¦ããæ¹ã«ã¯ããããã§ãã
é¢é£è¨äºç
èè ã®Googleã§ã®è¬æ¼
e34.fm ã®ãã¹ãã® deeeet ããã®ãã¤ã¼ãã¨è¨äº
ç§ã®ä»å¹´ã®æè¡æ¸å¤§è³ã¯ãA Philosophy of Software Designãhttps://t.co/JB3pUVHIIE ã§ãããæ°å¹´èªãã æè¡æ¸ã®ä¸ã§ãã¶ã£ã¡ããã§è¯ãã£ãï¼æéã許ããªãï¼ç¿»è¨³ãããããã
— Taichi Nakashima (@deeeet) 2018å¹´11æ30æ¥
æ¸ããã¨æã£ã¦æ¸ããªãã£ããã¨ã§Microserviceså以åã«ã§ãããã¨ã¨ãã¦Moduleåãããè¤éåã¨éãããã®Deep Moduleã¨ããæ¦å¿µãæå±ããè¿å¹´æé«ã®æ¸ç±ã§ãã Philosophy of Sotfware Design https://t.co/YqOadrs96P ã¨ããæ¬ãããã®ã§èªã¿ã¾ãããï¼ pic.twitter.com/A2ZR1LjO5D
— Taichi Nakashima (@deeeet) 2019å¹´5æ22æ¥