GopherCon 2017ããã®Russ Coxã®ããã°æçš¿ãšã¬ããŒãã®ç¿»èš³ãGo2ã®è°è«ãšèšç»ãæ¯æŽããããã«Goã³ãã¥ããã£å
šäœã«é»è©±ããããŸãããããªã¬ããŒãã¯å
¬éåŸããã«è¿œå ãããŸãã

2007幎9æ25æ¥ãRob PikeãRobert GriesmeyerãKen Thompsonãæ°ããèšèªãäœæããã¢ã€ãã¢ã«ã€ããŠæ°æ¥éè°è«ããåŸãRobã¯ãGoããšããååãææ¡ããŸããã

ç¿å¹ŽãIan Lance Taylorãšç§ã¯ããŒã ã«å ããã5人ã§2009幎11æ10æ¥ã«å
¬éããã2ã€ã®ã³ã³ãã€ã©ãšæšæºã©ã€ãã©ãªãäœæããŸããã

次ã®2幎éã§ãæ°ãããªãŒãã³ãœãŒã¹ãŽãŒãã¡ãŒã³ãã¥ããã£ã®å©ããåããŠãããŸããŸãªã¢ã€ãã¢ãå®éšããã³è©Šè¡ããGoãæ¹åãã2011幎10æ5 æ¥ã«ææ¡ãããGo 1ã®èšç»çãªãªãªãŒã¹ã«å°ããŸããã

Goã³ãã¥ããã£ã®ããã«ç©æ¥µçãªæ¯æŽãåããŠããã®èšç»ãã¬ãã¥ãŒããã³å®è£
ããæçµçã«2012幎3æ28 æ¥ã«Go 1ããªãªãŒã¹ããŸãã ã

Go 1ã®ãªãªãŒã¹ã¯ãã»ãŒ5幎éã®åµé çã§å¿
æ»ã®åªåã®é倧æã§ãããååã®éžæãšã¢ã€ãã¢ã®è°è«ããå®å®ããæ¢è£œã®èšèªãžãšå°ããŸããã 圌ã¯ãŸããå€åãšãã©ãã£ãªãã£ããå®å®æ§ãžã®æ確ãªç§»è¡ã瀺ããŸããã
Go 1ã«è³ããŸã§ãç§ãã¡ã¯ä»ã®äººã®Goããã°ã©ã ãå£ãèšèªãã»ãŒæ¯é±å€æŽããŸããã ããã«ãããGoãæ¬çªç°å¢ã§äœ¿çšãããªããªããèšèªã®å€æŽã«åæããŠã誰ãæ¯é±ããã°ã©ã ãæžãçŽããªãããšãããããŸããã Go 1ã®çºè¡šã§ããã°æçš¿ã«æžãããããã«ãèšèªã®äž»ãªåæ©ã¯ãä¿¡é Œã§ãã補åããããžã§ã¯ããåºçç©ïŒããã°ããã¥ãŒããªã¢ã«ãã¬ããŒããæžç±ïŒãäœæããããã®å®å®ããåºç€ãæäŸããããšã§ãããé·å¹Žçµã£ãŠã
Go 1ããªãªãŒã¹ãããåŸãGoãäœæãããå®çšŒåç°å¢ã§å®éã«Goã䜿çšããã®ã«æéããããããšãããããŸããã èšèªã®å€æŽãããããžã§ã¯ãã§ã®Goã®äœ¿çšãšå®è£
ã®æ¹åã«æ確ã«ç§»è¡ããŸããïŒGoãå€ãã®æ°ããã·ã¹ãã ã«ç§»æ€ããããã©ãŒãã³ã¹ã¯ãªãã£ã«ã«ãªéšåãã»ãŒãã¹ãŠæžãçŽããŠãGoãããã«å¹çåãã 競åæ€åºåšãªã©ã®äž»èŠããŒã«ãè¿œå ããŸããã
çŸåšãGoã䜿çšããŠå·šå€§ã§é«å質ã®çç£ã·ã¹ãã ãäœæãã5幎ã®å®éã®çµéšããããŸãã äœãæ©èœããŠäœãæ©èœããªããã®æèŠãäžããŠãããŸããã ãããŠä»ãããGoã®é²åãšéçºã®æ°ãã段éãéå§ãããšãã§ãã ä»æ¥ãGoéçºè
ã³ãã¥ããã£ã®çãããGopherConã«ãŒã ã«ä»ããã«ããããGoããã°ã§ãããªãèŠããããããèªãããGo 2ã®èšç»ãšå®è£
ã«ãååãã ããã
次ã«ãGo 2ãçŽé¢ãã課é¡ã«ã€ããŠèª¬æããŸãã ç§ãã¡ã®å¶éãšé害; ããã»ã¹å
šäœã Goã§ã®çµéšã説æããããšã®éèŠæ§ãç¹ã«ã解決ããããšããåé¡ã«é¢é£ããå Žåã å¯èœãªè§£æ±ºç; Go 2ã®å®è£
æ¹æ³ãšããããã©ã®ããã«æ¯æŽã§ãããã
ã¿ã¹ã¯
ä»æ¥ã®Goã®èª²é¡ã¯ã2007幎ãšãŸã£ããåãã§ãã ã·ã¹ãã ã®ã¹ã±ãŒã©ããªãã£ãç¹ã«ã¯ã©ãŠãã®ãµãŒããŒãšããŠåºãè¡šçŸãããŠããä»ã®å€ãã®ãµãŒããŒãšå¯Ÿè©±ãããã«ãã¹ã¬ããïŒåæïŒã·ã¹ãã ã®ã¹ã±ãŒã©ããªãã£ãããã³éçºã®ã¹ã±ãŒã©ããªãã£ãç¹ã«å€ãã®ããã°ã©ããäœæ¥ãã倧èŠæš¡ãªã³ãŒãããŒã¹ã®ã¹ã±ãŒã©ããªãã£ã®ç®¡çã«ãããŠããã°ã©ããããå¹ççã«ããããå€ãã®å Žåãªã¢ãŒã-ææ°ã®ãªãŒãã³ãœãŒã¹éçºã¢ãã«ãªã©ã
ãããã®çš®é¡ã®æ¡åŒµæ§ã¯ãããããèŠæš¡ã®äŒæ¥ã«ä»æ¥ååšããŠããŸãã 5人ã®ã¹ã¿ãŒãã¢ããã§ããä»ç€ŸãæäŸãã倧èŠæš¡ãªã¯ã©ãŠãAPIãµãŒãã¹ã䜿çšããèªåã§äœæãããœãããŠã§ã¢ãããå€ãã®ãªãŒãã³ãœãŒã¹ãœãããŠã§ã¢ã䜿çšã§ããŸãã ã·ã¹ãã ã®ã¹ã±ãŒã©ããªãã£ãšéçºã®ã¹ã±ãŒã©ããªãã£ã¯ãGoogleã ãã§ãªããã¹ã¿ãŒãã¢ããã«ãé¢é£ããŠããŸãã
Go 2ã®ç®æšã¯ãã¹ã±ãŒã©ããªãã£ã劚ããäž»èŠãªGoã®åé¡ãä¿®æ£ããããšã§ãã
ïŒãããã®ã¿ã¹ã¯ã®è©³çŽ°ã«ã€ããŠã¯ãRob Pikeã®2012幎ã®èšäºã Go at GoogleïŒLanguage Design in Service of Software Engineering ãããã³GopherCon 2015ã¬ããŒãã GoãOpen SourceãCommunity ããåç
§ããŠãã ãã ãïŒ
é害ç©
Goã®åã®ã¿ã¹ã¯ã¯å€æŽãããŠããŸããããé害ã¯å€æŽãããŠããŸãã äž»ãªãã®ã¯ãGoã®æ¢åã®äœ¿çšã§ãã æšå®ã«ãããšãçŸåšäžçã«ã¯å°ãªããšã50äžäººã®Goããã°ã©ããŒãããŸããã€ãŸããGoã®ãœãŒã¹ã³ãŒããšå°ãªããšã10åè¡ã®Goã³ãŒããå«ãçŽ100äžã®ãã¡ã€ã«ã§ãã ãããã®ããã°ã©ããšãã®ãœãŒã¹ã³ãŒãã¯Goã®æåãè¡šããŠããŸãããåæã«Go 2ã®äž»ãªé害ã§ããããŸãã
Go 2ã¯ãããããã¹ãŠã®éçºè
ã«è²¢ç®ããã¯ãã§ãã ç§ãã¡ã¯åœŒãã«å€ãç¿æ
£ãå¿ããŠãããã®å©çãæ¬åœã«äŸ¡å€ãããå Žåã«ã®ã¿æ°ããç¿æ
£ãåŠã¶ããã«é ŒãŸãªããã°ãªããŸããã ããšãã°ãGo 1ã®åã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã¿ã€ãerror
ã¡ãœããã¯String
ãšåŒã°ããŠããŸããã Go 1ã§ã¯ã Error
ååãã Error
ã®åãããã©ãŒããããããæååè¡šçŸãæã€åçŽãªä»ã®åãšåºå¥ããããã«ååãå€æŽããŸããã error
ã€ã³ã¿ãŒãã§ã€ã¹ãæºããåãå®è£
ããããèããã«Error
代ããã«String
ã¡ãœãããåŒã³åºããŸãããããã¡ããã³ã³ãã€ã«ãããŸããã§ããã 5幎çµã£ãŠããç§ã¯ãŸã å€ãããæ¹ãå®å
šã«å¿ããŠããŸããã ãã®æ確ãªååå€æŽã®äŸã¯ãGo 1ã«ãšã£ãŠéèŠãã€æçšãªå€æŽã§ããããå®éã«ã¯éåžžã«é©åãªçç±ããªããã°Go 2ã«ãšã£ãŠç Žå£çãããã§ãããã
Go 2ã¯ãæ¢åã®Go 1ã³ãŒããšä»²è¯ããªãã¯ãã§ãã Goãšã³ã·ã¹ãã ãåå²ããŠã¯ãããŸããã ããã±ãŒãžãGo 2ã§äœæãããGo 1ã§ããã±ãŒãžãã€ã³ããŒããããããŸãã¯ãã®éã®æ··åããã°ã©ã ã¯ãæ°å¹Žã®ç§»è¡æéäžã«ã¹ã ãŒãºã«åäœããã¯ãã§ãã ãããéæããæ¹æ³ã¯ãŸã ããã£ãŠããŸããã ããã§ã¯ãèªåä¿®æ£ãgo fixãªã©ã®éçåæã®ããã®ããŒã«ã確å®ã«åœ¹å²ãæãããŸãã
å£æ»
çãªåœ±é¿ãæžããã«ã¯ãåå€æŽã«éåžžã«æ
éãªæèãšèšç»ãããã³ããŒã«ãå¿
èŠã«ãªããŸãããã®çµæãå®è¡ã§ããå€æŽã®æ°ãå¶éãããŸãã ãããã2ã3åè¡ãããšãã§ããŸããã確ãã«5åãŸã§ã§ãã
ãã ãããããããããèªç¶ãªèšèªã§ã®èå¥åã®è§£æ±ºãããã€ããªåœ¢åŒã®æ°å€ã®ãªãã©ã«ã®è¿œå ãªã©ãå°ããªè£å©çãªå€æŽã¯èæ
®ããŸããã ãã®ãããªå°ããªå€æŽãéèŠã§ãããæ£ããè¡ãæ¹ãã¯ããã«ç°¡åã§ãã ä»æ¥ã¯ããšã©ãŒåŠçã®è¿œå ãµããŒããäžå€ãŸãã¯èªã¿åãå°çšã®å€ã®è¿œå ããžã§ããªãã¯ã®äœããã®åœ¢åŒããŸãã¯ãŸã è¡šæãããŠããªããã®ä»ã®éèŠãªãããã¯ã®è¿œå ãªã©ãèãããã倧ããªå€æŽã«çŠç¹ãåœãŠãŸãã ãããã®å€§ããªå€æŽã®ã»ãã®äžéšãè¡ãããšãã§ããŸãã ãããŠãããããéåžžã«æ
éã«éžæããå¿
èŠããããŸãã
ããã»ã¹
ããã¯éèŠãªåé¡ãæèµ·ããŸãã Goã®å
šäœçãªéçºããã»ã¹ãšã¯äœã§ããïŒ
Goã®åæã®é ãç§ãã¡ã5人ããããªãã£ããšããç§ãã¡ã¯ã¬ã©ã¹ã®å£ã§åºåããã2ã€ã®é£æ¥ãããªãã£ã¹ã§åããŠããŸããã å
šå¡ã1ã€ã®éšå±ã«éããåé¡ã«ã€ããŠè©±ãåããããããã®å Žæã«æ»ã£ãŠããã«ãœãªã¥ãŒã·ã§ã³ãå®è£
ããã®ã¯éåžžã«ç°¡åã§ããã å®è£
äžã«äœããã®å°é£ãçããå Žåã¯ãç°¡åã«éãŸã£ãŠå床話ãåãããšãã§ããŸããã ãããšãããŒãã®ãªãã£ã¹ã«ã¯å°ããªãœãã¡ãšãã¯ã€ãããŒãããããéåžžã¯ç§ãã¡ã®äžäººãå
¥ã£ãŠé»æ¿ã«äŸãæžãå§ããŸããã ååãšããŠããã®äŸãäœæããããŸã§ã«ãä»ã®å
šå¡ãçŸåšã®ã¿ã¹ã¯ãäžæåæ¢ããç¬éãèŠã€ãã座ã£ãŠã³ãŒãã«ã€ããŠè°è«ããæºåãã§ããŠããŸããã ãã¡ããããã®ãããªéå
¬åŒã®ã¢ãããŒãã¯ãä»æ¥ã®Goã³ãã¥ããã£ã®èŠæš¡ã«åãããŠæ¡åŒµããããšã¯ã§ããŸããã
GoããªãŒãã³ãœãŒã¹ã§ãªãªãŒã¹ãããåŸã®ç§ãã¡ã®ä»äºã®äžéšã¯ããã®éå
¬åŒã®ããã»ã¹ã50äžäººã®ãŠãŒã¶ãŒåãã®ããæ£åŒãªã¡ãŒãªã³ã°ãªã¹ããšã¿ã¹ã¯ãã©ãã«ãŒã®äžçã«ç§»æ€ããããšã§ããããããã»ã¹å
šäœãã©ã®ããã«æ©èœããããæ瀺çã«äŒããããšã¯ãªãããã§ãã ãããããç§ãã¡ã¯ããã«ã€ããŠå®å
šã«æèçã«èããããšãããªãã£ãã§ãããã ãã ããæ¯ãè¿ã£ãŠã¿ããšãGoãéå§ãããŠããã®ããã»ã¹ã®åºæ¬èšç»ã¯æ¬¡ã®ããã«ãªã£ãŠãããšæããŸãã

æåã®ã¹ãããã¯ãGoã䜿çšããŠçµéšãç©ãããšã§ãã
2çªç®ã®ã¹ãããã¯ãGoã§åé¡ãç¹å®ãããããã解決çãå¿
èŠãšãããããè¡šçŸããä»ã®äººã«èª¬æããæžé¢ã§æ瀺ããããšã§ãã
3çªç®ã®ã¹ãããã¯ãåé¡ã®è§£æ±ºçãææ¡ããä»ã®äººãšè°è«ãããã®è°è«ã«åºã¥ããŠè§£æ±ºçãæ€èšããããšã§ãã
4çªç®ã®ã¹ãããã¯ãæ€èšŒã®çµæã«åºã¥ããŠããœãªã¥ãŒã·ã§ã³ãå®è£
ãããã¹ãããæ¹åããããšã§ãã
æåŸã«ã5çªç®ã®ã¹ãããã¯ãèšèªãŸãã¯æšæºã©ã€ãã©ãªããŸãã¯äººã
ãæ¯æ¥äœ¿çšããããŒã«ã®ã»ããã«ãœãªã¥ãŒã·ã§ã³ãè¿œå ããããšã«ããããœãªã¥ãŒã·ã§ã³ãå®è£
ããããšã§ãã
åã人ããããã®ãã¹ãŠã®ã¹ããããèªåã§è¡ãå¿
èŠã¯ãããŸããã å®éãéåžžããã¹ãŠã®æ®µéã§å€ãã®ç°ãªã人ã
ãé¢äžããŠãããåãåé¡ã«å¯ŸããŠå€ãã®è§£æ±ºçãææ¡ã§ããŸãã ãŸããå段éã§ãããã«å
ã«é²ãŸãªãã§ã1ã€åã«æ»ãããšã決å®ã§ããŸãã
ãããŠãç§ãã¡ã¯ãã®ããã»ã¹å
šäœã«ã€ããŠè©±ããããšã¯ãªããšæããŸãããéšåçã«èª¬æããŸããã 2012幎ã«Go 1ããªãªãŒã¹ããGoã®äœ¿çšãéå§ããŠå€æŽãåæ¢ãããšãã ãšèšã£ããšããæåã®ã¹ãããã説æããŸããã 2015幎ã«Goã®ææ¡ããã»ã¹ã®å€æŽãå°å
¥ãããšããã¹ããã3ã4ãããã³5ã説æããŸãããã2çªç®ã®ã¹ãããã詳现ã«èª¬æããããšã¯ãªãã®ã§ãä»ãããããããšæããŸãã
ïŒGo 1ã®éçºãšèšèªå€æŽã®åæ¢ã®è©³çŽ°ã«ã€ããŠã¯ã2012幎ã®OSCONã®Rob PathãšAndrew Gerrandã®ã The Path to Go 1 ããåç
§ããŠãã ãããææ¡ããã»ã¹ã®è©³çŽ°ã«ã€ããŠã¯ã2015幎ã®GopherConã®Andrew Gerrandãåç
§ããŠãã ããã Goã®äœææ¹æ³ ãããã³ããã»ã¹èªäœã®ããã¥ã¡ã³ã ïŒ
åé¡ã®èª¬æ

åé¡ã®èª¬æã¯2ã€ã®éšåã§æ§æãããŠããŸãã æåã®éšå-ç°¡åãªéšå-ã¯ãåã«åé¡ãå®éã«äœã§ããããè¡šæããããšã§ãã ç§ãã¡éçºè
ã¯ãäžè¬ã«ããããéåžžã«åŸæã§ãã æçµçã«ãç§ãã¡ãæžããã¹ãŠã®ãã¹ãã¯ã解決ããå¿
èŠãããåé¡ã®å£°æã§ãããããã«ãã³ã³ãã¥ãŒã¿ãŒã§ããç解ã§ãããããªæ£ç¢ºãªèšèªã§æžãããŠããŸãã 2çªç®ã®éšå-é£ããéšå-ã¯ãåé¡ã®éèŠæ§ãååã«èª¬æããããšã§ãä»ã®ãã¹ãŠã®äººãåé¡ã®è§£æ±ºãšãµããŒãã«æéãè²»ããã¹ãçç±ãç解ã§ããããã«ããããšã§ãã åé¡ã®æ£ç¢ºãªå®åŒåãšã¯ç°ãªããç§ãã¡ã¯ãããã®éèŠæ§ãé »ç¹ã«èª¬æãããããŸãåŸæã§ã¯ãããŸããã ã³ã³ãã¥ãŒã¿ãŒã¯ãããã®ã±ãŒã¹ããã¹ãã«ãšã£ãŠéèŠãªã®ã¯ãªãã§ããïŒã ããããŸãã«ããªãã解決ããªããã°ãªããªãåé¡ã§ãããšç¢ºä¿¡ããŠããŸããïŒ ãã®åé¡ã®è§£æ±ºçã¯ãããªãã察åŠãã¹ãæãéèŠãªä»äºã§ããïŒã ãããããã€ãã¯ãããªãã§ããããã確ãã«ä»æ¥ã¯ããã§ã¯ãããŸããã
2011幎ã®å€ãäŸãèŠãŠã¿ãŸãããerror.Value
ãèšç»ãããšãã«os.Error
ããerror.Value
ã«ååãå€æŽããããšã«ã€ããŠæžããŸããã
error.Value
ïŒrscïŒäœã¬ãã«ã©ã€ãã©ãªã«ããåé¡ã¯ããã¹ãŠãos.Errorã®ããã«ãosãã«äŸåããŠãããããosããã±ãŒãžèªäœã䜿çšã§ããããšãå®è¡ããã®ãé£ããããšã§ãïŒæéã®äŸãšããŠãNanoïŒ ã os.Errorã§ãªãå Žåãosããã±ãŒãžã«äŸåããä»ã®ããã±ãŒãžã¯ããã»ã©å€ããããŸããã ããšãã°ãhash / *ãstrconvãæååããã€ããªã©ã®çŽç²ãªèšç®ããã±ãŒãžã§ã¯ãããããªããŠãããŸããŸããã ãã®APIã®ãããªãã®ã§ãšã©ãŒããã±ãŒãžãå®çŸ©ããããã«ïŒãŸã äœãæäŸããã«ïŒèª¿æ»ããäºå®ã§ãã
ããã±ãŒãžãšã©ãŒ
ã¿ã€ãå€ã€ã³ã¿ãŒãã§ã€ã¹{StringïŒïŒstring}
func NewïŒs stringïŒå€
åé¡ã®ç°¡åãª1è¡ã®ã¹ããŒãã¡ã³ãããå§ãŸããŸããäœã¬ãã«ã®ã©ã€ãã©ãªã§ã¯ããã¹ãŠãos.Error
ããã«ãosããã€ã³ããŒãããŸãã 次ã¯ãåé¡ã®éèŠæ§ã説æãã5è¡ã§ãããosãã䜿çšããããã±ãŒãžã¯APIã§ãšã©ãŒã¿ã€ãã䜿çšã§ããŸãããä»ã®ããã±ãŒãžã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®åäœã«é¢ä¿ããªãçç±ã§os
ã«äŸåããŸãã
ãããã®5è¡ã¯ãåé¡ã«æ³šæãæã䟡å€ããããšçŽåŸãããŸããïŒ ããã¯ãç§ãçç¥ããã³ã³ããã¹ããã©ãã ãããŸãåããããšãã§ãããã«ãã£ãŠæ±ºãŸããŸããç解ããã«ã¯ãä»ã®äººãç¥ã£ãŠããããšãäºæž¬ã§ããå¿
èŠããããŸãã åœæã®èŽè¡-ãã®ããã¥ã¡ã³ããèªãã§ããGoã§äœæ¥ããŠããGoogleããŒã ã®ä»ã®10人-ã¯ããããã®50èªã§ååã§ããã æšç§ã®GothamGoã«ã³ãã¡ã¬ã³ã¹ã§åãåé¡ãèŽè¡ã«æ瀺ããã«ã¯ãããå€æ§ãªçµéšãæã€èŽè¡ã«-ããå€ãã®ã³ã³ããã¹ããæäŸããå¿
èŠããããæ¢ã«200ã®åèªã«å ããŠãå®éã®ã³ãŒãäŸãšå³ã䜿çšããŸããã ãããŠãåé¡ã®éèŠæ§ã説æããããšããŠããçŸä»£ã®å²communityã³ãã¥ããã£ã¯ãã³ã³ããã¹ããè¿œå ããå¿
èŠãããããšã¯äºå®ã§ããããã«ãããšãã°ååãšã®äŒè©±ã§é€å€ãããå¯èœæ§ã®ããç¹å®ã®äŸã«ãã£ãŠç€ºãããŸãã
åé¡ãæ¬åœã«éèŠã§ããããšãä»ã®äººã«çŽåŸãããããšãéèŠãªã¹ãããã§ãã åé¡ãããã»ã©éèŠã§ã¯ãªããšæãããå Žåãã»ãšãã©ã®ãœãªã¥ãŒã·ã§ã³ã¯é«ãããããã«èŠããŸãã ããããéåžžã«éèŠãªåé¡ã«ã€ããŠã¯ãã»ãšãã©ã®å Žåãããã»ã©é«äŸ¡ã§ã¯ãªããœãªã¥ãŒã·ã§ã³ãããã€ããããŸãã 決å®ãäžããã©ããã«ã€ããŠæèŠãäžèŽããªãå Žåãããã¯éåžžã解決ããåé¡ã®éèŠæ§ã«ã€ããŠæèŠãäžèŽããªãããšãæå³ããŸãã ããã¯éåžžã«éèŠãªãã€ã³ãã§ãããããå°ãªããšãæ¯ãè¿ã£ãŠã¿ããšãæè¿ã®äŸã2ã€ç€ºããŠããããããŸã説æããããšæããŸãã
äŸïŒãããç§
æåã®äŸã¯æéã«é¢é£ããŠããŸãã
ã€ãã³ãã«ãããæéã枬å®ããããšæ³åããŠãã ããã æåã«éå§æéãèšæ¶ããã€ãã³ããçºçãããçµäºæéãèšé²ããŠãããçµäºæéããéå§æéãæžç®ããŸãã ã€ãã³ãã«10ããªç§ããã£ãå Žåãæžç®æäœã¯æ£ç¢ºã«10ããªç§ãè¿ããå Žåã«ãã£ãŠã¯ããããªæž¬å®èª€å·®ããã©ã¹ãŸãã¯ãã€ãã¹ããŸãã
start := time.Now()
ãã®æãããªæé ã¯ãã ãããç§ ãã®éã¯æ©èœããªãå ŽåããããŸãã æèšãå°çã®æŒéã®å転ãšå®å
šã«åæããŠããªãå Žåãç¹å¥ãªãããç§-æ£åŒã«ã¯23:59ãš60ç§-ãçå€äžã®çŽåã«æ¿å
¥ãããŸãã ããã幎ãšã¯ç°ãªãããããç§ã«ã¯ç°¡åã«äºæž¬ã§ãããã¿ãŒã³ããªããããããã°ã©ã ãAPIã§ã®äŒèšåŠçãèªååããããšã¯å°é£ã§ãã ç¹å¥ãª61ç§ãå°å
¥ãã代ããã«ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¯éåžžãçå€äžã®çŽåã«æèšã1ç§æ»ãããšã§ãããç§ãå®è£
ãã23ïŒ59ã2åçºçããããã«ããŸãã ãã®ãããªã¯ããã¯ã·ããã¯ã¯ããã¯ãæ»ãããã«èŠãã10ããªç§ã®ã€ãã³ãã®æž¬å®å€ã990ããªç§ã®è² ã®å€ã«ãªãããšãããããŸããã
start := time.Now()
éåžžã®æèšã¯ãã®ãããªæéã·ããäžã®ã€ãã³ãã®ç¶ç¶æéã枬å®ããã®ã«äžæ£ç¢ºã§ããããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¯2çªç®ã®ã¿ã€ãã®ã¯ããã¯ãæäŸããŸããå調ãªã¯ããã¯ã¯åã«ç§ãã«ãŠã³ãããå€æŽãŸãã¯ã·ããããŸããã
ãã®éæšæºã®ã¯ããã¯ã·ããã«ãã£ãŠã®ã¿ãã¢ãããŒã³æèšã¯ãã¢ãããŒã³ãšã¯ç°ãªãçŸåšã®æå»ã衚瀺ã§ããéåžžã®æèšãããç¹ã«åªããŠããããã§ã¯ãããŸããã ãããã£ãŠãç°¡åã«ããããã«ãGo 1ã®Goããã±ãŒãžtime
APIã¯ãéåžžã®ã³ã³ãã¥ãŒã¿ãŒã¯ããã¯ã«ã®ã¿ã¢ã¯ã»ã¹ã§ããŸãã
2015幎10æã«ãç¹ã«ãããç§ã®å ŽåãGoããã°ã©ã ããã®ãããªã¯ããã¯ã·ããäžã«ã€ãã³ãã®æéã誀ã£ãŠè¿ããšãããã°ã¬ããŒããç»å ŽããŸããã ææ¡ããããœãªã¥ãŒã·ã§ã³ã¯ãã¬ããŒãã®ã¿ã€ãã«ã§ããããŸããïŒãå調ãªæèšã«ã¢ã¯ã»ã¹ããããã®æ°ããAPIãè¿œå ãããã ããããç§ã¯ããã®åé¡ã¯ãã®ããã®æ°ããAPIãäœæããã»ã©éèŠã§ã¯ãªããšäž»åŒµããŸããã æ°ãæåã2015幎åã°ã®ãããç§ã§ãã¢ã«ãã€ãã¢ããŸã³ãããã³Googleã¯ããã®äœåãªç§ãçµæ¥ãã¹ãã¢ããããæèšãæ»ãå¿
èŠããªãããã«æèšã®é床ãèœãšãããšãåŠã³ãŸããã ãã®ãã¹ãã¢ã»ã»ã«ã³ããã¢ãããŒãã®åºç¯ãªäœ¿çšã«ãããäžè¬ã«æèšãåãé€ãããšãå¯èœã«ãªããåé¡ãèªç¶ã«æ¶ãããšããäºå®ã«ãã¹ãŠãè¡ãçããŸãã ã 察ç
§çã«ãGoã«æ°ããAPIãè¿œå ãããšã2ã€ã®æ°ããåé¡ãè¿œå ãããŸããããã2ã€ã®ã¿ã€ãã®ãŠã©ããã«ã€ããŠèª¬æããã©ã¡ãã䜿çšãããããŠãŒã¶ãŒã«æè²ããå€ãã®æ¢åã®ã³ãŒããå€æããå¿
èŠããããŸããããã¯ãéåžžã«ãŸãã§ããã¹ãŠã®ãã¡ãããã¯å®å
šã«æ¶ããŸãã
ç§ãã¡ã¯ãåé¡ã®è§£æ±ºçãæããã§ãªããšãã«ãã€ãã®ããã«ãã£ã-åŸ
ã¡å§ããã åŸ
æ©ããããšã§ãããå€ãã®çµéšãç©ãã§åé¡ã®ç解ãæ·±ããããšãã§ããããã«é©åãªè§£æ±ºçãèŠã€ããæéãé·ããªããŸãã ãã®å ŽåãåŸ
æ©ã«ãããCloudflareã®èª€åäœãšãã圢ã§åé¡ã®é倧床ã®ç解ãè¿œå ãããŸããã 2016幎æ«ã®ãããç§äžã«DNSã¯ãšãªã®æéã枬å®ããGoã³ãŒãã¯ãäžèšã®-990ããªç§ã®äŸãšåæ§ã«è² ã®å€ãè¿ããããã«ããããµãŒããŒã§ãããã¯ãçºçããåé¡ã®ããŒã¯æã«ãã¹ãŠã®ã¯ãšãªã®çŽ0.2ïŒ
ãäžæãããŸããã
Cloudflareã¯ããŸãã«Goãäœæãããã¯ã©ãŠãã·ã¹ãã ã®ã¿ã€ãã§ãããGoãæéãæ£ç¢ºã«æž¬å®ã§ããªãã£ãããã«ãéçšã«å€±æããŸããã ããã«ããããããã§ã®éèŠãªãã€ã³ãã§ãããCloudflareã¯åœŒãã®çµéšã«ã€ããŠæžããŸãã-John Graham-Cummingã¯ããã°æçš¿ãHow and Why Leap Second Affected Cloudflare DNSããå
¬éããŸããã ã€ã³ã·ãã³ãã®å
·äœçãªè©³çŽ°ãšè©³çŽ°ãããã³Goã§ã®çµéšãäŒããåŸãJohnãšCloudflareã¯ããããç§äžã®äžæ£ç¢ºãªæž¬å®ã®åé¡ãæªè§£æ±ºã®ãŸãŸã«ããã«ã¯éèŠãããããšãç解ããã®ã«åœ¹ç«ã¡ãŸããã ãã®èšäºã®å
¬éãã2ãæåŸã Go 1.9ã«ç»å Žãããœãªã¥ãŒã·ã§ã³ãéçºããã³å®è£
ããŸããïŒãšããã§ã æ°ããAPIãè¿œå ããã«ãããè¡ããŸãã ïŒã
äŸïŒãšã€ãªã¢ã¹
2çªç®ã®äŸã¯ãGoã§ãšã€ãªã¢ã¹ããµããŒãããããšã§ãã
éå»æ°å¹ŽéãGoogleã¯ãC ++ãGoãJavaãPythonãªã©ã§èšè¿°ãããæ°çŸäžã®ãœãŒã¹ã³ãŒããã¡ã€ã«ãšæ°ååè¡ã®ã³ãŒãã§æ§æããã ã ã³ãŒãããŒã¹å
šäœã®API移è¡ããã°ä¿®æ£ãªã©ãã³ãŒãã®å€§èŠæš¡ãªå€æŽã«çŠç¹ãåœãŠãããŒã ãç·šæããŸããèšèªã 圌ãã®ä»äºããåŠãã ããšã®1ã€ã¯ãAPIã®å€ãååãæ°ããååã«çœ®ãæãããšããäžåºŠã«ãã¹ãŠã§ã¯ãªãã段éçã«å€æŽãå ããããšãã§ããããšãéèŠã§ãããšããããšã§ãã ãããè¡ãã«ã¯ãå€ãååãæ°ããããšãæå³ããããšã宣èšã§ããå¿
èŠããããŸãã C ++ã«ã¯#defineããããtypedefãšå®£èšã®äœ¿çšã«ãããããå¯èœã§ãããGoã«ã¯ãã®ãããªã¡ã«ããºã ã¯ãããŸããã§ããã ãŸããGoã®äž»ãªã¿ã¹ã¯ã®1ã€ã¯å€§èŠæš¡ãªã³ãŒãããŒã¹ãæ¡åŒµã§ããããšã§ããããããªãã¡ã¯ã¿ãªã³ã°äžã«å€ãååããæ°ããååãžã®äœããã®ç§»è¡ã¡ã«ããºã ãå¿
èŠã§ãããä»ã®äŒæ¥ãã³ãŒãããŒã¹ã®æ¡å€§ã«äŒŽã£ãŠãã®åé¡ã«ééããããšã¯æããã§ããã Goã®ããŒã¹ã
2016幎3æã«ãRobert GriesmeyerãšRob PikeãšGoããã«ãã¹ãããã³ãŒãããŒã¹ãªãã¡ã¯ã¿ãªã³ã°ãã©ã®ããã«åŠçã§ãããã«ã€ããŠè°è«ãå§ãããšã€ãªã¢ã¹å®£èšã®ã¢ã€ãã¢ãæãã€ããŸããã ãã®ç¬éãGoãã©ã®ããã«éçºããããã«ãšãŠãæºè¶³ããŠããŸããã Goã®åæã®ãšã€ãªã¢ã¹ã®ã¢ã€ãã¢ã«ã€ããŠè°è«ããŸãã-å®éãGoä»æ§ã®æåã®ãã©ããã«ã¯ãšã€ãªã¢ã¹ã䜿çšããäŸãå«ãŸããŠããŸã -ãããããšã€ãªã¢ã¹ã«ã€ããŠè°è«ãããã³ã«ããããŠå°ãåŸã«ã¿ã€ããšã€ãªã¢ã¹ã«ã€ããŠã¯ããªãããããéèŠãªã®ãããããããŸããã§ãããã¢ã€ãã¢ãå
éãããŸããã ããŠããšã€ãªã¢ã¹ãèšèªã«è¿œå ããããšãææ¡ããŸããããããã¯åãªããšã¬ã¬ã³ããªæŠå¿µã§ã¯ãªããéåžžã«æ·±å»ãªå®çšçãªåé¡ã解決ããGoãéçºã®ã¹ã±ãŒã©ããªãã£ã®ã¿ã¹ã¯ããããã解決ããã®ãå©ããããã§ã ãããGoã®å°æ¥ã®å€æŽã®è¯ãã¢ãã«ã«ãªãããšãå¿ããé¡ã£ãŠããŸãã
ãã®æ¥ã®åŸåããããŒããšããã¯ææ¡ãæžãããããŒãã¯GopherCon 2016ã§çããã¬ãŒã³ããŒã·ã§ã³ïŒã©ã€ããã³ã°ããŒã¯ïŒã§ãããçºè¡šããŸããã 次ã®æ°ãæã¯ããªããããŸãã§ãGoã§å€æŽãå ããæ¹æ³ã®äŸãšããŠã¯åœ¹ã«ç«ããªãã§ãããã ãã®åŸåŠãã å€ãã®æèšã®äžã€ã¯ãåé¡ã®éèŠæ§ã説æããããšã®éèŠæ§ã§ããã
å°ãåã«ãåé¡ã®æ¬è³ªã«ã€ããŠèª¬æãããã®åé¡ãçºçããæ¹æ³ãšçç±ã«ã€ããŠæå°éã®æ
å ±ãæäŸããŸãããããã®åé¡ãããªãã«åœ±é¿ãäžãããã©ãããç¹å®ããæ¹æ³ã®å
·äœäŸãæããŸããã ãã®ææ¡ãšã¬ããŒãã¯ãããã±ãŒãžCãLãL1ãC1..Cnãå«ãæœè±¡çãªäŸã«åºã¥ããŠåäœããŸããããããã°ã©ããŒãåé¡ãé¢é£ä»ããããšãã§ããå
·äœçãªãã®ã¯ãããŸããã§ããã ãã®çµæãã³ãã¥ããã£ã®å¯Ÿå¿ã®å€§éšåã¯ããšã€ãªã¢ã¹ãGoogleã®åé¡ã解決ãããšããèãã«åºã¥ããŠãããããã¯ä»ã®åé¡ãšã¯é¢ä¿ãããŸããã
Googleã§æåã«ãããç§ãæ£ããåŠçããããšã®éèŠæ§ãç解ããŠããªãã£ãããã«ã倧èŠæš¡ãªãªãã¡ã¯ã¿ãªã³ã°äžã®ã³ãŒãããŒã¹ã®æ®µéçãªç§»è¡ãšä¿®æ£ã«å¯ŸåŠããå¿
èŠæ§ãšéèŠæ§ãGoã³ãã¥ããã£ã«å¹æçã«äŒããŸããã§ããã
ç§ã«åã³å§ããŸããã ã¬ããŒããäœæããåé¡ã詳现ã«èª¬æããèšäºãäœæããŸãããå®éã®ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®å€ãã®å
·äœäŸã䜿çšã㊠ããã®åé¡ã¯Googleã ãã§ãªããã¹ãŠã®äººã«é¢é£ããŠããããšã瀺ããŠããŸãã ããå€ãã®äººã
ãåé¡ãç解ãããã®éèŠæ§ãèªèã§ããããã«ãªã£ãã®ã§ãã©ã®ãœãªã¥ãŒã·ã§ã³ãæé©ãã«ã€ããŠçç£çãªè°è«ãéå§ããããšãã§ããŸããã ãã®çµæã ã¿ã€ããšã€ãªã¢ã¹ãGo 1.9ã«å«ãŸããGoããã倧ããªã³ãŒãããŒã¹ã§ããé©åã«ã¹ã±ãŒãªã³ã°ã§ããããã«ãªããŸãã
ã¹ããŒãªãŒã䜿çšãã
ããã§ã®æèšã®1ã€ã¯é£ããããšã§ãããç°ãªãç°å¢ãæ¡ä»¶ã§åããŠããä»ã®äººãç解ã§ããããã«ãåé¡ã®éèŠæ§ãç解å¯èœãªæ¹æ³ã§èª¬æããããšãéåžžã«éèŠã§ãã ã³ãã¥ããã£ã§ã®Goã®äž»èŠãªå€æŽãè°è«ããã«ã¯ã解決ããããšããååé¡ã®éèŠæ§ã詳述ãããã®ããã»ã¹ã«ç¹ã«æ³šæãæãå¿
èŠããããŸãã ãããè¡ãæåã®æ¹æ³ã¯ã Cloudflareããã°æçš¿ãŸãã¯ç§ã®ãªãã¡ã¯ã¿ãªã³ã°èšäºã®ããã«ãåé¡ãå®éã®ããã°ã©ã ãŸãã¯å®éã®ã·ã¹ãã ã«ã©ã®ããã«åœ±é¿ãããã瀺ãããšã§ãã
åé¡ãæœè±¡ããå
·äœã«å€æãã䜿çšçµéšã«é¢ãããã®ãããªã¹ããŒãªãŒã¯ããã®éèŠæ§ãç解ããããšãå¯èœã«ããŸãã : .
, (generics), , Go . , â , generic-, , (receiver). , , .
, , error
, Go , , Go . , .
ç§ã¯é·ãéç¶ããããšãã§ããŸãã Go , , Go - . , Go, , , .
Go 2, , Go. , , . Medium , Github Gist ( .md Markdown), Google doc , . , , Wiki: https://golang.org/wiki/ExperienceReports
解決ç

, , , , , , , .
, , , , , , Go . 2013 , (âcomma-okâ) . , x
y
, , uint32 , lo, hi = x * y
32 , 32 . , , . .
, Go 1.9 math/bits, :
package bits
, , . math/bits
, , , , , , math/bits
. , .
, Go 1 , (shared) (races) Go , . , , , - , , , . , Go . , â , (race detector) Go. runtime , .
, , .
Go 2

, Go 2?
, - Go 2 , , Go 1. . -, Go 1, , . -, Go 1 Go 2. -, Go 1 Go 2, . -, , . -, , -.
, - Go 1, , , - , Go 1.12 . .
- , Go 1.20, - Go 2. , - , , Go 1.20 Go 2. , Go 1.X Go 2.X, Go 1.X .
, , , Go 1 , , , Go 1 , .
Go 2 , , . , .
. , , Go , , , . , , . - . , , , Go , Go.
ããããšã
Russ Cox, 13 2017