GoãŠã©ãŒã¯ã¹ã«ãŒã·ãªãŒãºã®Ben Johnsonã®èšäºã®1ã€ã翻蚳ããŠãå®äžçã®ã¿ã¹ã¯ã®ã³ã³ããã¹ãã§ã®Goæšæºã©ã€ãã©ãªã®ãã詳现ãªç 究ãè¡ããŸãã
ãããŸã§ãã¹ããªãŒã ãšãã€ãã¹ã©ã€ã¹ã®æäœã«ã€ããŠèŠãŠããŸãããããã€ããåŸåŸ©ãããããã°ã©ã ã¯ã»ãšãã©ãããŸããã ãã€ãèªäœã¯ããŸãæå³ããããŸãããããããã®ãã€ãã䜿çšããŠããŒã¿æ§é ããšã³ã³ãŒããããšãæ¬åœã«äŸ¿å©ãªã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãã
ãã®æçš¿ã¯ãæšæºã©ã€ãã©ãªã®ãã詳现ãªåæã«é¢ããäžé£ã®èšäºã®1ã€ã§ãã æšæºããã¥ã¡ã³ãã¯å€ãã®æçšãªæ å ±ãæäŸãããšããäºå®ã«ãããããããå®éã®ã¿ã¹ã¯ã®ã³ã³ããã¹ãã§ã¯ãäœããã€äœ¿çšããããææ¡ããã®ãé£ããå ŽåããããŸãã ãã®äžé£ã®èšäºã¯ãå®éã®ã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããã¹ãã§ã®æšæºã©ã€ãã©ãªããã±ãŒãžã®äœ¿çšã瀺ãããšãç®çãšããŠããŸãã 質åãã³ã¡ã³ããããã°ããã€ã§ãTwitter-@benbjohnsonã§ç§ãæžãããšãã§ããŸãã
ãšã³ã³ãŒããšã¯äœã§ããïŒ
ããã°ã©ãã³ã°ã§ã¯ãããªãããŒãªåèªãåçŽãªæŠå¿µã«ãã䜿çšãããŸãã ãã以äž-1ã€ã®æŠå¿µã«ã¯å€ãã®å ŽåãæŽç·Žãããèšèãããã€ããããŸãã ãšã³ã³ãŒãã£ã³ã°ã¯ãã®ãããªèšèã§ãã ã·ãªã¢ã«åãŸãã¯ããŒã·ã£ãªã³ã°ãšåŒã°ããããšããããŸãããããã¯åãããšãæå³ããŸããã€ãŸããçã®ãã€ãã«è«çæ§é ãè¿œå ããŸãã
æšæºã®Goã©ã€ãã©ãªã§ã¯ã2ã€ã®ç°ãªããé¢é£ããã¢ã€ãã¢ã®ããã«ãšã³ã³ãŒãã£ã³ã°ãšããŒã·ã£ãªã³ã°ãšããçšèªã䜿çšããŸãã Goã®ãšã³ã³ãŒããŒã¯ããã€ãã¹ããªãŒã ã«è«çæ§é ãè¿œå ãããªããžã§ã¯ãã§ããã ããŒã·ã£ãªã³ã°ã¯ã¡ã¢ãªå ã®éããããã€ãã»ããã§æ©èœããŸãã
ããšãã°ã encoding / jsonããã±ãŒãžã«ã¯ãããããio.Writerããã³io.Readerã¹ããªãŒã ãæäœããããã®json.Encoderããã³json.DecoderããããŸãã ãŸãããã®ããã±ãŒãžã«ã¯ãã¹ã©ã€ã¹ããã®ãã€ãã®æžã蟌ã¿ããã³èªã¿åãçšã®json.Marshalerããã³json.Unmarshalerãå«ãŸããŠããŸãã
2çš®é¡ã®ã³ãŒãã£ã³ã°
ã³ãŒãã£ã³ã°ã«ã¯å¥ã®éèŠãªéãããããŸãã ãšã³ã³ãŒãçšã®äžéšã®ããã±ãŒãžã¯ãããªããã£ãã§åäœããŸã-æååãæŽæ°ãªã©ã æååã¯ãASCIIã UnicodeããŸãã¯ãã®ä»ã®ãšã³ã³ãŒãã£ã³ã°ã®ãããªãšã³ã³ãŒãã£ã³ã°ã§ãšã³ã³ãŒããããŸãã ãšã³ãã£ã¢ã³ã«å¿ããŠããŸãã¯ä»»æã®é·ãã®æŽæ°ãšã³ã³ãŒãã䜿çšããŠãæŽæ°ãç°ãªãæ¹æ³ã§ãšã³ã³ãŒãã§ããŸãã ãã€ãèªäœãã Base64ãªã©ã®ãã¿ãŒã³ã䜿çšããŠãšã³ã³ãŒãããŠãå°å·å¯èœãªæåã«ããããšãã§ããŸãã
ããããããã«é »ç¹ã«ãã³ãŒãã£ã³ã°ã«ã€ããŠè©±ããšãããªããžã§ã¯ãã®ã³ãŒãã£ã³ã°ã«ã€ããŠèããŸãã ããã¯ã æ§é ãããããã¹ã©ã€ã¹ãªã©ã®ã¡ã¢ãªå ã®è€éãªæ§é ãäžé£ã®ãã€ãã«å€æããããšãæå³ããŸãã ãã®å€æã§ã¯ãå€ãã®åŠ¥åã«å¯ŸåŠããå¿ èŠããããé·å¹Žã«ããã£ãŠäººã ã¯å€ãã®ç°ãªãã³ãŒãã£ã³ã°æ¹æ³ãèãåºããŸããã
劥å
è«çæ§é ããã€ãã«å€æããããšã¯ãæåã¯åçŽãªã¿ã¹ã¯ã®ããã«èŠãããããããŸãã-çµå±ããããã®æ§é ã¯æ¢ã«ãã€ãã®åœ¢ã§ã¡ã¢ãªã«ååšããŠããŸãã ãªãããã䜿çšããªãã®ã§ããïŒ
ã¡ã¢ãªå ã®ãã€ã圢åŒããã£ã¹ã¯ãžã®ä¿åããããã¯ãŒã¯ãžã®éä¿¡ã«é©ããŠããªãçç±ã¯ãããããããŸãã ãŸããäºææ§ã Goãªããžã§ã¯ãã®ã¡ã¢ãªã«ãã€ããé 眮ãã圢åŒã¯ãJavaã®ãªããžã§ã¯ãã®åœ¢åŒãšäžèŽããªããããç°ãªãèšèªã§èšè¿°ããã2ã€ã®ã·ã¹ãã ã§ãäºããç解ããããšã¯äžå¯èœã§ãã ãŸããä»ã®ããã°ã©ãã³ã°èšèªã ãã§ãªãã人ãšã®äºææ§ãå¿ èŠã«ãªãå ŽåããããŸãã CSV ã JSONãããã³XMLã¯ãã¹ãŠãæåã§ç°¡åã«è¡šç€ºããã³ç·šéã§ãã人éãèªã¿åãã圢åŒã®äŸã§ãã
ãã ãã人éãèªã¿ããã圢åŒãè¿œå ããããšã¯å°é£ã§ãã 人éãèªã¿ããã圢åŒã¯ãã³ã³ãã¥ãŒã¿ãŒã§èªãã®ãé£ãããé·ããªããŸãã æŽæ°ãè¯ãäŸã§ãã ã³ã³ãã¥ãŒã¿ãŒã¯2é²æ°åœ¢åŒã®æ°åã§åäœããŸããã人ã ã¯10é²æ°åœ¢åŒã®æ°åãèªã¿ãŸãã ã³ã³ãã¥ãŒã¿ãŒã¯32ããããŸãã¯64ãããã®åºå®ãµã€ãºã®æ°å€ã§åäœããŸããã人ã ã¯1ã1000ãªã©ã®ããŸããŸãªé·ãã®æ°å€ãèªã¿åããŸãã ããã©ãŒãã³ã¹ã®éãã¯åãã«è¶³ããªãããã«æãããããããŸããããæ°çŸäžãŸãã¯æ°ååã®æ°å€ã解æãããšããã«é¡èã«ãªããŸãã
ãŸããæåã¯éåžžèããªã劥åç¹ã1ã€ãããŸãã ããŒã¿æ§é ã¯æéãšãšãã«å€åããå¯èœæ§ããããŸãããäœå¹Žãåã«ãšã³ã³ãŒããããããŒã¿ãåŠçã§ããå¿ èŠããããŸãã ãããã³ã«ãããã¡ãŒãªã©ã®äžéšã®ãšã³ã³ãŒãã£ã³ã°ã§ã¯ãããŒã¿ã®ã¹ããŒããèšè¿°ãããã£ãŒã«ãã«ããŒãžã§ã³ãè¿œå ã§ããŸããå€ããã£ãŒã«ãã¯å»æ¢ãããæ°ãããã£ãŒã«ããè¿œå ãããå ŽåããããŸãã ããã§ã®æ¬ ç¹ã¯ãããŒã¿ããšã³ã³ãŒããŸãã¯ãã³ãŒãã§ããããã«ããããã«ãããŒã¿ãšãšãã«ã¹ããŒã ã®å®çŸ©ãç¥ãå¿ èŠãããããšã§ãã ãã€ãã£ãGogob圢åŒã¯å¥ã®ã¢ãããŒãã䜿çšãããšã³ã³ãŒãäžã«ããŒã¿ã¹ããŒã ãçŽæ¥ä¿åããŸãã ãããããã€ãã¹ã¯ããšã³ã³ãŒããããããŒã¿ã®ãµã€ãºãéåžžã«å€§ãããªãããšã§ãã
ããã€ãã®ãã©ãŒãããã¯äžè¬ã«ãã®ç¹ãè¿åããã¹ããŒã ãªãã§è¡ããŸãã JSONããã³MessagePackã䜿çšãããšãæ§é ããã®å Žã§ãšã³ã³ãŒãã§ããŸãããå€ãããŒãžã§ã³ããã®å®å šãªãã³ãŒãã®ä¿èšŒã¯ãããŸããã
ãŸããã³ãŒãã£ã³ã°ãè¡ãã·ã¹ãã ã䜿çšããŸããããšã³ã³ãŒããŒãšã¯èããŠããŸããã ããšãã°ãããŒã¿ããŒã¹ã¯ãè«çæ§é ãååŸãããã£ã¹ã¯äžã®ãã€ãã»ãããšããŠä¿åããæ¹æ³ã®1ã€ã§ããããŸãã ãããã¯ãŒã¯ã³ãŒã«ãSQL解æãã¯ãšãªã¹ã±ãžã¥ãŒãªã³ã°ãªã©ãå€ãã®ããšãè¡ãããå¯èœæ§ããããŸãããæ¬è³ªçã«ã¯ãã€ããšã³ã³ãŒãã£ã³ã°ã§ãã
æçµçã«ãé床ãéèŠãªå Žåã¯ãå éšGoã¡ã¢ãªåœ¢åŒã䜿çšããŠãããŒã¿ããã®ãŸãŸä¿åã§ããŸãã ãã®ããã«rawãšåŒã°ããã©ã€ãã©ãªãäœæããŸããã ãšã³ã³ãŒãããã³ãã³ãŒãæéã¯ãæåéã0ç§ã§ãã ããããå®çšŒåç°å¢ã§ã¯äœ¿çšããªãæ¹ãè¯ãã§ãã
ãšã³ã³ãŒãã£ã³ã°ã®4ã€ã®ã€ã³ã¿ãŒãã§ãŒã¹
ããªãããšã³ã³ãŒãã£ã³ã°ããã±ãŒãžã調ã¹ãæ°å°ãªã人ã®äžäººãªããããªãã¯å°ã倱æãããããããŸããã ããã¯ãšã©ãŒã«ç¶ããŠ2çªç®ã«å°ããããã±ãŒãžã§ã4ã€ã®ã€ã³ã¿ãŒãã§ã€ã¹ã®ã¿ãå«ãŸããŠããŸãã
æåã®2ã€ã¯BinaryMarshalerããã³BinaryUnmarshalerã€ã³ã¿ãŒãã§ã€ã¹ã§ãã
type BinaryMarshaler interface { MarshalBinary() (data []byte, err error) } type BinaryUnmarshaler interface { UnmarshalBinary(data []byte) error }
ãããã¯ããã€ããªåœ¢åŒãšã®éã§å€æããæ¹æ³ãæäŸãããªããžã§ã¯ãã察象ãšããŠããŸãã ãããã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯ãæšæºã©ã€ãã©ãªã®ããã€ãã®å Žæãããšãã°time.Time.MarshalBinaryïŒïŒã§äœ¿çšãããŸãã éåžžãããŒã¿ããã€ããªåœ¢åŒã«å€æããåäžã®æ¹æ³ã¯ãªããããããããã©ãã§ãèŠã€ããããšã¯ã§ããŸããã ãã§ã«èŠãããã«ãèšå€§ãªæ°ã®ç°ãªãã·ãªã¢ã«å圢åŒããããŸãã
ãã ããã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã§ã¯ããšã³ã³ãŒãã«1ã€ã®åœ¢åŒãéžæããå¯èœæ§ããããŸãã ããšãã°ããã¹ãŠã®ããŒã¿ã«å¯ŸããŠãããã³ã«ãããã¡ãéžæã§ããŸãã éåžžãã¢ããªã±ãŒã·ã§ã³ã§è€æ°ã®ãã€ããªåœ¢åŒãäžåºŠã«ãµããŒãããããšã¯æå³ããªãããã BinaryMarshalerã®å®è£ ãæå³ããªãå ŽåããããŸãã
次ã®2ã€ã®ã€ã³ã¿ãŒãã§ã€ã¹ã¯TextMarshalerãšTextUnmarshalerã§ãã
type TextMarshaler interface { MarshalText() (text []byte, err error) } type TextUnmarshaler interface { UnmarshalText(text []byte) error }
ãããã®2ã€ã®ã€ã³ã¿ãŒãã§ã€ã¹ã¯åã®ãã®ãšéåžžã«äŒŒãŠããŸãããUTF-8圢åŒã®ããŒã¿ã§åäœããŸãã
json.Marshalerãªã© ãäžéšã®åœ¢åŒã¯ç¬èªã®ããŒã·ã£ãªã³ã°ã€ã³ã¿ãŒãã§ã€ã¹ãå®çŸ©ããåãååã®ããžãã¯ã«åŸããŸãã
ãšã³ã³ãŒãã£ã³ã°ããã±ãŒãžã®æŠèŠ
æšæºã©ã€ãã©ãªã«ã¯ãããŒã¿ããšã³ã³ãŒãããããã®å€ãã®äŸ¿å©ãªããã±ãŒãžããããŸãã 次ã®èšäºã§ãããããã詳现ã«æ€èšããŸãããããã§ç°¡åãªã¬ãã¥ãŒãããããšæããŸãã äžéšã®ããã±ãŒãžã¯ãšã³ã³ãŒãã£ã³ã°/ã«ãããäžéšã¯ä»ã®å Žæã«ãããŸãã
åºæ¬ã¿ã€ãã®ãšã³ã³ãŒãã£ã³ã°
ã»ãšãã©ã®å ŽåãGoã«åããŠäŒã£ããšãã«æåã«äœ¿çšããããã±ãŒãžã¯fmtããã±ãŒãžïŒãfumptããšçºé³ïŒã§ããã Cã¹ã¿ã€ã«ã®printfïŒïŒåœ¢åŒã䜿çšããŠãæ°å€ãæååããã€ãããšã³ã³ãŒãããã³ãã³ãŒããããªããžã§ã¯ãããšã³ã³ãŒãããããã®åºæ¬çãªæ©èœãåããŠããŸãã fmtããã±ãŒãžã¯ããã³ãã¬ãŒãã«åºã¥ããŠäººéãèªããæååãäœæããããã®åªããç°¡åãªæ¹æ³ã§ããããã³ãã¬ãŒãã®è§£æã¯éåžžã«é«éã§ã¯ãªãå ŽåããããŸãã
ããè¯ãããã©ãŒãã³ã¹ãå¿ èŠãªå Žåã¯ãprintfãã³ãã¬ãŒãããé¢ããŠstrconvããã±ãŒãžã䜿çšã§ããŸãã ããã¯ãæååãæŽæ°ããã³å°æ°ãè«çå€ã®åºæ¬çãªæžåŒèšå®ãšã¹ãã£ã³ã®ããã®äœã¬ãã«ããã±ãŒãžã§ãããäžè¬ã«éåžžã«é«éã§ãã
Goèªäœã®ãããªãããã®ããã±ãŒãžã¯ãUTF-8ã§æååãæäœããããšãæå³ããŸãã æšæºã©ã€ãã©ãªã§ã®éUnicodeãšã³ã³ãŒãã£ã³ã°ã®ãµããŒããã»ãŒå®å šã«æ¬ åŠããŠããã®ã¯ãè¿å¹Žããã¹ãŠãUTF-8ã§ããå¿ èŠãããã€ã³ã¿ãŒããããéåžžã«æ¥éã«åæãããšããäºå®ãšãããããRob PikeãGoãããŠãç¥ã£ãŠããutf-8ã ãããã幞éã ã£ãã®ã§ãGoã§éUTF-8ãšã³ã³ãŒãã£ã³ã°ãåŠçããå¿ èŠã¯ãããŸããã§ãããã ãšãã㧠ã unicode / utf16 ã encoding / ascii85ããã³ãã©ã³ãå šäœã®golang.org/x/textãªã©ã®ããã±ãŒãžããããŸãã ãã®ã¹ã¬ããã«ã¯ãGoãããžã§ã¯ãã®äžéšã§ããå€æ°ã®åªããããã±ãŒãžãå«ãŸããŠããŸããã Go 1ã®äžäœäºææ§ã®ä¿èšŒã§ã¯ã«ããŒãããŠããŸãã ã
ãšã³ã³ãŒãçªå·ã®å Žåãencoding / binaryããã±ãŒãžã¯ãããã°ãšã³ãã£ã¢ã³ãšãªãã«ãšã³ãã£ã¢ã³ã®ãšã³ã³ãŒããããã³å¯å€é·ãšã³ã³ãŒããæäŸããŸãã ãšã³ãã£ã¢ã³ãã¹-ãã€ãã次ã ã«é²ãé åºãæå³ããŸãã ããšãã°ãæ°å€1000ïŒ16é²æ°ã§0x03e8ïŒãè¡šãuint16ã¯ã03ãše8ã®2ãã€ãã§æ§æãããŸãã ããã°ãšã³ãã£ã¢ã³åœ¢åŒã§ã¯ããããã®ãã€ãã¯ãã®é åºã§æžã蟌ãŸããŸã-"03 e8"ã ãªãã«ãšã³ãã£ã¢ã³ã§ã¯ãéé ã¯ãe8 03ãã§ãã äžè¬çãªCPUã¢ãŒããã¯ãã£ã®å€ãã¯ããªãã«ãšã³ãã£ã¢ã³ã§ãã ãã ããããã°ãšã³ãã£ã¢ã³ã¯éåžžããããã¯ãŒã¯çµç±ã§ããŒã¿ãéä¿¡ããããã«äœ¿çšãããŸãã ãããã¯ãŒã¯ãã€ããªãŒããŒãšãåŒã°ããŸãã
çµè«ãšããŠããã€ãèªäœãçŽæ¥ãšã³ã³ãŒãããããã®ããã±ãŒãžãããã€ããããŸãã éåžžããã€ããšã³ã³ãŒãã¯ãå°å·å¯èœãªåœ¢åŒã«å€æããããã«äœ¿çšãããŸãã ããšãã°ãencoding / hexããã±ãŒãžã¯ã16é²æ°ã§ããŒã¿ãè¡šãããã«äœ¿çšãããŸãã ç§ã¯å人çã«ãããã°ç®çã§ã®ã¿äœ¿çšããŸããã äžæ¹ãããŒã¿ããããã³ã«ã§éä¿¡ããããããå°å·å¯èœãªæåãå¿ èŠã«ãªãå ŽåããããŸããããã¯ãæŽå²çãªçç±ãããã€ããªããŒã¿ïŒé»åã¡ãŒã«ãªã©ïŒã®ãµããŒããå¶éãããŠããããã§ãã encoding / base32ããã³encoding / base64ããã±ãŒãžã¯è¯ãäŸã§ãã å¥ã®äŸã¯ãTLS蚌ææžããšã³ã³ãŒãããããã«äœ¿çšãããencoding / pemããã±ãŒãžã§ãã
ãªããžã§ã¯ããšã³ã³ãŒãã£ã³ã°
æšæºã©ã€ãã©ãªã®ãªããžã§ã¯ãããšã³ã³ãŒãããããã®ããã±ãŒãžã¯ãããã«å°ãªãã§ãã ããããå®éã«ã¯ããããã®ããã±ãŒãžã§ååã§ãã
éå»10幎éãã¿ã³ã¯ã§éãããããšããªããã°ãããããã JSONããªããžã§ã¯ãããšã³ã³ãŒãããããã®ããã©ã«ã圢åŒã«ãªã£ãŠããããšã«æ°ã¥ããã§ãããã åè¿°ã®ãšãããJSONã«ã¯æ¬ ç¹ããããŸãããJSONã¯éåžžã«äœ¿ããããããã®å®è£ ã¯ã»ãŒãã¹ãŠã®èšèªã§è¡ãããŠãããããéåžžã«äººæ°ããããŸãã encoding / jsonããã±ãŒãžã¯ãã®åœ¢åŒã®åªãããµããŒããæäŸããGoã¯ffjsonãªã©ã®ãµãŒãããŒãã£è£œã®ããé«éãªããŒãµãŒå®è£ ãåããŠããŸãã
JSONã¯äž»èŠãªãã·ã³ééä¿¡ãããã³ã«ã«ãªããŸããããããŒã¿ã人ã«ãšã¯ã¹ããŒãããããã®CSV圢åŒã¯ä»ã§ãäžè¬çã§ãã encoding / csvããã±ãŒãžã¯ããã®åœ¢åŒã®è¡šåœ¢åŒããŒã¿ãæäœããããã®åªããã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããŸãã
2000幎代ååŸã«æžãããã·ã¹ãã ã䜿çšããå ŽåãããããXMLã䜿çšããå¿ èŠããããŸã ã encoding / xmlããã±ãŒãžã¯ã jsonã®åæ§ã®ããã±ãŒãžãšåæ§ã«ãè¿œå ã®ã¿ã°ããŒã¹ã®ãšã³ã³ãŒã/ãã³ãŒãçšã®SAXã¹ã¿ã€ã«ã®ã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŸãã ããè€éãªæäœãDOMãXPathãXSDãXSLTãªã©ãå¿ èŠãªå Žåã¯ãããããcgoçµç±ã§libxml2ã䜿çšããå¿ èŠããããŸãã
Goã«ã¯ç¬èªã®ã¹ããªãŒãã³ã°ãšã³ã³ãŒã圢åŒgobããããŸãã ãã®ããã±ãŒãžã¯ãGoãµãŒãã¹éã®ãªã¢ãŒãããã·ãŒãžã£ã³ãŒã«ãå®è£ ããããã«net / rpcã§äœ¿çšãããŸãã Gobã¯äœ¿ããããã§ãããä»ã®èšèªã§ã¯ãµããŒããããŠããŸããã ã¯ãã¹èšèªããŒã«ãå¿ èŠãªå Žåã gRPCã¯ããäžè¬çãªéžæè¢ã®ããã«èŠããŸãã
ãããŠæåŸã« ã encoding / asn1ããã±ãŒãžããããŸã ã ããã«é¢ããææžã¯æ§ããã§ãå¯äžã®ãªã³ã¯ã¯25ããŒãžã®ããã¹ããŠã©ãŒã«ã«éããŠããŸã-ASN.1ã®åå¿è åãã®çŽ¹ä»ã§ã ã ASN.1ã¯ãäž»ã«X.509 SSL / TLS蚌ææžã§äœ¿çšãããè€éãªãšã³ã³ãŒãæ¹åŒã§ãã
ãããã«
ã³ãŒãã£ã³ã°ã¯ãçã®ãã€ãã«è«çæ§é ãäžããããã®åºç€ãæäŸããŸãã ãããªãã§ã¯ãè¡ãããŒã¿æ§é ãããŒã¿ããŒã¹ããŸãã¯æçšãªã¢ããªã±ãŒã·ã§ã³ãããããŸããã åçŽãªæŠå¿µã®ããã«èŠãããã®ã«ã¯ãå®éã«ã¯å®è£ ã®è±å¯ãªæŽå²ãšå€§ããªãã¬ãŒããªãã®ã»ããããããŸãã
ãã®èšäºã§ã¯ãæšæºã©ã€ãã©ãªã«å®è£ ããããšã³ã³ãŒãã£ã³ã°ã®ããŸããŸãªå®è£ ãšããããã®ãã¬ãŒããªãã®ããã€ãã調ã¹ãŸããã åºæ¬åãšãªããžã§ã¯ããæäœããããã®ãããã®ããã±ãŒãžããGoã§ã®ãã€ããšãã€ãã¹ããªãŒã ã®æäœã®ç解ã«åºã¥ããŠã©ã®ããã«æ§ç¯ãããããèŠãŸããã 次ã®èšäºã§ã¯ããããã®ããã±ãŒãžãããã«è©³ãã調ã¹ãå®éã®ã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããã¹ãã§ãããã䜿çšããæ¹æ³ã確èªããŸãã