ã¯ããã«
ã·ã§ã«ã¹ã¯ãªããã«é¢ããŠã®é·æãšçæããŸãšããŠã¿ãŸãããå€ãã®çæãäžããŠããŸãããç§ã¯ã·ã§ã«ã¹ã¯ãªãããå«ã£ãŠããããã§ã¯ãªãïŒãããéïŒãçŸåšã®ã·ã§ã«ã¹ã¯ãªãããæ±ããåé¡ç¹ãæããã«ããã·ã§ã«ã¹ã¯ãªããã¯ã©ã䜿ãã¹ããïŒ ãŸãã¯ã©ã䜿ãã¹ãã§ã¯ãªããïŒ åé¡ç¹ããããªãã°ããã解決ããããšã¯ã§ããªããïŒ ãèããããã«ãŸãšããŠããŸããåé¡ã解決ããã«ã¯ãŸãåé¡ç¹ãæããã«ããªããã°ãããŸããã
ãŸãã·ã§ã«ã¹ã¯ãªãããæ¬æ¥ã®çšéã«åããªããã®ã«äœ¿ããšéã«éçºãé£ãããªã£ãŠããŸããŸããããã¯äœ¿ãæ¹ãæªãããã§ã·ã§ã«ã¹ã¯ãªããã®åé¡ã§ã¯ãããŸãããééã£ãäœ¿ãæ¹ã«ãã£ãŠã·ã§ã«ã¹ã¯ãªããã®äŸ¡å€ãäžåœã«äžããããŠããŸãããšãæžããããã«ããããŠå€ãã®çæããããŠããŸããã€ãŸãæåãããããªçšéã«äœ¿ãããšæããªããšããããšã§ããïŒäœ¿ãããšãçŠæ¢ã¯ããŸããããããã£ãäžã§ãããŸããããå®éã«ç§ãããã£ãäžã§ãã£ãŠããŸããïŒ
2021-10-11 ãã®èšäºã®ã³ã¡ã³ãã«è¿ä¿¡ãšããåã®ãé·æã«é¢ããŠã®è£è¶³ãã远å ããŠããŸãã
è£è¶³ (2021-10-03 远èš) ãã®èšäºã¯ãããããããé·æããšãçæããšããŠãŸãšããŸããããå®éã«ã¯çšéããŸãã£ããéããšããã ãã®è©±ã§ããäžé©åãªçšéã«ã·ã§ã«ã¹ã¯ãªããã䜿ãããšãããããçæãã«èŠããŠããŸãã®ã§ãããé·æããæŽ»ããããããªå Žæã«ã·ã§ã«ã¹ã¯ãªããã¯äœ¿ããŸããæ£çŽã«èšãã°ããã ãã®éããããã®ã«ã·ã§ã«ã¹ã¯ãªããã䜿ããã©ããã®éžæãééãããšããã®ãããããããŸãããïŒ
泚æïŒ2021-10-03 远èšïŒããèªãŸãã«åéããããŠããæ¹ãããããã§ãããè«ç¹ã¯ããã£ãŠãããªãäºã¯ãªããã§ã¯ãªããé©åãªéžæãªã®ãïŒãã§ããã·ã§ã«ã¹ã¯ãªãã or ä»ã®èšèªã®äž¡æ¹ã§ããæ®éã«å®çŸå¯èœãªæ¹æ³ããããã®ããããããªåé¿çïŒã©ã€ãã©ãªãã³ãã³ãçïŒãçã¿åºããŠãŸã§å¥ã®æ¹æ³ã§ããããšã«æå³ã¯ãããŸãããåé¿çãªã©ã¯ããããã«åºæ¥ãæ¹ããã£ãšè¯ããã§ããå®éã«å¯èœã ãšããŠãæ¬åœã«ããïŒã·ã§ã«ã¹ã¯ãªãã or ä»ã®èšèªïŒã䜿ã£ãŠããçç±ã¯ããã®ãïŒãã®çç±ã¯æ¬åœã«æ£ããã®ãïŒãã®çç±ã¯ä»åãåœãŠã¯ãŸãã®ãïŒåã«ä»èªåã䜿ããæè¡ããã€ãéžãã§ããã ãã§ã¯ãªãã®ãïŒãèããããã«ããŠãã ããã
ã·ã§ã«ã¹ã¯ãªãããšã¯
ã·ã§ã«ã¹ã¯ãªãããšã¯ã·ã§ã«ã«ãã£ãŠå®è¡ãããã¹ã¯ãªããïŒããã°ã©ã ïŒã®ããšã§ããã·ã§ã«ã§äœ¿ããææ³ãšå šãåããã®ã䜿ãå®åçãªåŠçãã¹ã¯ãªããã«ããããšã§äœæ¥ãå¹çåãããããšãã§ããŸãã
ã·ã§ã«ã¯ããã€ãçš®é¡ããããŸãããçŸåš Unix / Linux ã§ãã䜿ãããŠããã·ã§ã«ã®åå㯠bashãdashãkshãzsh ã§ãããããã®ã·ã§ã«ã¯ POSIX ã§æšæºåãããèšèªïŒã·ã§ã«ã³ãã³ãèšèªïŒãããŒã¹ãšããŠããããã§ç¬èªã®æ¡åŒµãè¡ã£ãèšèªã§æžããã¹ã¯ãªãããå®è¡ããããšãã§ããŸãããããã®ã·ã§ã«ã¯ããŒã¹ã®éšå㯠POSIX ã«æºæ ããŠããïŒäŸå€ããããªãã«ãããŸããïŒåºæ¬çã«åãããã«åäœããŸããæ¡åŒµéšåã¯ä»ã®ã·ã§ã«ãšäºææ§ããã£ãããªãã£ãããšãŸã¡ãŸã¡ã§ããæŽå²çã«ã¯ 1988 幎çã® ksh88 ãå ã«ãã®ãµãã»ããã POSIX ã·ã§ã«ã®ä»æ§ãšãªã£ãŠããŸãããŸã ä»ã®ã·ã§ã«ã¯ ksh ã®ä»æ§ãåãå ¥ãããç¬èªã«æ¹è¯ãããããªããä»ãéçºãè¡ãããŠããŸãããªã dash ã¯å¯èœãªéãæ¡åŒµæ©èœãè¡ããªãæ¹éã§ããããçŽç²ãª POSIX ã·ã§ã«ã«äžçªè¿ãã·ã§ã«ãšãªã£ãŠããŸãã
ksh 以åã«ïŒäž»ã« Unix ã§ïŒäœ¿ãããŠããã·ã§ã«ã Bourne ã·ã§ã«ã§ ksh 㯠Bourne ã·ã§ã«ã®äžäœäºæã®ã·ã§ã«ãšãªã£ãŠããŸããåæ§ã« bashãdashãzsh ãªã©ã Bourne ã·ã§ã«ã®äžäœäºæã·ã§ã«ã§ãããŸãã·ã§ã«ã«ã¯ Bourne / POSIX ã·ã§ã«ãšäºææ§ããªã tcsh ã fish ãšãã£ãã·ã§ã«ããããŸããBourne ã·ã§ã«ãããåã« Unix ã§äœ¿ãããŠãã Thompson ã·ã§ã«ã PWB ã·ã§ã«ã Bourne ã·ã§ã«ãšäºææ§ããããŸããã
åºçŸ©ã®ã·ã§ã«ã¹ã¯ãªããã¯ããããã®ã·ã§ã«ïŒBourne / POSIX ã·ã§ã«ãšäºææ§ããªããã®ãå«ãïŒã§åäœããã¹ã¯ãªããã®äºã«ãªããŸãããäžè¬çã«ã·ã§ã«ã¹ã¯ãªãããšèšã£ãå ŽåãBourne / POSIX ã·ã§ã«ãšäºææ§ããããã®ãæããŠããããšãå€ãã§ãããŸã Windows ã§äœ¿ãããã³ãã³ãããã³ããã PowerShell ãã·ã§ã«ã®äžçš®ã§ããããããã§åãã¹ã¯ãªãããã·ã§ã«ã¹ã¯ãªãããšã¯åŒã°ããããšã¯å°ãªãã§ãã
POSIX ã§æšæºåãããŠããã·ã§ã«ã³ãã³ãèšèªã¯æ§é åããã°ã©ãã³ã°ãå¯èœãªæç¶ãåèšèªã§ããUNIX ã®æåã®ã·ã§ã«ïŒã€ãŸã Bourne ã·ã§ã«ãããåïŒã§ãã Thompson ã·ã§ã«ã¯ãã¡ã€ã«ã«çŸ
åããã³ãã³ããå®è¡ããããšã¯ã§ãããã®ã®ã倿°ãã颿°ããªããããŒå¶åŸ¡ã®ããã® goto ã³ãã³ãã§ããåå¥ã®ã³ãã³ããšããŠå®è£
ãããŠãããã¹ã¯ãªããèšèªãšããŠã¯èšèšãããŠããŸããã§ãããThompson ã·ã§ã«ãããã°ã©ãã³ã°ãè¡ãã®ã«äžååã§ããããšãæããã«ãªããããããã°ã©ãã³ã°ã«é©ãããã®ã«ãã¹ã PWB ã·ã§ã«ãéçºãããŸããããThompson ã·ã§ã«ãšã®äºææ§ãç¶æããå¿
èŠããæ¹è¯ã¯éå®çãªãã®ãšãªã£ãŠããŸããŸããïŒäŸ 倿°ã¯å°å
¥ãããã 1 æåãã䜿ããªããªã©ïŒããã®åŸãäºææ§ãåãæšãŠãŠããã°ã©ãã³ã°èšèªãšããŠäœ¿ããããã«åèšèšããããã®ã Bourne ã·ã§ã«ã§ãã
ãªãããã®èšäºã§ã¯ãã以éãåã«ã·ã§ã«ã¹ã¯ãªãããšæžããå Žå㯠POSIX ã«æºæ ããã·ã§ã«ïŒbashãdashãkshãzsh çïŒã§åäœããã·ã§ã«ã¹ã¯ãªããã®ã¿ãæããã®ãšã tcshãfishãPowerShell çã® POSIX ã·ã§ã«ãšäºææ§ããªãã·ã§ã«çšã®ã·ã§ã«ã¹ã¯ãªããã¯å«ããŸããã
è£è¶³ ããŸã« fish ã Bourne / POSIX ã·ã§ã«ã®æ¡åŒµã ãšåéãããŠãã人ãããŸããã調ã¹ãã䜿ã£ãŠã¿ãã°ããã«åããéãææ³çã«ã¯ã»ãšãã©äºææ§ããããŸãããããã fish èªäœãå¯èœãªéã POSIX ã®ææ³ã«åŸããšæžããŠãã£ããããŸãããããåéãã®åå ã§ã¯ãªãããšæããŸããããªã fish ããã®ãããªããšãèšã£ãŠããã®ãããããããŸããã
Whenever possible without breaking the above goals, fish should follow the Posix syntax.
ã·ã§ã«ã¹ã¯ãªããã®é·æãšçæ
é·æ
ã·ã§ã«ãšã·ã§ã«ã¹ã¯ãªããã§åãèšèªã䜿ãã
å€ãã®äººã«ãšã£ãŠã·ã§ã«ã¯ãªããŠã¯ãªããªããã®ã ãšæããŸããã·ã§ã«ã®äžã§æäœæ¥ãè¡ããããäœåãç¹°ãè¿ããŠé¢åã«ãªã£ããããããã®ãŸãŸã¹ã¯ãªããã«ã¹ã ãŒãºã«ç§»è¡ã§ããã®ãåºæ¥ãã®ãã·ã§ã«ã¹ã¯ãªããã®åŒ·ã¿ã§ããã·ã§ã«ãšã·ã§ã«ã¹ã¯ãªããã§å¥ã ã®èšèªã䜿ãã¹ããšäž»åŒµããŠãã人ãããããã§ãããã·ã§ã«ã䜿ãã人ã§ãã·ã§ã«ã¹ã¯ãªããã§æ®éã«ã§ããããšã§ããã°ãããããå¥ã®èšèªã䜿ãå¿ èŠã¯ãªãã¯ãã§ãã
é©ãã»ã©çãã³ãŒãã§ç®çãéæã§ãã
ã·ã§ã«ã¹ã¯ãªããã¯ã³ãã³ããå®è¡ããããã«ãšãŠãå¹ççãªææ³ãæ¡çšããŠããŸããä»ã®èšèªã®ããã«æååãã¯ã©ãŒãããã®ã¯å¿
é ã§ã¯ãªããåŒæ°ãåºåãã«ã³ããè¡æ«ã®ã»ãã³ãã³ãå¿
èŠãããŸãããã³ãã³ããå®è¡ããã®ã«å¿
èŠãªã®ã¯ãã®ã³ãã³ãåãšåŒæ°ã ãã§ããä»ã®èšèªã®ããã«ã³ãã³ããå®è¡ããããã®é¢æ°ã¯å¿
èŠãããŸãããç¹ã«ãã€ãé信㯠| ã§ç¹ãã ããšãã究極ã®ã·ã³ãã«ããå®çŸããŠããŸãã
ã³ãã³ãã®åºåçµæãããŒã¿ãšçãã
ã·ã§ã«ã¹ã¯ãªããã¯å€ãã®å Žåã³ãã³ãã®å®è¡çµæãããŒã¿ãšããŠå©çšããŸããäŸãã° find ã³ãã³ãã§å®è¡ããçµæããã®ãŸãŸè€æ°ã®ãã¡ã€ã«ãªã¹ããšããŠä»ã®ã³ãã³ãã§åŠçããŸããã³ãã³ãã¯ã·ã§ã«ãããå®è¡ãããã®ã§ããããã®åºåçµæã¯æ®æ®µèŠæ
£ããŠãããã®ã§ããç¹æ®ãªåœ¢åŒãšããããã§ããªãèŠãããããã¹ãåºå圢åŒã§ãããã®ããåãã©ããšããã£ãŒã«ãåãã©ããšãããããäœèšãªããšãèããã«ãã¿ãŸããèªåã§ã³ãã³ããäœãéã«ãåé
ç®ãã¹ããŒã¹ã§åºåãã ããšããã·ã³ãã«ãã€äººéã«ãèŠããããªããããªåœ¢åŒã«å¯Ÿå¿ããã°ååã§ãã
ããã¯é·æã§ã¯ãããŸãããè€éãªããŒã¿æ§é ãæ±ããªãããšããçæã«ãç¹ãããŸããè€éãªãã®ã¯æ±ãã¥ãããªããŸãããã·ã³ãã«ãªã®ã¯ãšããšãã·ã³ãã«ã«ã§ããããšããã®ãã·ã§ã«ã¹ã¯ãªããã§ãã
ã³ãã³ãã®äºææ§åé¡ã«å¯Ÿå¿ã§ãã
ã·ã§ã«ã¹ã¯ãªããã§ã¯äžè¬çã«ã·ã§ã«ã³ãã³ããå®è¡ããŸãããã³ãã³ãã¯åãååã§ã GNU ãš BSD ã§ãªãã·ã§ã³ãæ©èœãéã£ãããããªã©ç°å¢ã«ãã£ãŠäºææ§ããããŸãããããããããã®éãã¯ã·ã§ã«ã¹ã¯ãªããã®ã·ã§ã«é¢æ°ã䜿ãããšã§ããçšåºŠè§£æ±ºããããšãã§ããŸããããã¯ã·ã§ã«é¢æ°ãšã³ãã³ãã亀æå¯èœãªèšèšã«ãªã£ãŠããããã§ããããå€éšã³ãã³ãã«äºææ§äžã®åé¡ãããã°ãã·ã§ã«é¢æ°ãå®çŸ©ãããã§ã³ãã³ãã®éããåžåããããšãã§ããŸããããã¯ä»ã®èšèªã§ã¯å®¹æã«å®çŸããããšã¯ã§ããŸããã
ã·ã§ã«ã¹ã¯ãªããã¯ã³ãã³ãã䜿ã£ãŠåŠçãè¡ãããªãã°ãã®ã³ãã³ãã®åé¡ã解決ããæ©èœãæã£ãŠããããšããèãã¯ããããªãã®ã§ã¯ãªããšæããŸãã
æ¢åã®ã³ãã³ããç°¡åã«äžŠåå®è¡ã§ãã
ã·ã§ã«ã¹ã¯ãªããã«ã¯ã³ãã³ãã䞊åã§å®è¡ããããã® xargs -P ã ãGNU Parallel ãšãã£ãå°çšã®ã³ãã³ãããããŸãããŸãã·ã§ã«èªèº«ã§ãããã¯ã°ã©ãŠã³ãããã»ã¹ãäœãããšã§ã³ãã³ãã䞊åã«å®è¡ãããããšãã§ããŸããã€ãŸãã³ãã³ãèªäœããã«ãã³ã¢å¯Ÿå¿ã§ãªããšãã·ã§ã«ã¹ã¯ãªããã«ãã£ãŠ CPU ã®æ§èœã䜿ãåãããšãã§ããŸãã
ãªããã€ãã§ã³ãã³ããç¹ãã ãã§ãããçšåºŠã®äžŠåå®è¡ã®å¹æã¯ãããŸãããããŸãæ¡ä»¶ãæããªããšå¹ççã« CPU ã䜿ãåãããšã¯ã§ããŸããããäžŠåæ°ãæè»ã«å€ããããšãã§ããŸããããŸããã€ãééä¿¡ã®ãªãŒããŒãããã«ããé ããªã£ãŠããŸããŸããI/O åŸ ã¡ã«ãã现ãã CPU ã®ç©ºãæéãåãããšããå¹æã¯æåŸ ã§ããŸãããæ¬æ Œçã«äžŠåå®è¡ãããã«ã¯å°çšã®ã³ãã³ããäœ¿ãæ¹ãå¹ççã§ãã
çã¡ã¢ãªã§ãã
ã·ã§ã«ã¹ã¯ãªãããšã³ãã³ãã¯åºæ¬çã«è¡åäœã§ç¬ç«ããããŒã¿ãæ±ãèšèšã«ãªã£ãŠãããå šäœãèªã¿èŸŒãã§åŠçãããããªããšã¯ããŸãè¡ããŸãããäžè¡ã®ããŒã¿ã¯å°ããããã·ã§ã«ã¹ã¯ãªãããããã³ãŒããæžããšãããŸãã¡ã¢ãªã䜿çšããã«ãã¿ãŸãã
ããã¯ç§ã®æšæž¬ã§ããå€ãæä»£ã¯è€æ°ã®äººãäžå°ã®ã³ã³ãã¥ãŒã¿ãå ±æããŠããã®ã§ãäžäººãå€ãã®ã¡ã¢ãªãé·æéå°æããããšã¯åé¡ã§ãã£ããããããããèªç¶ãšäžè¡äžããŒã¿ã§åŠçãããããªèšèªèšèšã«ãªã£ãã®ã§ã¯ãªãã®ããšæã£ãŠããŸãã
2021-10-23 è¿œèš ãHow do pipelines limit memory usage?ããããåæã®ãã€ãã©ã€ã³ã®ä»çµã¿ã¯ãã€ãéä¿¡éã®ãããã¡ã«ã¡ã¢ãªã§ã¯ãªããã¡ã€ã«ã䜿çšããŠãããšããããšã§ããå°ããªããã°ã©ã ãšãã€ãã©ã€ã³ã®ä»çµã¿ã¯çã¡ã¢ãªãå®çŸããããã«ãã£ããšããããšãããããŸãã
çæ
æåã«å¿µãæŒããŠãããŸãããã·ã§ã«ã¹ã¯ãªããã«ã¯ããã«äžãããããªå€ãã®çæããããŸãããã ãããšãã£ãŠäžå¯èœãšããããšã«ã¯ãªããŸãããäºææ§ãäœãããã©ãŒãã³ã¹ãçç£æ§ãæªããããªå Žåã¯ã·ã§ã«ã¹ã¯ãªããã§ããããããçç±ããªããšããã ãã§ããäºææ§ãäœããšãç¹å®ã®ã·ã¹ãã ã ãã察象ãšããã°é¢ä¿ãããŸãããããã©ãŒãã³ã¹ã®æªããããŒã¿ãååå°ãããã°ïŒãã¡ã€ã«ãµã€ãºæ°åMBãªã©ïŒã»ãšãã©åé¡ã«ãªããªãå ŽåããããŸããããã©ãããŠãã·ã§ã«ã¹ã¯ãªããã§ãããªããã°ãããªãçç±ãããå Žåã¯é 匵ãã°ã§ããŸãããä»ã®èšèªãªãé 匵ãå¿ èŠãªãã§ããŠããŸããŸããå®çŸå¯èœã§ãããã©ãããšãã話ãšãé©åãªéžæã§ãããã©ãããšããè©±ãæ··åããŠã¯ãããŸããã
OS ãæã€ POSIX æ©èœã®å€ãã䜿ããªã
POSIX 㯠Unix ç³» OS ãæäœéæã£ãŠãããšæåŸ ãããããŒã¿ãã«ãª OS ã®ããã®ã€ã³ã¿ãŒãã§ãŒã¹ã§ãããã¢ããªã±ãŒã·ã§ã³éçºã«å¿ èŠãšããããã®ã§ããããããã㯠䞻㫠C èšèªããåŒã³åºãããã® API ãšããŠèšèšãããŠãããã·ã§ã«ã¹ã¯ãªããããçŽæ¥ãã®æ©èœãå©çšã§ãããã®ã¯å°ãªãã§ãããã®ããå€éšã³ãã³ãçµç±ã§éæ¥çã«äœ¿çšããããšããã§ããŸãããä»ã®èšèªã§ããã° C èšèªã©ã€ãã©ãªã®ãã€ã³ãã£ã³ã°ãªã©ããã£ããããã䜿ããããã€ã³ã¿ãŒãã§ãŒã¹ã«ã©ããã³ã°ãããã©ã€ãã©ãªããã POSIX API ã®å€ããåŒã³åºãããšãåºæ¥ãŸãããã·ã§ã«ã¹ã¯ãªããã§ã¯ãã®ãããªãã®ããªãã©ãããäœãããšããã§ããªãã®ã§ãã
ãã®çç±ã®äžã€ã¯ãPOSIX ã«ã¯åããããããã§ããã·ã§ã«ã¹ã¯ãªããã«ã¯ïŒååãšããŠïŒæåååãããªãè€éãªããŒã¿æ§é ãæ±ããŸãããint åã float åãšãã£ãããªããã£ããªåã ãã§ã¯ãªãæ§ã ãªè€éãªæ§é äœããããŸãããã®ããæåååãããªãã·ã§ã«ã¹ã¯ãªããã§ã¯ãããã® API ãçŽæ¥åŒã³åºãããšãã§ããŸããã
ãã¡ããä»ã®èšèªã䜿ã£ãŠã³ãã³ããäœãã°ïŒé ããªããšããåé¡ãæ®ãã«ããïŒäœ¿ãããšã¯åºæ¥ãŸããããã POSIX API ã®å šãŠãã³ãã³ããšããŠäœ¿ããããã«æäŸãããŠãããšã¯æããŸããããç¹ã« POSIX ã§èŠå®ãããŠããã³ãã³ãã«éãã°æå°éã®ãã®ãããããŸãããã€ãŸãã·ã§ã«ã¹ã¯ãªããã ãã§ã¯ Unix ç³» OS ã®æäœéãšãããæ©èœããããã®ãã¹ãŠãåŒãåºãããšã¯åºæ¥ãªãã®ã§ãã
ã·ã§ã«éã®äºææ§ãäœã
bashãdashãkshãzsh ãªã©ç°å¢ããšã«ç°ãªãã·ã§ã«ã䜿ãããŠããŸãããããããã®ã·ã§ã«ã§äºææ§ããããšæåŸ
ã§ããã®ã¯ POSIX ã§æšæºåãããŠããæã®ã¿ã§ããPOSIX ã§æšæºåãããŠããå Žåã§ããPOSIX ã®ä»æ§èªäœãè€æ°ã®ç°ãªãå®è£
ã蚱容ããŠããããå
šãŠã®ã·ã§ã«ã«å®å
šãªäºææ§ã¯ãããŸãããäŸãã° echo ã®åŒæ°ã®è§£éã¯ã·ã§ã«ã«ãã£ãŠç°ãªããŸããããã€ãã§ç¹ãã ã³ãã³ãã®ãã¡ã©ãããµãã·ã§ã«ã«ãªããã¯ã·ã§ã«äŸåã§ãããã®ããè€æ°ã®ç°å¢ã§åããããªã·ã§ã«ã¹ã¯ãªããã®éçºã«ã¯åã·ã§ã«ã®å®è£
ã®éãã詳ããç¥ãå¿
èŠããããŸãããå®éã®ç°å¢ã§ãã¹ãããªããã°åäœä¿èšŒãã§ããã坿¬æ§ãããã·ã§ã«ã¹ã¯ãªãããäœãããã«ã¯åŠç¿ã³ã¹ããæ€èšŒã³ã¹ããæãã£ãŠããŸããŸãã
ã·ã§ã«ã³ãã³ãèšèªã®èšèªä»æ§ã貧匱ããã
ã·ã§ã«ãå®è¡ã§ããã¹ã¯ãªããèšèªã®ååã¯ã·ã§ã«ã³ãã³ãèšèªãšèšããŸãããã®ã·ã§ã«ã³ãã³ãèšèªã¯ POSIX ã§æšæºåãããŠããŸããããªããããã ãªèšèªä»æ§ã«æããããŠããŸããïŒå人çã«ã¯ bashãkshãzsh ãªã©æ®ã©ã® POSIX ã§ãã§ã«äœ¿ããé åãæ¡åŒµããããã©ã¡ãŒã¿å±éã®äžéšã POSIX ã§æ¡çšãã¹ãã ãšæã£ãŠããŸããïŒ
POSIX ã§èŠå®ãããŠããèšèªã«ã¯ãã·ã§ã«ã³ãã³ãèšèª (sh)ããawk ããã°ã©ã èšèª (awk)ããC èšèª (c99)ããFORTRAN (fort77)ãã® 4 ã€ããããŸããïŒsed ããã¥ãŒãªã³ã°å®å
šã§ããããèšèªãšèšããªãããªãã®ã§ãããèšèªã®ãããªäœ¿ãæ¹ãããŠããäŸã¯æ®ã©ãªãã®ã§çããŠããŸãããã ãäžã®äžã«ã¯sed ã ãã§äœããããã§ã¹ããããªã¹ãããããã§ããïŒ
ãã® POSIX ã§èŠå®ãããèšèªã®äžã§ãå®é POSIX ã§èšèªä»æ§ãæšæºåãããŠããã®ã¯ã·ã§ã«ã³ãã³ãèšèªãš awk ã®ã¿ã§ããC èšèªãš FORTRAN ã«é¢ããŠã¯ä»ã®å£äœã§æ±ºãããã®ãæ¡çšããŠããã ãã§ãããã®éããã·ã§ã«ã³ãã³ãèšèªïŒãšã€ãã§ã« awkïŒã®æ©èœã®è²§åŒ±ãã«ã€ãªãã£ãŠããã®ã§ã¯ãªãããšèããŠããŸãã
äŸãã° C èšèªã«ã¯ POSIX ã§æ¡çšãããŠãã C99 ã ãã§ãªã C89ãC90ãC95ãC11ãC17 ãšä»ãæ¹å®ãç¶ããããŠããŸããFORTRAN ã 60ã77ã90ã95ã2003ã2008ã2018 ãšæ¹å®ãç¶ããããŠããŸãããã€ãŠã¯ POSIX ã§æ¡çšãããŠãã C èšèªã¯ C89 ã§ãããããããäœå¹ŽãåŸã«ã¯æ°ããããŒãžã§ã³ã«çœ®ãæããã§ãããïŒFORTRAN 㯠次㮠Issue 8 ã§åé€ãããããã§ããïŒãPOSIX ã®æ¹éãšã¯ç¡é¢ä¿ã« C èšèªã¯äŸ¿å©ã«ãªã£ãŠãããŸãã
äžæ¹ POSIX ã¯èšèªä»æ§ãçå®ããå£äœã§ã¯ãªã Portable Operating System Interface ã®ç¥ã§ãããšãããç§»æ€å¯èœãª OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ããæšæºåããå£äœã§ããã·ã§ã«ã³ãã³ãèšèªã«ïŒãšãŠã䟿å©ã§èª°ãããæãŸããŠãããããªïŒæ°ããªä»æ§ã远å ãããšããŠãç§»æ€æ§ã¯åäžããŸãããèšèªã®æšæºåå£äœãš POSIX ã§ã¯ç®æããŠããå Žæãéããã POSIX ãã·ã§ã«ã³ãã³ãèšèªã䟿å©ãã®ç¹ããæ¹è¯ããããšã¯ãããŸãããPOSIX ãã·ã§ã«ã³ãã³ãèšèªã«æ°ãã仿§ã远å ãããšãããããã¹ãŠã®ã·ã§ã«ã§å®è£ ãããŠååãªç§»æ€æ§ããããšèªãããšããããã§ããC èšèªã FORTRAN ã®ããã«èšèªä»æ§ãæ¹è¯ããç¬ç«ããå£äœã¯ååšããªãããšããã·ã§ã«ã³ãã³ãèšèªã®èšèªä»æ§ã®è²§åŒ±ãã«ã€ãªãã£ãŠããã®ã ãšèããŠããŸããã·ã§ã«ã³ãã³ãèšèªã awk ã«ã ISO ã ANSI ãªã©ã®ç¬ç«ããæšæºåå£äœãå¿ èŠãªã®ãããããŸããã
ç°å¢æ¯ã®ã³ãã³ãã®äºææ§ãäœã
ã·ã§ã«ã¹ã¯ãªããã¯å€ãã®å Žåå€éšã³ãã³ããåŒã³åºããŸããããã®å€éšã³ãã³ããç°å¢ã«ãã£ãŠäºææ§ãäœãã§ããäŸãã° macOS ã§äœã£ãã·ã§ã«ã¹ã¯ãªããã Linux ã§åããªããªã©ãšããããšã床ã
çºçããŸãããã®çç±ã¯ããŸããŸãªãã³ããŒãåãååã®ã³ãã³ããããããäœã£ãŠããããã§ãïŒãã©ãŠã¶ã§èšãã° MS ã IE ãäœã£ãŠ Google ã Chrome ãäœããããªãã®ïŒãjq ã git ã®ãããªãã®ã¯éçºããŠããæãäžã€ã ããªã®ã§äºææ§ã®åé¡ã¯ããŒãžã§ã³éãã«ãããã®ãããã§ãããps ã tr ãšèšã£ãåºæ¬çã§å€ãã³ãã³ãã»ã©è€æ°ã®ãã³ããŒãããããäœã£ãŠããããäºææ§ãäœããªããŸãã
ãã®åé¡ãæ¹åããããã«çãŸããã®ã POSIX ãªã®ã§ããå°æ¥ã®æ¡åŒµã®äœå°ãæ®ãããã«æäœéã®æ©èœããæšæºåããŠãããã现ããå·®ç°ããªããããšã¯ããªãã£ãïŒçްããæåãå®è£ ã«ä»»ããïŒããå®å šãªäºææ§ã¯å®çŸãããã®ã«ã¯ãªããŸããã§ããããã®ããã©ãã®ç°å¢ã§ãåãããã«ããã«ã¯ãå€ãã®ãããããŠããŠãå¿ èŠã«ãªã£ãŠããŸããåäžã®ã³ãŒãã§ã©ãã§ãåãä»ã®èšèªãããæããã«ç§»æ€æ§ãäœããªã£ãŠããŸããŸãã
ãããä»ã®èšèªã®å Žåã¯ãã³ãã³ãã䜿ã£ãŠè§£æ±ºãããããªåé¡ã¯ãã®èšèªçšã®ã©ã€ãã©ãªã䜿ã£ãŠè§£æ±ºã§ãããã®æ¹ãæšæºåºåãããŒã¹ããŠããŒã¿ãè§£éããå¿ èŠããªãããã©ãŒãã³ã¹ããããããåºæ¬çãªåŠçã«ããããã³ãã³ãã䜿ãçç±ããããŸãããä»ã®èšèªã§ã³ãã³ãã䜿ãããšããããšããã°ãé«åºŠãªæ©èœãæã£ãã³ãã³ãããã£ãŠãããèšèªãã䜿ãããã®èšèªãã€ã³ãã£ã³ã°ã©ã€ãã©ãªããªãæãããã§ããä»ã®èšèªã§ã¯åäžã®ã³ãŒãã§ã©ãã§ãåãããã«ã©ã€ãã©ãªãç°å¢ã®éããåžåããŠããŸãããã·ã§ã«ã¹ã¯ãªããã§ã¯åäžã®ã³ãŒãã§ã©ãã§ãåãããã«ããã«ã¯ãç°å¢ã®éãã®åžåãèªåã§ãããã°ãªãããšãŠã倧å€ãªäœæ¥ã«ãªããŸãã
ã¡ãªã¿ã« POSIX ã®æ¹éã¯ïŒWHATWG ã®å§åã«ãã£ãŠïŒïŒã©ã®ãã©ãŠã¶ã§ãåãããã«åãããã«ãã¹ãŠãå³å¯ã«æ±ºããããšã«ãã W3C ãšã¯æ£åå¯Ÿã®æ¹éã§ãïŒåè äž»èŠãã©ãŠã¶ã®HTML5äºæãã¹ãçµæãW3Cãå ¬è¡šãHTML5æä»£ã®ãã©ãŠã¶äºææ§ã¯ãããé«ããªãïŒãããã«äœè«ãšãªããŸããçŸåšã¯ W3C ãå ¬è¡šããŠãã HTML5 ã¯å»æ¢ãããŸããïŒåè ã©ãããŠHTML5ã廿¢ãããã®ã ïŒã
åŠçé床ãé ãïŒç¹ã«å€éšã³ãã³ãã®èµ·åïŒ
ã·ã§ã«ã¹ã¯ãªããã¯ã€ã³ã¿ããªã¿ã§ããã¹ã¯ãªããèšèªã§ããããããã³ã³ãã€ã©èšèªã«æ¯ã¹ãã°é
ããã®ãšãªããŸãããã ãæ¥µç«¯ã«é
ãããã§ã¯ãããŸãããæ¥µç«¯ã«é
ããªã£ãŠããŸãå Žåã®åå ã®æ®ã©ã¯å€éšã³ãã³ãã倿°èµ·åããŠããããã§ãïŒäŸãã° jq ã§åã£ãŠããããŒã¿ãã«ãŒãã§åãããã®äžã§ sed ãåŒã³åºããªã©ïŒãå€éšã³ãã³ãèªäœã¯ïŒäžè¬çã«ïŒC èšèªãªã©ã§å®è£
ãããŠããããå®è¡èªäœã¯éãã®ã§ãããå€éšã³ãã³ãã®èµ·åãé
ãã§ãããã®ããã·ã§ã«ã¹ã¯ãªããã§ã¯é
ãããªãããã«ã¯å€éšã³ãã³ãã®èµ·åãã§ããã ããããªãããå¿
èŠããããŸãã
å°æ°ã®èšç®ããã€ããªããŒã¿ã®åŠçãã§ããªãïŒé ãïŒ
äžéšã®ã·ã§ã«ãé€ããã·ã§ã«ã¹ã¯ãªããã§ã¯æŽæ°ã®èšç®ããã§ããŸããããã€ããªããŒã¿ãæ±ãããšãåºæ¥ãŸããããã®ãããããã®åŠçãããå Žåã¯å€éšã³ãã³ãïŒbc ã³ãã³ãã od ã³ãã³ããªã©ïŒã«é Œãããšã«ãªããŸããããããããšã§æ±ãããšèªäœã¯ã§ããŸãããåé
ã®å€éšã³ãã³ãã®èµ·åãé
ããšããåé¡ã«ã¶ã¡åœãããŸãããã®ããæ°è»œã«å°æ°ã®èšç®ããã€ããªããŒã¿ãæ±ãããšãåºæ¥ããå€éšã³ãã³ãã®èµ·ååæ°ãå°ãªããªãããã«èšèšãããªã©ä»ã®èšèªã§ã¯äžèŠãªã·ã§ã«ã¹ã¯ãªããç¹æã®èšèšããããªããªããã°ãããŸããã
è€éãªããŒã¿æ§é ãæ±ããªã
åºæ¬çã«ã·ã§ã«ã¹ã¯ãªããã§ã¯æ§é äœãéå±€æ§é ãæã£ãè€éãªããŒã¿æ§é ãæ±ãããšãã§ããŸããïŒksh ã ãšå€å°è€éãªããŒã¿æ§é ãæ±ããæ©èœããã£ããããŸãïŒã飿³é åã§ãã䜿ããªãã·ã§ã«ããããŸãã POSIX æºæ ã«éããšæ®éã®é åã§ãã䜿ãããšãã§ããŸããããããã¯å·¥å€«æ¬¡ç¬¬ã§ã·ã§ã«ã¹ã¯ãªããã§ãå®è£ ã¯å¯èœã ãšæããŸããä»ã®èšèªã§ã¯ã¹ããŒãã®å®è£ ã§ããã®ã«ããããŠã·ã§ã«ã¹ã¯ãªããã ãšé¢åã§éçºã³ã¹ããæããããã©ãŒãã³ã¹ãæªããªã£ãŠããŸããŸãã
ã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãå°ãªã
çç¡ã§ã¯ãããŸããããä»ã®èšèªã®ããã«æåã§åºã䜿ãããŠããå°æ¥ã«æž¡ã£ãŠãèªç±ã«äœ¿ããä¿¡é Œæ§ã®é«ãã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ã¯ååšããŸããããã®ããå¿ èŠãªãã®ãããã°èªåã§äœããã°ãªããŸãããèªåã§éçºããå Žåã«ç§»æ€æ§ãé«ãã©ã€ãã©ãªãäœãããšãããªãã°èªåã§ã·ã§ã«ãã³ãã³ãã®äºææ§ã®éããåžåããŠåç°å¢ã§åãããšããã¹ãããã°ãªããéçºã³ã¹ããæãã£ãŠããŸããŸãã
ãã¡ããèªåã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯äœããæè¡åãã€ããããšã¯éèŠã§ãããå®éã®ä»äºã§ã¯ã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãäœãããšã¯çŽæ¥ã®ä»äºã«ã¯ãªããŸããããã§ã«ããä¿¡é Œæ§ã®ããã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ã䜿ãããšã¯çç£æ§ãä¿¡é Œæ§ãç§»æ€æ§ãäžããããã«éèŠãªããšã§ããUnix å²åŠã§æåãªãUNIXãšããèãæ¹âãã®èšèšææ³ãšå²åŠãã§ã P69ãå®ç6:ãœãããŠã§ã¢ã®æ¢åãæå¹ã«æŽ»çšãããã§ãè¯ãããã°ã©ãã¯ããã³ãŒããæžããå倧ãªããã°ã©ãã¯ããã³ãŒããåããŠããããç¬èªæè¡çå矀ãé¿ããããã³ãŒããä»è ãæ¢åãšããŠäœ¿ãã®ãèªããããšä»äººãäœã£ãã³ãŒããå©çšãããŸãå©çšãããããšã®éèŠããè¿°ã¹ãŠããŸããããããªããã·ã§ã«ã¹ã¯ãªããã«ã¯ã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãããŸããããŸããã
è£è¶³ ãã¡ããå€éšã³ãã³ãïŒã©ã€ãã©ãªãšèããããšãã§ããããããå«ãããšå€ãã®ã³ãã³ãã䜿ããããã§ãããã·ã§ã«é¢æ°ã§äœãããã©ã€ãã©ãªã¯ã·ã§ã«é¢æ°ã«ã¢ã¯ã»ã¹ã§ãããå°ããããŒã¿ãæ±ãéã®ããã©ãŒãã³ã¹ããããšããã¡ãªãããæããããå€éšã³ãã³ãã ãã§ã¯ã¯ååã§ã¯ãããŸããããŸãä»ã®èšèªã®ã©ã€ãã©ãªã¯åºæ¬çã«ã©ã®ç°å¢ã§ãåãããã«åäœããŸãããäžèšã§æžããããã«ç°å¢ããšã®ã³ãã³ãã®äºææ§ã¯äœãã§ãã
泚æ çŸæç¹ã§ã¯ã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ã¯å°ãªãã§ãããå°æ¥ã¯è§£æ±ºããã§ããããšç§ã¯æšæž¬ããŠããŸãã
ãã¡ã€ã«ã®ã©ã³ãã ã¢ã¯ã»ã¹ãã§ããªã
ksh ãé€ããã¡ã€ã«ã®ã©ã³ãã ã¢ã¯ã»ã¹ãã§ããŸããããã®ããã©ã³ãã ã¢ã¯ã»ã¹ã®ãããªç©ãå¿ èŠãªå Žåãå°ãããã¡ã€ã«ã«åãããªã©ãã¡ã€ã«ã»ãã£ã¬ã¯ããªæ§é ãã©ã³ãã ã¢ã¯ã»ã¹ãã§ãããããªæ§é ã«èšèšããå¿ èŠããããŸããããããããããšããã°ã©ã ã¯è€éãªãã®ãšãªã£ãŠããŸãéçºã³ã¹ããæãã£ãŠããŸããŸãã
ãŸããã¡ã€ã«ã®ãªãŒãã³ãã¯ããŒãºãéãåŠçã§ãããã倿°ã®å°ãããã¡ã€ã«ã«åããŠããŸããšããã©ãŒãã³ã¹ã«åœ±é¿ãåºãŠããŠããŸããŸãããå¹ççã«ããã«ã¯ãŠãŒã¹ã±ãŒã¹ã«äŸåãããã£ã¬ã¯ããªæ§é ã«ããå¿ èŠãããããå°æ¥çãªå€æŽã«å¯Ÿããæè»æ§ã倱ãããŠããŸããŸãã
ãããã¯ãŒã¯ã¢ã¯ã»ã¹ãã§ããªã
bashãkshãyashãzsh çäžéšã®ã·ã§ã«ã§ã¯ TCP / UDP éä¿¡ãã§ãããããŸãã POSIX æºæ ã®ç¯å²ã§ã¯ãããã¯ãŒã¯ã¢ã¯ã»ã¹ãè¡ãããšãã§ããŸããããŸã TCP / UDP éä¿¡ãã§ãããšããŠãäžäœãããã³ã«ïŒäŸ HTTPïŒçã®ã©ã€ãã©ãªã¯ãªãããèªåã§äœããã°ãªããéçºã³ã¹ããæãã£ãŠããŸããŸãã
ãã¡ãããããã¯ãŒã¯éä¿¡ãè¡ããã³ãã³ãïŒcurl ã wget çïŒãçµç±ããã°éæ¥çã«ãããã¯ãŒã¯éä¿¡ãè¡ãããšãã§ããŸããèšèªã§ãã€ãã£ãã§å®è¡ããã®ã«æ¯ã¹ããšã§é¥ãã«é
ããªã£ãŠããŸããŸããããŒã¿ããŒã¹ãµãŒããŒãªã©å€ãã®ãµãŒããŒãšã®éä¿¡ã«ã¯ãããã¯ãŒã¯éä¿¡ã䜿çšããŸããäŸãã° MySQL ãšã®éä¿¡ã§ã¯ä»ã®èšèªã¯ãã€ãã£ãã©ã€ãã©ãªã䜿ã£ãŠé«éã«ã¢ã¯ã»ã¹ã§ããŸãããã·ã§ã«ã¹ã¯ãªããã®å Žåã¯ãææª SQL ãå®è¡ãããã³ã«æ¯åèµ·åãé
ã mysql ã³ãã³ããå®è¡ããããšã«ãªã£ãŠããŸããŸãã
ãã¹ã¯ãããã»ã¹ããã¢ããªãªã©ã® GUI ãæã€ã¢ããªã®éçºã¯ã§ããªã
CLI ã ããåœããåã ãšæããããããããŸããããå®ã¯ ksh ã®æ¡åŒµãšã㊠dtksh ã tksh ãšãã£ã GUI ããŒã«ããããšé£æºã§ããã·ã§ã«ã¹ã¯ãªãããæžãããšãåºæ¥ãå®è£ ãååšããŠããŸããããªã®ã§äžå¿ã·ã§ã«ã¹ã¯ãªããã§ã°ã©ãã£ã«ã«ãªã€ã³ã¿ãŒãã§ãŒã¹ãäœæããããšã¯ã§ããããã§ãããã ãçŸåšã¯ãã®ãããªããšãã§ããã·ã§ã«ã¯ç§ãç¥ãéãååšããŸãããïŒãŸããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã HTML ã§äœãããã® HTML ãã·ã§ã«ã¹ã¯ãªããã䜿ã£ãŠãã³ãã¬ãŒãããçæãããããã®ããšã¯åºæ¥ããšæããŸããããã®å Žåã¯ãŠãŒã¶ãŒã€ã³ã¿ãã§ãŒã¹ãäœã£ãŠãèšèªã¯ HTML ãšããã¹ãã§ããããïŒ
æ¬æ Œçãªã²ãŒã ãäœãã®ã«é©ããŠããªã
éå»ã«ã¯æå㪠Rogue ãªã©ãã£ã©ã¯ã¿ããŒã¹ã®ã²ãŒã ããããŸããã Gnome-Terminal ãªã©ç»åã衚瀺ããããšãåºæ¥ãã¿ãŒããã«ãããã®ã§ããã«ã²ãŒã ãã¢ããã³ãã£ãŒã²ãŒã ã§ããã°ååé¢çœãã²ãŒã ã¯äœãããšæããŸããããããã²ãŒã ã®é¢çœããšã€ã³ã¿ãŒãã§ãŒã¹ã¯é¢ä¿ãããŸããã
ããã§èšã£ãŠããã®ã¯ããããé©åãªéžæãªã®ãïŒããšãã話ã§ããæ¬æ Œçã«ã²ãŒã ãäœããšãããã°ã©ãã£ã«ã«ãªç»é¢ã鳿¥œãå¿ èŠã«ãªããŸãããã¹ããçããããªãã©ãããã©ãŒã ãžã®å¯Ÿå¿ãèããå¿ èŠããããŸããäžå¯èœã§ã¯ç¡ããšæããŸããããã£ãŠã¿ããçšåºŠã®æå³ã«ãããªããŸããã
ãã¡ãããææŠããšããæå³ã§ã¯é¢çœããšã¯æããŸããã©ããã£ãŠé³æ¥œã鳎ãããïŒç»åã¯ã©ããããïŒ3Dæç»ã¯å¯èœãïŒãªã¢ã«ã¿ã€ã ãªããŒå ¥åã¯å®çŸã§ãããïŒåžžèãšã¯éãæ¹æ³ã§äœããšããããªèª²é¡ãèŠã€ãããŸããããããã¢ã€ãã¢ã§è§£æ±ºããã®ã¯æ¥œããã§ãããããã©ããã£ãŠè§£æ±ºãããã解説ããèšäºã¯ãšãŠãè峿·±ããã®ã«ãªãïŒãŠã±ãïŒãšæããŸãã
ãããã²ãŒã ã¥ãããšããç¹ã§ã¯ãã®å ã«ã¯ç¶ããŸããããªããªããã·ã§ã«ã¹ã¯ãªããã§ã²ãŒã ãäœããæã®ããŸããŸãªèª²é¡ãšãã®è§£æ±ºçã¯ãæ®éã®ããæ¹ãããŠããã°çºçããªãããã§ããã€ãŸãæ¬æ¥ãªãã°ååšããã¯ãããªã課é¡ãèªåã§çã¿åºããŠãããèªåã§è§£æ±ºããã«éããŸãããæ®éã«ã²ãŒã ãäœããšããç®çã§ããã°ãã§ã«ç¢ºç«ãããå¹çã®è¯ãæ¹æ³ã䜿ãã®ããã¹ãã§ãã
ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®éçºã«é©ããŠããªã
ã·ã§ã«ã¹ã¯ãªããã¯ãããã¯ãŒã¯éä¿¡ãã§ããªãããã¢ã¯ã»ã¹ãåŸ ã¡åããããšãã§ããŸããããã®ããä»ã®èšèªã§äœã£ãããã«ãŠã§ã¢ïŒãŠã§ããµãŒããŒçïŒã䜿ãããšã¯å¿ é ãšãªããŸããããã«ãããã¯ãŒã¯éä¿¡ãã§ããªããã CGI ã䜿ããããããŸãããCGI ã¯ã¢ã¯ã»ã¹ã®ãã³ã«ããã»ã¹èµ·åããŸããããã¯çæéã§åŠçãçµããå°ããªããã»ã¹ã倿°äœæããããšãšãªããå€éšã³ãã³ãã®å®è¡ãé ããšãã圱é¿ãã¢ãã«åããŠããŸããŸãã
ãã® CGI ãšããã®ã¯ 2000 幎以åã«äž»ã« Perl ã§äœ¿ãããŠããæè¡ã§ãšã³ã¿ãŒãã©ã€ãºã®åéã§ã¯ãšã£ãã«éå»ã®ãã®ãšãªã£ãŠããŸããçŸåšã§ã¯è² è·ãå°ããã·ã¹ãã ãå人åãã®æ Œå®ãªã¬ã³ã¿ã«ãµãŒããŒã§ã¢ããªã±ãŒã·ã§ã³ã䜿ããšããããã«ãã䜿ãããŠããŸããããŸãæã®æè¡ã«è©³ããæ¹ã§ããã° CGI ã®ããã©ãŒãã³ã¹ã®äœããæ¹åããããã® FastCGI ãšããã®ãç¥ã£ãŠãããããããŸããããããã¯ã·ã§ã«ã¹ã¯ãªããã®äžè¬çãªå€éšã³ãã³ãã飿ºããŠåŠçãè¡ããšããäœ¿ãæ¹ã«ãŸã£ããåœãŠã¯ãŸããŸããã倧éæã«èšããš FastCGI ã¯ã¢ã¯ã»ã¹æã®å€éšã³ãã³ãã®èµ·åãæå¶ããããã®ãã®ã§ãããããã·ã§ã«ã¹ã¯ãªããã§ã¯ã¹ã¯ãªããã®äžã§å€æ°ã®å€éšã³ãã³ããèµ·åããŠããŸãããããã ãæåã® 1 åãæžãããçšåºŠã§ã¯ FastCGI ã®å¹æã¯æ®ã©ãããŸãããïŒãããã FastCGI ã«å¯Ÿå¿ããã·ã§ã«ã¹ã¯ãªãããã¬ãŒã ã¯ãŒã¯ã¯ååšããªããã䜿ããªããšããæ ¹æ¬çãªåé¡ããããŸããïŒ
CGI ã«ã€ããŠã¯ä»¥äžã®ã¹ã©ã€ãããããããããšæããŸããïŒãã ããã㯠Perl ã®ã¹ã©ã€ãã§ããããã§æããããŠãããã©ãŒãã³ã¹äžã®åé¡ã解決ããæè¡ã¯ã·ã§ã«ã¹ã¯ãªããã§ã¯äœ¿ããŸãããïŒ
倧éã®ããŒã¿ãæ±ãåŠçãé ãæè»æ§ããªãä¿¡é Œæ§ç¢ºä¿ãé£ãã
äžè¬è«ãšããŠããŒã¿ã®åŠçé床ãäžããããã«ã¯ãã¹ãã¬ãŒãžãããéãã¡ã¢ãªã掻çšããããšã§åŠçé床ããããŸããã¡ã¢ãªãšã¹ãã¬ãŒãžã®é床ã®éãã¯ãé«é㪠SSD ã䜿ã£ããšããŠãæ°ååãHDD ã§ããã°æ°çŸå以äžã®å·®ããããŸããäŸãã°ããŒã¿ããŒã¹ãµãŒããŒã§ããã°å€ãã®ã¡ã¢ãªãæèŒãããŒã¿ã®å€ããåžžã«ã¡ã¢ãªã«ä¿æããããšã§é«ãããã©ãŒãã³ã¹æ§ãå®çŸããŠããŸãããã·ã§ã«ã¹ã¯ãªããã®å Žåã¯ãã³ãã³ããå®è¡ãããã³ã«ãã¹ãŠã®ããŒã¿ãã¡ã¢ãªèªã¿èŸŒã¿ãåŠçãçµãããšãã¹ãŠã®ããŒã¿ãè§£æŸããŠããŸãããã¡ã¢ãªã®é«éæ§ãç¡é§ã«ãªã£ãŠããŸããŸããïŒããã¯éã«èšãã°ãçã¡ã¢ãªã§ããããšããé·æã«ããªããŸããïŒ
ãããåŠçã®ãããªãã©ã¡ãã«ããããŒã¿ããã¹ãŠèªã¿èŸŒãã§åŠçãããå Žåã«ã¯ã·ã§ã«ã¹ã¯ãªããã§ãåé¡ãªãã®ã§ããããŠã§ããµãŒãã¹ãªã©ã§çºçããã©ã³ãã ã¢ã¯ã»ã¹ãããŒã¿æŽæ°ã䌎ããããªå Žåã«ã¯ãã·ã§ã«ã¹ã¯ãªããã¯ããŒã¿ããŒã¹ãµãŒããŒã®ä»£ããã«ã¯ãªããŸããããããã¯ãŒã¯ã¢ã¯ã»ã¹ãã§ããªããããŠã§ããµãŒãã¹ãšããŒã¿ããŒã¹ãµãŒããŒãåé¢ãããšããåºæ¬çãªèšèšããå®è£ ãå°é£ã«ãªã£ãŠããŸããŸãïŒåè 3å±€ã¢ãŒããã¯ãã£ïŒããããç¡çããã·ã§ã«ã¹ã¯ãªããã§å®è£ ãããšä»ã®èšèªã§ã¯äžèŠãªèšèšãå¿ èŠãšãªãéçºã³ã¹ããããã£ãŠããŸãäžã«ããã©ãŒãã³ã¹äžã®é倧ãªåé¡ãçºçããå¯èœæ§ãé«ããªã£ãŠããŸããŸãã
ããŒã¿ããŒã¹ïŒRDBãNoSQL çïŒã¯å€ãã®ããŒã¿ããŒã¹ç ç©¶è
ïŒäŸ ãšãã¬ãŒã»Fã»ã³ããïŒã®ç ç©¶ãå
ã«ããŠãã倧å°ã®å€ãã®äŒæ¥ãããã°ã©ããŒã«ããçºæã§ããä¿¡é Œæ§ã確ä¿ãããèŠæ±ã®å€åã«æè»ã«å¯Ÿå¿ãããªã©å®éã®ãŠãŒã¹ã±ãŒã¹ãæºããããã®å€ãã®æ©èœãæã£ãŠããŸããUnix ã«ããã³ãã³ãã®çºæãååæŽããããã®ã§ããããããã«ããŒã¿ç®¡çã®å°éå®¶ãäœã£ããã®ãè¶
ããããšã¯ã§ããŸãããawk ã sed ã«ãã£ãŠããŒã¿ãäœåºŠãå å·¥ããŠããããæ¹ã¯çŸåšã®ããŒã¿ãã©ãå å·¥ãããŠãããããã¡ãã¡åºåããŠç¢ºèªããªããã°ããããããœãŒã¹ã³ãŒãããç¶æ
ãèªã¿åãã®ããããã¥ãããªããŸããé€
ã¯é€
å±ã§ããå°çšã®ããã«ãŠã§ã¢ã«æ¯ã¹ããšã·ã§ã«ã¹ã¯ãªãããšã·ã§ã«ã³ãã³ãã¯å€ãã®æ©èœãäžè¶³ããŠããŸãã
è£è¶³1 RDB ã§æ¡çšãããŠãã SQL ã¯ããŒã¿ãæè»ã«åç §ã»æŽæ°ã»å å·¥ããããã®å°çšã®èšèªã§ããPOSIX ããé·ãæŽå²ãæã£ãåœéæšæºèŠæ ŒïŒSQL86 㯠1986 幎ã«ç»å Žãåè æšæºSQLèŠæ ŒïŒã§ãããŸããŸãªè£œåã§åãããã«äœ¿ãããšãã§ããŸããå€å°ã®æ¹èšã¯ãããŸããããããèšã£ããã·ã§ã«ã¹ã¯ãªããã¯ãã£ãšå€ãã®æ¹èšããããŸããSQL ã¯ããã°ã©ããªãå¿ ãç¥ã£ãŠããã¹ããã®äžã€ãšèšã£ãŠãéèšã§ã¯ãããŸãããç¹ã«æ¥åã·ã¹ãã ç³»ã§ããã°å¿ ã䜿çšããããšã«ãªãã§ãããã
è£è¶³2 NoSQL ã¯ååãããSQL ã䜿ããªãããšããšåéãããããããããŸããããSQL ã䜿ã RDB ãšã¯å¥ã®èãã§ãã©ã³ã¶ã¯ã·ã§ã³åŠççãè¡ããã®ã§ SQL ã䜿ããªããã° NoSQL ã«ãªããšããããã§ã¯ãããŸãããNoSQL ã¯å¥ã®èãæ¹ã䜿ãããã«ãŠã§ã¢ã®äžã€ã§ããã·ã§ã«ã¹ã¯ãªããã§ã¯æä»å¶åŸ¡ãªã©ãããå Žåã«ãã³ãã³ãã䜿ããªããŠã¯ãªããªãããã«é ãããŸãå°çšã®ã©ã€ãã©ãªäœ¿ãä»ã®èšèªã«æ¯ã¹ããšååãªä¿¡é Œæ§ãå®çŸããããã«é£ãããšã©ãŒåŠçãå¿ èŠãšãªããŸãã
è£è¶³3 ããã«ãŠã§ã¢ã¯èšèªã ãã§ç¬èªã§å®è£ ãããšå€§å€ãªäœæ¥ã«ãªããã®ãè©ä»£ããããŠé«ãä¿¡é Œæ§ãããã©ãŒãã³ã¹ã容æã«å®çŸããããã®ãã®ã§ãïŒåè ããã«ãŠã§ã¢ïŒãäŸãã° RDB ã§ããã°ããŒã¿ãå¹çããã¡ã¢ãªã«èªã¿èŸŒãã§ç°¡åãªã³ãã³ãïŒSQLïŒã§æè»ã«ããŒã¿ã®å å·¥ããŠååŸããããšãåºæ¥ãŸãããããšåãããšãèšèªãã³ãã³ãã ãã§ç¬èªã§å®è£ ããããšã®å€§å€ãã¯å®¹æã«æ³åã§ãããšæããŸãããªãèšèªã OS ã ãã§ãªããã®éã«äœ¿ãããã«ãŠã§ã¢ãæ°å€ãçãŸãããããŠäœ¿ãããŠããã®ãïŒãã®çãã¯ããã«ãŠã§ã¢ãéèŠã§ãã倧ããªã¡ãªãããããããã§ãã
è£è¶³4 ããã«ãŠã§ã¢ãšããçšèªãåããã¥ãã人ãããããç¥ããŸããããäŸãã°ã¯ã©ãŠããµãŒãã¹ïŒAWS ã GCPïŒã§æäŸããŠãããµãŒãã¹ã®ã»ãšãã©ã¯ããã«ãŠã§ã¢ã«è©²åœããŸããä»ã©ã䜿ããªãã§äœããªããŠããããªããšèšã£ãŠãéèšã§ã¯ãããŸãããïŒ
ã¯ã©ãŠããµãŒãã¹ãšã®é£æºãé£ãã
倧æµã®ã¯ã©ãŠããµãŒãã¹ã§ã¯ã·ã§ã«ãã·ã§ã«ã¹ã¯ãªãããã䜿ããããã« CLI ã³ãã³ããçšæããŠããïŒäŸãã° GCP ã§ããã° gcloud ã³ãã³ãã gsutil ã³ãã³ãïŒã®ã§ãããã¢ããªã±ãŒã·ã§ã³ããæ¬æ Œçã«äœ¿ãã®ã§ããã° API ã䜿ãããšã«ãªããŸããããããªããã·ã§ã«ã¹ã¯ãªããçšã® API ã©ã€ãã©ãªãçšæãããŠããããšã¯ãããŸããã倧æµã¯ HTTP ã䜿ã£ã JSON ããŒã¹ã®ãããã³ã«ãªã®ã§ curl ã³ãã³ãã jq ã³ãã³ãã䜿ãã°åŒã³åºãããšã¯åºæ¥ãã®ã§ããããã¯ãå€éšã³ãã³ãã®èµ·åãé
ããšããåé¡ã«ã¶ã¡åœãããŸããèšèªãã€ãã£ãã®ãããã¯ãŒã¯éä¿¡ãã䜿ã£ãå°çšã®ã©ã€ãã©ãªãçšæãããŠããä»ã®èšèªãšæ¯ã¹ãã°ãã·ã§ã«ã¹ã¯ãªããã¯å§åçã«äžå©ã§ãã
ãªã¢ã«ã¿ã€ã åŠçã«é©ããŠããªã
POSIX ã§ã¯ãªã¢ã«ã¿ã€ã API ãèŠå®ãããŠããŸãããã·ã§ã«ã¹ã¯ãªããããããããçŽæ¥äœ¿ãããšã¯ã§ããŸãããä»ã®èšèªã§å€éšã³ãã³ããäœãã°äžå¿ã¯ã·ã§ã«ã¹ã¯ãªãããšé£æºãããããšãå¯èœã«ãªããšã¯æããŸãããã³ãã³ãã®èµ·åã®é ãããªã¢ã«ã¿ã€ã åŠçã«åœ±é¿ãããã€ãééä¿¡ã«ãããŠããããã¡ããããããæ£ç¢ºãªã¿ã€ãã³ã°ãåãããšãé£ãããªããŸããïŒãããã¡ã¯ç¡å¹ã«ããããšãã§ããŸãããããã¯ããã§å€§å¹ ã«ããã©ãŒãã³ã¹ãäœäžããŸãïŒããŸããã©ã¡ãã«ããä»ã®èšèªã§å€éšã³ãã³ãã®éçºãå¿ èŠã§ãããªãã°ããã¹ãŠãã®èšèªã§äœã£ãæ¹ã楜ã§ãããããæ£ç¢ºã«åäœããã®ã§ã·ã§ã«ã¹ã¯ãªããã䜿ãã¡ãªããããããŸããã
泚æ ãªã¢ã«ã¿ã€ã ã·ã¹ãã ãšããã®ã¯æ±ºããããæéå ã«åŠçãå®äºããããšãä¿èšŒããã·ã¹ãã ã®ããšã§ãããããå¿ ãããåŠçãéããšããæå³ã«ã¯ãªããŸããããå€ãã®äºäŸã§ã¯çãæéã§åå¿ããªããã°ãããªããã®ã§ãããšç§ã¯èªèããŠããŸãã
2021-10-22 è¿œèš ãã·ã§ã«ã¹ã¯ãªããã®ããŒã¿åºåã¿ã€ãã³ã°ãé ãïŒ ããã¯ãã€ãéä¿¡ã«èµ·å ãããããã¡ãªã³ã°ãåå ãããšãã話ãã§è©³ãã説æã远å ããŠããŸãã
ã·ã§ã«ã¹ã¯ãªããã®çæãšæããªããã®
ææ³ãç¬ç¹ã§å¯èªæ§ãäœã
ããã¯ã·ã§ã«ã¹ã¯ãªããã®ææ³ãå匷ããŠããªãããããã¯æ
£ããŠããªãã ãã®ããšã§ãã倿°ã«ä»£å
¥ããæã«ç©ºçœããããªããšããæ¯èŒããæã® [] ã«ç©ºçœãå¿
èŠã§åããã¥ãããšèšãããŸãããããã«å¥åŠãªææ³ã§ããããã£ãããã ãã®ããšãã§ã¯ãããŸãããïŒ ã©ã®èšèªã«ãç¹åŸŽçãªææ³ã¯ãããŸããä»ã®èšèªã§èšãã°ã»ãã³ãã³ãå¿
èŠã ãšããããã¯ãäœãæã«ã€ã³ãã³ããå¿
èŠã ãšããã®çšåºŠã®ããšã§ããã·ã§ã«ã¹ã¯ãªããã¯ç°¡åãªèšèªïŒïŒïŒã§ãããããã«ããã«å匷ããªãã§äœ¿ã£ãŠãããããããã ãã§ãïŒææ³ãããã«è§£èª¬ããã«å¿çšç·šã»äœ¿ãæ¹ã®äŸã°ãã玹ä»ããŠããæ¬ãå€ãã®ãåå ã®äžã€ã ãšã¯æããŸããïŒã倿°ã®ä»£å
¥ãæ¯èŒã®æžãæ¹ã¯ã·ã§ã«ã¹ã¯ãªããã®ææ³ã®æç§æžããã£ããšããã°æåã®åæ°ããŒãžä»¥å
ã«æžããŠãããããªãã®ã ãšæããŸãããã®æç¹ã§ããã£ãŠãããšãããã·ã§ã«ã¹ã¯ãªããã®ææ³ãå
šãå匷ããŠãªããšããæããŸããã
ã·ã§ã«ã¹ã¯ãªããã®ææ³ã«æ £ããŠããªãã®ã§ããã°ïŒæ £ããŠãããšããŠãïŒ ShellCheck ãå°å ¥ããã®ãã·ã§ã«ã¹ã¯ãªãããèŠããè¿éã§ããäžèšã®ãããªç©ºçœãäžèŠã ã£ããå¿ èŠã ã£ããããå ŽåãææããŠãããŸãããã¡ããã·ã§ã«ã¹ã¯ãªããã®"ææ³"ã«ã€ããŠè§£èª¬ããŠããæè¡æžããŠã§ããµã€ããèŠãŠå匷ããã®ãããã§ããããè±èªãåŸæã§ããã° POSIX ã®ã·ã§ã«ã³ãã³ãèšèªãåèã«ããŠãè¯ããšæããŸãããéçºè ãæ¥æ¬äººã§ãã yash ã®æ¥æ¬èªããã¥ã¡ã³ãã倧ãã«åèã«ãªããšæããŸããïŒyash ç¬èªã®æ¡åŒµãããã®ã§æ³šæãå¿ èŠã§ããïŒ
awk ã sed ãæ£èŠè¡šçŸãé£ãã
awk ã sed ã¯å¥ã®ã³ãã³ãã®è©±ãªã®ã§å³å¯ã«ã¯ã·ã§ã«ã³ãã³ãèšèªã®è©±ã§ã¯ãããŸããããã·ã§ã«ã¹ã¯ãªããããããåŒã³åºãã³ãã³ãã§ããã·ã§ã«ã¹ã¯ãªãããæžãã®ã§ããã°äœ¿ããããã«ãªã£ãã»ããè¯ããšæããŸããé£ãããšããã®ã¯äºå®ãããããŸããããããã ãã§ã¯ã·ã§ã«ã¹ã¯ãªããã®çæãšã¯èšããŸããã誰ããå匷ããŠãªããã®ã¯é£ãããšæãããã®ã§ããç¹ã«æ£èŠè¡šçŸã¯äŸ¿å©ã§ä»ã®èšèªã§ããã䜿ããã®ãªã®ã§èŠããã¹ãã§ããããã³ãã³ãã«ãã£ãŠäœ¿ããæ£èŠè¡šçŸã埮åŠã«ç°ãªããšããåé¡ã¯ãããŸãããä»ã®èšèªã§ãåãã ã£ããããã®ã§ã·ã§ã«ã¹ã¯ãªããç¹æã®åé¡ãšã¯èšãåããŸããã
ãšããã§æè¿ç§ãæã£ãŠãããšãªã®ã§ãããã¿ããªæååå 工㫠awk ã sed ã䜿ããããªã®ã§ã¯ãªãã§ããããïŒå®ã¯å€æ°å±éïŒãã©ã¡ãŒã¿å±éïŒã䜿ãã°æååå 工㯠awk ã sed ãªã©ã®å€éšã³ãã³ãã䜿ããã«å®è£
ããããšãã§ããŸããäŸãã° sed ã®ä»£ãã㯠${str//FOO/BAR} ãšããã ãã§ããPOSIX ã·ã§ã«ã®ç¯å²ã§ã¯çœ®æããã¥ããã§ãããããã§ãå®è£
ããããšã¯ã§ããŸãã
ãã¡ãã倿°å±éã§ãã¹ãŠããã¹ããšèšã£ãŠããããã§ã¯ãªããæšæºåºåããªã¹ãïŒè€æ°ã®ããŒã¿ãè€æ°è¡ã§è¡šçŸãããŠãããã®ïŒã«ãªã£ãŠãããã®ã¯ awk ã sed ã䜿ã£ãã»ããè¯ãã§ãããããã³ãã³ã眮æãå©çšããŠååŸããåäžã®å€ã®å Žåã¯å€æ°å±éã䜿çšããæ¹ãã·ã³ãã«ã§ããã©ãŒãã³ã¹ãè¯ãã§ãã
éçºè ãå°ãªã
ã·ã§ã«ã¹ã¯ãªããã«è©³ããéçºè ã¯å°ãªãã§ãããŸããã€ãã䜿ã£ã颿°åèšèªã«è¿ãèãã®èšèšãå¿ èŠãšãªããããã¯ä»ã®èšèªãšã¯ç°ãªãããé©åã«ã·ã§ã«ã¹ã¯ãªããã䜿ããããã«ãªããŸã§ã®æè²ã³ã¹ããæãã£ãŠããŸããŸããå®éã®éçºã®çŸå Žã§ã¯ãçæãã«ã¯ãªããŸãããå³å¯ã«èšãã°äººã®åé¡ã§ããããã·ã§ã«ã¹ã¯ãªããã®åé¡ã«ã¯å«ããŸããã
ãã¹ãããããã°ããã¥ãã
ã·ã§ã«ã¹ã¯ãªããã¯ãã¹ãããã¥ãããšèšãããŸãããããã¯ã·ã§ã«ã¹ã¯ãªããèªèº«ã®åé¡ãšèšããããã·ã§ã«ã¹ã¯ãªãããæ±ãåé¡ãç°å¢ã«å¯äœçšãäžãããã®ãå€ãããã ãšæã£ãŠããŸããåæ§ã®åŠçãè¡ããã®ãä»ã®èšèªã§äœã£ããšããŠããã¹ãã¯ãã¥ãããªãã§ãããã
ãã¡ããã·ã§ã«ã¹ã¯ãªããã«ããã¹ããã¬ãŒã ã¯ãŒã¯ã¯ãããŸããGitHub ã®ã¹ã¿ãŒãå€ãé ïŒæåé ïŒïŒã« Bats-coreãshUnit2ãShellSpec ããããŸããã¡ãªã¿ã« ShellSpec ã¯ç§ãéçºããŠãããŠããããã¹ãçšã®ãã¹ããã¬ãŒã ã¯ãŒã¯ã§ãð
ãããã°ã BASH DebuggerïŒkshdb ãš zshdb ããããŸãïŒãªã©ããããŸããããã䜿ãã° gdb ã®ããã«ãã¬ãŒã¯ãã€ã³ããã¹ãããå®è¡ãã§ããŸããïŒãã ãç§ã¯å°ãã颿°åäœã§éçºããŠããã¹ã¿ã€ã«ã§ãããã¬ã䜿ãã»ã©ã§ã¯ãªããã䜿ã£ãŠããŸããïŒãã·ã§ã«ã«ã -n ã«ããææ³ãã§ãã¯æ©èœãæèŒãããŠããŸãã -x ã -v ãªãã·ã§ã³ã䜿ãããšã§ã·ã§ã«ã®å®è¡ãã°ãåºåããããšãã§ããŸããã¡ãªã¿ã«å®è¡ãã°ã¯æ®éã«äœ¿ããšåºåãå€ããªãããã§å€§ããªã¹ã¯ãªããã§ã¯å®çšãšã¯èšãé£ãã§ãã ShellSpec ã«ã¯ -x ãªãã·ã§ã³ã®ãµããŒãæ©èœãæèŒãããŠããã颿°åäœã§ãã¹ãããããšã§ãã°åºåã颿°åäœã§åºåããããšãã§ããããã«ãªã£ãŠããŸãã
ä»ã®èšèªã§ã³ãã³ããäœããã·ã§ã«ã¹ã¯ãªããã§å®è¡ãã
ãããŸã§èŠãŠãããšããã·ã§ã«ã¹ã¯ãªããã«ã¯å€æ°ã®æ¬ ç¹ããããŸããã·ã§ã«ã¹ã¯ãªããã®é©çšç¯å²ã¯åºæ¬çã«ãããåŠçã§ããåŠçãéå§ããã®ãŸãŸæ¢ãŸãããšãªãå®è¡ããŠçµäºããçšéã«äœ¿ããŸãããŠã§ããµãŒãã¹ãããŒã¿ããŒã¹ãµãŒããŒãã¹ããã¢ããªã®ããã«èµ·åããŠåŸ ã¡ç¶ãåå¿ããã£ããããã«åŠçãããŠçµæãè¿ããããªçšéã«ã¯å šãåããŠããŸãããééã£ãçšéã«äœ¿ãããšã¯äžå¯èœã§ãªããšãçç£æ§ãããã©ãŒãã³ã¹ãä¿¡é Œæ§ã¯å€§ããäœäžããŸãããã§ããªãã¯ãªãããæ¡çšããçç±ã«ããªãã§ãã ããã
ããã§ããªãã·ã§ã«ã¹ã¯ãªããã¯éèŠãªèšèªã§ããäžè¬çã«ã¯ã·ã§ã«ã¹ã¯ãªããã§ã¡ã€ã³ã®åŠçãè¡ããã®ã§ã¯ãããŸãããããããªã³ãã³ããå®è¡ããããã飿ºãããããã«äœ¿ããŸããã³ãã³ãã¯äœ¿ããã³ãã³ãïŒsedãawkãjq çïŒãèŠã€ããã°ããã¡ãããããã䜿ã£ãŠããã®ã§ãããããé©åãªãã®ããªããã°ãã®æã¯èªåã®æã§å°çšã®ã³ãã³ãäœããŸãããã®ã³ãã³ããäœãããã®èšèªã¯ C èšèªãGoãRustãJavaScriptãRubyãPython çãªãã§ã䜿ãããšãã§ããŸãããã®æããããã®ã³ãã³ãã«ããããªæ©èœãè©°ã蟌ãã®ã§ã¯ãªããç¬ç«ããŠè¡ãããšãåºæ¥ãå°ããªã³ãã³ãã«ããŠãããŸãããããŠããããã·ã§ã«ã¹ã¯ãªããã§èªç±ã«çµã¿æ¿ããŠåŒã³åºãããããã·ã§ã«ã¹ã¯ãªããã®éèŠãªåœ¹å²ã§ããã³ãã³ãåäœã§ç¬ç«ããŠããã°ããããã䞊åå®è¡ãããããšã容æã«ãªããŸããã©ã®èšèªã§ã³ãã³ãã䜿ã£ãŠããã®èšèªçšã®äžŠååŠçã³ãŒããæžãããšãªããã·ã§ã«ã¹ã¯ãªããã§äžŠåå®è¡ãããããšãå¯èœã«ãªããŸããã€ãŸãã·ã§ã«ã¹ã¯ãªããã¯ä»ã®èšèªã®ã³ãŒãã®æçšæ§ãããé«ããããšãåºæ¥ããã®ãªã®ã§ãã
ã·ã§ã«ã¹ã¯ãªãããèŠæã ãããšåäžã®ä»ã®èšèªã§äœãããšãã人ãå€ãã§ããïŒéã«ã·ã§ã«ã¹ã¯ãªããã ãã§äœãããšãã人ãããŸããã»ã»ã»ãïŒç§ãïŒïŒãå ã ã·ã§ã«ã¹ã¯ãªãã㯠Unix ã§ C èšèªã§äœãããã³ãã³ããšçµã¿åãããŠäœ¿ãããã«äœããããã®ã§ããã·ã§ã«ã¹ã¯ãªãããšä»ã®èšèªãçµã¿åãããŠäœ¿ãããšã¯æåããæ³å®ãããŠããæ£ããããæ¹ãªã®ã§ããæã¯ã³ãã³ããäœãã®ã« C èšèªãããããéžæè¢ããããŸããã§ãããå¥ã« C èšèªã«åºå·ããå¿ èŠã¯ãããŸãããUnix ã®æä»£ã«ã¯ C èšèªããããããªãã£ããã C èšèªã䜿ãããŠãããšããã ãã§ä»ã¯ C èšèªãããå¹ççã§é«ãçç£æ§ãšç§»æ€æ§ãå®çŸã§ããèšèªãããã€ããããŸãããããã®èšèªã®ãã¡åé¡ã解決ããã®ã«é©åãªèšèªã䜿ã£ãŠã·ã§ã«ã§å®è¡ã§ããå°ããªæ©èœãæã£ãã³ãã³ããäœããã·ã§ã«ã¹ã¯ãªããã§çµã¿åãããŠäœ¿ãã®ãæ£ããäœ¿ãæ¹ã§ããäŸãã° Ruby ã§äœã£ã颿°ãš Python ã§äœã£ã颿°ãçµã¿åãããããšã¯é£ããã§ããããããããã³ãã³ãã«ããŠããŸãã°æšæºå ¥åºåãšããå ±éã®ã€ã³ã¿ãŒãã§ãŒã¹ãä»ããŠã·ã§ã«ã¹ã¯ãªããã§çµã¿åãããããšãã§ããŸãããã®ããã«ã·ã§ã«ã¹ã¯ãªããã¯ã³ãã³ããå¥ã ã®èšèªã§äœãããŠãããšããŠããããããçµã¿åãããããšãåŸæã§ããã°ã«ãŒïŒæ¥çå€ïŒèšèª1ãšãåŒã°ããŠããŸããã³ãã³ããçµã¿åãããã®ã«å¿ èŠãªã®ã¯æšæºå ¥åºåãé©åã«äœ¿çšããããšã ãã§ããïŒåè ã·ã§ã«ã¹ã¯ãªããã®ããã®è¯ããã¶ã€ã³ ïœ expr ãš bc ããç¥ãèšèšã®éã ïœïŒ
Unix å²åŠã«ã¯ããœãããŠã§ã¢ãæ¢åïŒãŠãïŒãšããŠäœ¿ãããã·ã§ã«ã¹ã¯ãªããã«ãã£ãŠæ¢åã®å¹æãšç§»æ€æ§ãé«ããããšããèšèããããŸããæ¢åãšã¯åå©çšå¯èœãªã¢ãžã¥ãŒã«ã®ããšã§ããããã§ããåå©çšå¯èœãªã¢ãžã¥ãŒã«ãšã¯ã³ãã³ãã®ããšã§ãããã®ã³ãã³ããã·ã§ã«ã¹ã¯ãªããã«ãã£ãŠäŸ¡å€ãé«ãããšããã®ã Unix å²åŠã®èãæ¹ã§ããç¹°ãè¿ããŸããå šãŠãã·ã§ã«ã¹ã¯ãªãããšæ¢åã®ã³ãã³ãã ãã§ãããªããã°ãªããªããšããããšã§ã¯ãããŸããããã㯠Unix å²åŠã®èãæ¹ã§ã¯ãããŸãããé©åãªã³ãã³ãããªããã°èªåã§äœããšããã®ãéèŠãªäºã§ããã³ãã³ãã¯å¿ ãããæ±çšçãªãã®ïŒä»ã®ãããžã§ã¯ãã§ã䜿ãããããªãã®ïŒã«ããå¿ èŠã¯ãããŸãããé©åãªåäœã§ç¬ç«ããŠããã°åå©çšå¯èœïŒç°ãªãã·ã§ã«ã¹ã¯ãªããããã䜿ããããïŒã«ãªããŸããã·ã§ã«ã¹ã¯ãªããã§ããã®ãé£ããåŠçãªãã°ä»ã®èšèªã§äœãã°ããã®ã§ããä»ã®èšèªã§æžãããšãåºæ¥ã人ã§ããã°èªåã§ã³ãã³ããäœãããšã¯é£ããããšã§ã¯ãªãã§ãããã
ã·ã§ã«ã¹ã¯ãªããã¯ããªããã·ã§ã«ã¹ã¯ãªãã以å€ã®èšèªã§äœã£ãã³ãã³ãã®äŸ¡å€ãåŒãäžãããã®ã§ããã·ã§ã«ã¹ã¯ãªããã¯ãšãã ã¡ã§ããããããªãããããŸãããæããã·ã§ã«ã¹ã¯ãªããã«ã¶ã€ããã®ã¯ãããŸããããïŒãšãããåçŽã«äŸ¿å©ãªãã®ã䜿ããªãã®ã¯ãã£ãããªãã§ããïŒïŒ
-
Python ãã°ã«ãŒèšèªãšèšãããŠãããããŸããããã®ããã«ã¯ Python çšã«å°çšã®ã¢ãžã¥ãŒã«ãå¿ èŠã ã£ãããããããã·ã§ã«ã¹ã¯ãªããã®ã°ã«ãŒèšèªãšã¯æå³ãç°ãªããŸããã·ã§ã«ã¹ã¯ãªããã®å Žåã¯æšæºå ¥åºåãšãããã¹ãŠã®èšèªã§å ±éã§äœ¿ãããŠããã€ã³ã¿ãŒãã§ãŒã¹ãå©çšããŸãã â©