1. Cèšèªãšã¯äœã
Cèšèªã¯ããã«ç 究æã®ããã¹ã»ãªãããŒã«ãã£ãŠéçºããããããã°ã©ãã³ã°èšèªã®1ã€ã§ãã圌ã®éçºç®æšã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®å¶åŸ¡ãšã·ã¹ãã ããã°ã©ãã³ã°ã®ããã®èšèªãåµåºãããšãããã®ã§ããã
ãã®çµæãCèšèªã¯é«åºŠãªè¡šçŸåãšåŒ·åãªæ§èœãæã€ãæœè±¡åãšçŽæ¥çãªããŒããŠã§ã¢å¶åŸ¡ãåæã«å¯èœã«ããèšèªãšãªã£ãŠããŸãã
ããã«ããã®ç¹æ§ãããCèšèªã¯çŸåšãæãåºã䜿çšãããŠããããã°ã©ãã³ã°èšèªã®1ã€ãšãªã£ãŠãããå€ãã®ææ°ããã°ã©ãã³ã°èšèªã®åºç€ãšããªã£ãŠããŸãã
1.1 Cèšèªã®æŽå²
Cèšèªã®èµ·æºã¯1972幎ããã«ç 究æã«æŒããUNIXãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®éçºã«é¡ããŸããåæã®UNIXã·ã¹ãã ã¯ã¢ã»ã³ããªèšèªã§èšè¿°ãããŠããŸãããããã®åŸCèšèªã«ç§»è¡ããŸããã
ãã®ãããCèšèªã¯åœåããã·ã¹ãã ããã°ã©ãã³ã°ãéèŠããèšèšããªãããããŒã¿ããªãã£ãšå¹çæ§ãæ±ããããŸããã
ãããã®ç¹æ§ã¯Cèšèªãä»ã®ããã°ã©ãã³ã°èšèªã«å€§ããªåœ±é¿ãäžããããšãšãªããçŸåšãåºã䜿çšãããŠããèŠå ã®äžã€ãšãªã£ãŠããŸãã
1.2 Cèšèªã®ç¹åŸŽ
Cèšèªã®æ倧ã®ç¹åŸŽã¯ããã®äœã¬ãã«ãªæäœãšé«ã¬ãã«ãªæœè±¡åãåæã«å¯èœã§ããç¹ã§ããããã«ãããããŒããŠã§ã¢ã«çŽæ¥ã¢ã¯ã»ã¹ãã€ã€ããããé«åºŠãªæŒç®ãè¡ãããšãã§ããŸãã
ãŸããCèšèªã¯éçåä»ããæ¡çšããŠãããããã³ã³ãã€ã«æã«ãšã©ãŒãã§ãã¯ãå¯èœã§ããããã°ã®æ€åºã容æã«ãªã£ãŠããŸãã
ããã«ãCèšèªã¯ãã€ã³ã¿ãæ§é äœãªã©ã®ã匷åãªããŒã«ãããã°ã©ãã«æäŸããŠããŸãããããã®ããŒã«ã䜿çšããããšã§ãããŒã¿æ§é ã®ã«ã¹ã¿ãã€ãºãã¡ã¢ãªç®¡çãªã©ãããŸããŸãªã¿ã¹ã¯ãè¡ãããšãã§ããŸãã
1.3 Cèšèªã®çšé
Cèšèªã¯åºãç¯å²ã®çšéã«äœ¿çšãããŠããŸããæãäžè¬çãªã®ã¯ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãçµã¿èŸŒã¿ã·ã¹ãã ã®éçºã§ãã
ãŸããããã©ãŒãã³ã¹ãéèŠãšãªãã¢ããªã±ãŒã·ã§ã³ãäŸãã°ããŒã¿ããŒã¹ãã²ãŒã ãšã³ãžã³ãªã©ã®éçºã«ãçšããããŸãã
ããã«ãCèšèªã¯å€ãã®ãã€ã¬ãã«ãªããã°ã©ãã³ã°èšèªã®å®è£ ããã³ã³ãã€ã©ã®äœæã«ãé©ããŠããŸããããã¯ãCèšèªãã·ã¹ãã ã¬ãã«ã®ã¿ã¹ã¯ãå¹ççã«åŠçã§ããããã§ãã
1.4 Cèšèªã§ã§ããããš
Cèšèªãé©ããŠããã¿ã¹ã¯ã¯å€å²ã«æž¡ããŸãã硬çŽãªå¶åŸ¡ãå¿ èŠãªããŒããŠã§ã¢ã¬ãã«ã®ããã°ã©ãã³ã°ãããæœè±¡çãªåé¡è§£æ±ºãŸã§ãCèšèªã¯å€ãã®åé¡ã解決ã§ããŸãã
ç¹ã«ãCèšèªã§æãåŸæãšããé åã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®éçºãããŒã¿ããŒã¹ãœãããŠã§ã¢ã®æ§ç¯ãã²ãŒã ãšã³ãžã³ã®äœæãã³ã³ãã€ã©ãã€ã³ã¿ããªã¿ã®éçºãªã©ãšãã£ããããã©ãŒãã³ã¹ãéèŠãšãªãã¢ããªã±ãŒã·ã§ã³ã®éçºã§ãã
ç¹°ãè¿ãã«ãªããŸãããCèšèªã®åŒ·åãªç¹æ§ã«ãããããŒããŠã§ã¢ã¬ãã«ã®æäœãšé«åºŠãªæœè±¡åãçµã¿åãããŠããããã®ã¿ã¹ã¯ã«åãçµãããšãå¯èœã§ãã
2. Cèšèªã®ã©ã€ãã©ãªãšã¯äœã
ãŸãã¯ãCèšèªã®ã©ã€ãã©ãªãšã¯äœãªã®ãããããç解ããŠãããŸããããCèšèªã®ã©ã€ãã©ãªãšã¯ããããããå®è£ ãããŠããé¢æ°ãå€æ°ã®ã»ããã®ããšãæããŸãããããã¯ããããããã°ã©ãã³ã°ã·ãŒã³ã§äœ¿çšããããããéåžžã«å€§åãªã³ã³ããŒãã³ããšãªããŸãããŸããããããçµã¿åãããããšã§ãæ°ããªããã°ã©ã ãäœæããããšãå¯èœã«ãªãã®ã§ãã
Cèšèªã®ã©ã€ãã©ãªã¯ãããŸããŸãªåœ¢ã§æäŸãããŸãããã®äžã§ããããããŒãã¡ã€ã«åœ¢åŒã®ã©ã€ãã©ãªãæã代衚çã§ããããã¯ããããããå®çŸ©ãããé¢æ°ãå€æ°ãç°¡åã«åã蟌ãããšãã§ããããã°ã©ãã³ã°ã®å¹çãé£èºçã«åäžãããŸãã
ãã®ä»ã«ããã©ã€ãã©ãªã¯ãœãŒã¹ã³ãŒã圢åŒããã€ãããã¯ãªã³ã¯ã©ã€ãã©ãªïŒDLLïŒåœ¢åŒãªã©ãæ ¹åºéšåãããã°ã©ãã³ã°ã«é¢é£ããæ©èœãæäŸããŠãããŸãããããã¯äžè¬çãªã©ã€ãã©ãªåæ§ãæ¢åã®ã³ãŒããæ°èŠããã°ã©ã ãšçµã¿åãããŠäœ¿çšããããšã§ãããã°ã©ãã³ã°äœæ¥ãã¹ã ãŒãºã«éè¡ããããšãå¯èœã«ãªããŸãã
2.1 ã©ã€ãã©ãªã®åºæ¬ã³ã³ã»ãã
ã§ã¯ãã©ã€ãã©ãªã®åºæ¬ã³ã³ã»ããã«ã€ããŠè§ŠããŠãããŸãããããåç¥ã®éããã©ã€ãã©ãªã¯è€æ°ã®ããã°ã©ã ãå ±æã§ãããããªåœ¢ã§æäŸããããé¢æ°ãã¯ã©ã¹ã®éåãªã®ã§ããããã«ãããäžåºŠäœæããã³ãŒããä¿åãåå©çšããããšã容æã«ãªããŸãã
ãŸããã©ã€ãã©ãªã¯äºææ§ãšç§»æ€æ§ãåäžãããããã®ã¡ã«ããºã ãæäŸããŸãããããããå®çŸ©ãããã©ã€ãã©ãªé¢æ°ã䜿çšããããšã§ãããã°ã©ã ãç°ãªããã©ãããã©ãŒã ã§ãåäœããããã«ããããšãå¯èœã§ãã
ããã«ãã©ã€ãã©ãªã¯ã³ãŒãã®äžã§ç¹°ãè¿ã䜿çšãããéšåãã²ãšãŸãšãŸãã«ããŠããããšã§ãããã°ã©ã ã®å¯èªæ§ãšä¿å®æ§ãåäžããã圹å²ãæãããŸããããã¯ãç¹ã«å€§èŠæš¡ãªãããžã§ã¯ããããŒã ã§ã®éçºã«ãããŠéèŠãªæ©èœãšãªããŸãã
2.2 ã©ã€ãã©ãªã®å©ç¹
ããã§ã¯ãCèšèªã®ã©ã€ãã©ãªãæã€æ§ã ãªå©ç¹ã«ã€ããŠèª¬æããŸãããŸããã©ã€ãã©ãªã䜿çšããæ倧ã®å©ç¹ã¯ãéçºæéã®ççž®ã«ãªããŸããã©ã€ãã©ãªãæäŸããé¢æ°ãå€æ°ã¯ãã§ã«å®è£ æžã¿ãªããããããã䜿ãããšã§ããã°ã©ã ãçŽ æ©ãçµã¿ç«ãŠãããšãå¯èœã«ãªããŸãã
ãŸããã©ã€ãã©ãªã®å©çšã«ãã£ãŠãã³ãŒãã®ä¿å®æ§ãåäžããŸããåãæ©èœãç¹°ãè¿ã䜿ãå Žåã§ããã©ã€ãã©ãªã«ãŸãšããŠä¿ç®¡ããŠããããšã§äžè²«æ§ã®ããåäœãä¿èšŒããä¿å®ã容æã«ããããšãå¯èœã§ãã
ããã«ãå€æ°ã®äººã«ãã£ãŠãã¹ããæ€èšŒãè¡ãããŠããã©ã€ãã©ãªã䜿çšããããšã§ãä¿¡é Œæ§ã®é«ãã³ãŒããäœãããšãã§ããŸããããã¯ãç¹ã«åçšã¢ããªã±ãŒã·ã§ã³ãªã©ã§é«åºŠãªä¿¡é Œæ§ãæ±ããããéœåäžã倧ããªå©ç¹ãšèšããŸãã
2.3 ã©ã€ãã©ãªã®éžã³æ¹
次ã«ãCèšèªã®ã©ã€ãã©ãªãéžã¶éã®ãã€ã³ãã«ã€ããŠè§£èª¬ããŸããéžæããã©ã€ãã©ãªã¯ãéçºããã¢ããªã±ãŒã·ã§ã³ã®èŠä»¶ãç®çã«ãã£ãŠæ±ºãŸããŸããäŸãã°ãGUIãéçºãããããžã§ã¯ãã§ã¯ãGTK+ ã WinAPI ãªã©ã®ã©ã€ãã©ãªãäžè¬çã«äœ¿ãããŸãã
ã©ã€ãã©ãªã®éžæã«ã¯ã人æ°ãè©äŸ¡ã倧ããªææšãšãªããŸããããç¥ãããŠããã©ã€ãã©ãªãéžã¶ããšã§ããã®ã©ã€ãã©ãªã«ã€ããŠã®æ å ±ãè±å¯ã«ãããå°ã£ããšãã«ã¯ãµããŒããåãããããªã©ã®å©ç¹ããããŸãã
ãŸããã©ã€ã»ã³ã¹ãéèŠãªèŠçŽ ãšãªããŸããåçšç®çã§ã®å©çšããœãŒã¹ã³ãŒãã®å ¬éãªã©ãèŠä»¶ã«ãã£ãŠã¯ã©ã€ã»ã³ã¹ã確èªããããšãå¿ èŠã§ãããã®ãããéžã¶ã©ã€ãã©ãªã®ã©ã€ã»ã³ã¹ã«æ³šæãæããŸãããã
2.4 ã©ã€ãã©ãªã®æŽ»çšäºäŸ
æåŸã«ãCèšèªã®ã©ã€ãã©ãªãã©ã®ããã«æŽ»çšãããŠããã®ããããã€ãã®äºäŸãæããŸããäžã€ç®ã¯ãã²ãŒã éçºã®å Žé¢ã§ããCèšèªã®ã©ã€ãã©ãªã«ã¯ãã³ã©ã€ããŒã®æ€åºãã°ã©ãã£ãã¯ã®æç»ãªã©ãã²ãŒã éçºã«å¿ èŠãªé«åºŠãªæ©èœãæäŸãããã®ãå€ãååšããŸãã
äºã€ç®ã®äºäŸã¯ããµãŒããŒãµã€ãã®éçºã§ããCèšèªã¯ãã®åŠçé床ãšäžè²«æ§ããããµãŒããŒãµã€ãã®éçºã«é »ç¹ã«æŽ»çšãããŠããŸãããã®éã«ã¯ããããã¯ãŒãã³ã°ãããŒã¿ããŒã¹ã¢ã¯ã»ã¹ãªã©ãç¹å®ã®ã¿ã¹ã¯ã®ããã®ã©ã€ãã©ãªãçšããããŸãã
äžã€ç®ã®äºäŸã¯ãçµã¿èŸŒã¿ã·ã¹ãã ã®éçºã§ããCèšèªã¯æè»æ§ãšå¹çæ§ãããçµã¿èŸŒã¿ã·ã¹ãã ã®éçºã«è¯ã䜿ãããŸãããã®éã«ã¯ãããŒããŠã§ã¢å¶åŸ¡ããªã¢ã«ã¿ã€ã åŠçãè¡ãããã®ã©ã€ãã©ãªã掻çšãããŸãã
3. Cèšèªã®æšæºã©ã€ãã©ãª
Cèšèªã®åŒ·åãªç¹ã®äžã€ã¯ããã®å€åœ©ãªæšæºã©ã€ãã©ãªã®ååšã§ããããã¯ãã³ãŒããå¹ççã«ããããã°ã©ãã³ã°ã®å¹ ã倧ãã«åºããããã®çµ¶å¯ŸçãªããŒã«ã®åœ¹å²ãæãããŠããŸãã
æšæºã©ã€ãã©ãªã¯ãããã°ã©ãã³ã°ã«åºç¯å²ãªåºæ¬æäœãšé¢æ°ãæäŸããŸãããããã¯ãã¡ã¢ãªã®ç®¡çãæååæäœãæ°åŠçé¢æ°ããã¡ã€ã«æäœãå ¥åºåå¶åŸ¡ãªã©ã®äžè¬çãªã¿ã¹ã¯ã«å¯Ÿå¿ããŸãã
3.1 æšæºã©ã€ãã©ãªã®æŠèŠ
Cèšèªæšæºã©ã€ãã©ãªã¯ãå ±æããäžé£ã®é¢æ°ãå®æ°ããã¯ãã®éåäœã§ãããããã¯å šãŠãCèšèªã§æžãããããã°ã©ã ã§å©çšã§ããCèšèªã®ã³ã¢ããŒããšããããååšã§ãã
ãã®äž»ãªç®çã¯ãäžè¬çãªããã°ã©ãã³ã°ã¿ã¹ã¯ãç°¡çŽ åããããšã§ããããã®ç¹ã§éçºè ãçŽé¢ããå€ãã®åé¡ã解決ããŸãããŸããæšæºã©ã€ãã©ãªãé©åã«äœ¿çšããããšã§ãã³ãŒãããã綺éºã§å¹ççã«ãªãã§ãããã
3.2 æšæºã©ã€ãã©ãªã®äœ¿ãæ¹
æšæºã©ã€ãã©ãªã䜿çšããããã«ã¯ããŸãããã«å«ãŸããé¢æ°ããã¯ããæ£ããç解ããããšãå¿ èŠã§ãã次ã«ãå¿ èŠãªã©ã€ãã©ãªããããžã§ã¯ãã«å«ããããã®æ£ããæ§æã䜿çšããããšãæ±ããããŸãã
äžè¬çã«ã¯ã䜿çšãããã©ã€ãã©ãªã«å¯Ÿå¿ããããããã¡ã€ã«ãããã°ã©ã ã®å é ã«ã€ã³ã¯ã«ãŒãããããšã§ãããéæããŸããäŸãã°æ°åŠçãªé¢æ°ã䜿çšããã«ã¯math.hããããã¡ã€ã«ãã€ã³ã¯ã«ãŒãããŸãã
3.3 æšæºã©ã€ãã©ãªã®æ³šæç¹
æšæºã©ã€ãã©ãªã¯éåžžã«äŸ¿å©ãªäžæ¹ã§ããã®äœ¿ãæ¹ã«ã¯ããã€ã泚æãã¹ããã€ã³ããååšããŸããæ£ããç解ããã«äœ¿çšãããšãäºæãã¬çµæãçããå¯èœæ§ããããŸãã
äŸãã°äžéšã®é¢æ°ã¯ãããµã€ããšãã§ã¯ãããæã€å¯èœæ§ããããŸããã€ãŸãããã®é¢æ°ã䜿ã£ãçµæãšããŠãããã°ã©ã ã®ä»ã®éšåã«åœ±é¿ãåãŒãå¯èœæ§ããããŸãããã®ãããªå Žåã«ã¯äžæ®µãšæ³šææ·±ã䜿çšããå¿ èŠããããŸãã
3.4 æšæºã©ã€ãã©ãªã®æŽ»çšäºäŸ
æšæºã©ã€ãã©ãªãããã°ã©ãã³ã°ã«ã©ã®ããã«æŽ»çšã§ããããå ·äœçãªäŸãäžã€ã玹ä»ããŸããããäŸãã°ãæéãæ¥ä»ã«é¢ããä»»åã¯ããtime.hãã©ã€ãã©ãªã§ç°¡åã«åŠçã§ããŸãã
ãã®ã©ã€ãã©ãªã䜿çšããã°ãçŸåšã®æå»ãååŸããããæå»ã®åœ¢åŒãå€æããããç¹å®ã®æå»ãŸã§ã®åŸ æ©ãªã©ã容æã«è¡ããŸãããããã£ãå ·äœçãªå©çšã·ãŒã³ã¯ãæšæºã©ã€ãã©ãªã®éèŠæ§ãšæçšæ§ã瀺ããŠããŸãã
4. ããããã®Cèšèªã©ã€ãã©ãª
æ¬ç« ã§ã¯ãããã°ã©ãã³ã°ã®ããŸããŸãªé åã§å¹ççã«éçºãé²ããããšãã§ããããããã®Cèšèªã©ã€ãã©ãªãã玹ä»ããŸããããããã®ã©ã€ãã©ãªãæã€ç¹æ§ãæ©èœãç解ããèªåã®éçºã«æé©ãªã©ã€ãã©ãªãèŠã€ããããããåèã«ããŠã¿ãŠãã ããã
ããã§çŽ¹ä»ããã©ã€ãã©ãªã¯ããããã¯ãŒã¯ããã«ãã¹ã¬ããã»ãã«ãããã»ã¹ãã°ã©ãã£ãã¯ã¹ãããŒã¿ããŒã¹ãšãã£ã4ã€ã®ã«ããŽãªãŒã«åããŠããŸãã
ããã§ã¯ãå ·äœçãªã©ã€ãã©ãªã®çŽ¹ä»ã«ç§»ããŸãããã
4.1 ãããã¯ãŒã¯é¢é£ã®ã©ã€ãã©ãª
libcurlã¯ãéåžžã«ãã䜿çšãããCèšèªã®ãããã¯ãŒã¯ã©ã€ãã©ãªã®äžã€ã§ããæ§ã ãªãããã³ã«ã«å¯Ÿå¿ããéä¿¡ãæäŸããæ©èœçã«éåžžã«å å®ããŠãããããå¹ åºããããã¯ãŒã¯ããã°ã©ãã³ã°ã§æŽ»èºããŸãã
ããã«ãä»åã¯Windowsã®ãããã¯ãŒã¯é¢é£ã®ã©ã€ãã©ãªãšããŠãWinINetãæšå¥šããŸãããã®ã©ã€ãã©ãªã¯ãWindows OSã«çµã¿èŸŒãŸããŠããã©ã€ãã©ãªã§ãHTTPSãFTPãªã©ã®ãããã³ã«ã䜿çšãããããã¯ãŒã¯æäœãå¯èœã§ãã
WebAPIã®æäœãéä¿¡ããã°ã©ã ã®éçºãè¡ãéã«ããããã®ã©ã€ãã©ãªã¯å€§å€åœ¹ç«ã€ããšã§ãããã
4.2 ãã«ãã¹ã¬ããïŒãã«ãããã»ã¹é¢é£ã®ã©ã€ãã©ãª
次ã«ããã«ãã¹ã¬ããã»ãã«ãããã»ã¹ãæ±ãããã®ã©ã€ãã©ãªãšããŠãpthreadããã³OpenMPãã玹ä»ããŸãã
pthreadã¯ãPOSIXã¹ã¬ãããæ±ãããã®æšæºAPIãæäŸããã©ã€ãã©ãªã§ããã«ãã¹ã¬ããããã°ã©ã ã®éçºã«äžå¯æ¬ ã§ããäžæ¹ãOpenMPã¯ã³ã³ãã€ã©ã¬ãã«ã§ãã«ãã¹ã¬ããããµããŒãããã©ã€ãã©ãªã§ãããã°ã©ã äžã§ç°¡åã«ã¹ã¬ããã®çæãåæãåå²ãªã©ãè¡ãããšãå¯èœã§ãã
ãããã®ã©ã€ãã©ãªãçšããããšã«ãããCèšèªã§å¹ççãªãã«ãã¹ã¬ããã»ãã«ãããã»ã¹ããã°ã©ãã³ã°ãè¡ãããšãå¯èœãšãªããŸãã
4.3 ã°ã©ãã£ãã¯ã¹é¢é£ã®ã©ã€ãã©ãª
è€éãªã°ã©ãã£ãã¯ã¹ãæç»ããéã«äŸ¿å©ãªã©ã€ãã©ãªãšããŠã¯ãOpenGLãæšå¥šããŸããå®éã«ã²ãŒã éçºã3Dã¢ããªã³ã°ãªã©ã§å¹ åºãçšããããŠããŸãã
ç¶ããŠãUIéçºã«ãããã©ã€ãã©ãªãšããŠGTK+ã玹ä»ããŸããGTK+ã¯GIMPãGNOMEãªã©ã§äœ¿çšãããŠããGUIãã¬ãŒã ã¯ãŒã¯ã§ãCèšèªã䜿çšããã¯ãã¹ãã©ãããã©ãŒã ã®ã¢ããªã±ãŒã·ã§ã³éçºã«åªããã©ã€ãã©ãªã§ãã
ãããã®ã©ã€ãã©ãªã掻çšããã°ãåçã§èŠãç®ã«ãåªããã€ã³ã¿ãŒãã§ãŒã¹ãæã€ã¢ããªã±ãŒã·ã§ã³ãéçºããããšãã§ããŸãã
4.4 ããŒã¿ããŒã¹é¢é£ã®ã©ã€ãã©ãª
æåŸã«ãããŒã¿ããŒã¹æäœãããç°¡æã«ãå¹çè¯ãè¡ãããã®ã©ã€ãã©ãªãšããŠãsqlite3ãšlibmysqlclientã玹ä»ããŸãã
sqlite3ã¯ãéåžžã«è»œéã§ãããªãããSQLæšæºã«æºæ ããŠãããããæ·±è¬é æ ®ããããŒã¿ç®¡çãå¯èœãªCèšèªã©ã€ãã©ãªã§ããlibmysqlclientã¯ãMySQLããŒã¿ããŒã¹ãžã®æ¥ç¶ãæäœã容æã«è¡ãããšãã§ããã©ã€ãã©ãªã§ãã
ãããã®ã©ã€ãã©ãªã䜿çšããããšã§ãããŒã¿ããŒã¹ãšã®é£æºãæäœãè¡ãããã°ã©ã ãå¹ççã«éçºããããšãå¯èœã«ãªããŸãã
5. Cèšèªã©ã€ãã©ãªã®æ£ãã䜿ãæ¹ãšæ³šæç¹
ããã°ã©ãã³ã°ã§éèŠãªã®ã¯ãèšèªã®æ§æç¥èã ãã§ãªããã©ã€ãã©ãªã®æŽ»çšã倧ããªããŒããå ããŸããCèšèªã§æžãããã©ã€ãã©ãªã¯ãåå©çšå¯èœãªã³ãŒãã®éãŸãã§ãããããããå©çšããããšã§å¹ççã«ããã°ã©ãã³ã°ãè¡ãããšãã§ããŸãããããããã®äœ¿ãæ¹ãäžé©åã ãšãéå¹æã«ãªãããšããããŸããããã§ã¯ãCèšèªã®ã©ã€ãã©ãªã®æ£ãã䜿ãæ¹ãšæ³šæç¹ã詳ãã解説ããŸãã
5.1 ã©ã€ãã©ãªã®ã€ã³ã¯ã«ãŒãæ¹æ³
ã©ã€ãã©ãªã䜿çšããã«ã¯ãŸããããã#includeãã£ã¬ã¯ãã£ããçšããŠã€ã³ã¯ã«ãŒãããå¿ èŠããããŸããã©ã€ãã©ãªãã€ã³ã¯ã«ãŒããããããšã§ããã®äžã«å®çŸ©ãããé¢æ°ãå€æ°ãå©çšã§ããŸãã
ãããã#includeããéã«ã¯æ³šæãå¿ èŠã§ããã©ã€ãã©ãªã«ã¯ãæšæºã©ã€ãã©ãªãšãŠãŒã¶å®çŸ©ã©ã€ãã©ãªããããŸããæšæºã©ã€ãã©ãªã¯<"#ã©ã€ãã©ãªå.h">ã®åœ¢åŒã§ããŠãŒã¶å®çŸ©ã©ã€ãã©ãªã¯<"ã©ã€ãã©ãªå.h">ãšãã圢åŒã§ã€ã³ã¯ã«ãŒãããŸãã
ã©ã€ãã©ãªãé©åã«ã€ã³ã¯ã«ãŒãããããšã§ãã³ãŒãã®åå©çšæ§ãšå¯èªæ§ãåäžããŸããé©åãªã€ã³ã¯ã«ãŒãæ¹æ³ã身ã«çããããšã¯ãCèšèªã§ã®å¹æçãªããã°ã©ãã³ã°ã®äžæ©ãšãªããŸãã
5.2 ã©ã€ãã©ãªã®ã³ã³ãã€ã«æ¹æ³
èªåã§ã©ã€ãã©ãªãäœæããå Žåããããã³ã³ãã€ã«ããå¿ èŠããããŸããã©ã€ãã©ãªãååšãããã£ã¬ã¯ããªã§ãã³ã³ãã€ã©ã®ã³ãã³ããšãšãã«ã©ã€ãã©ãªåãæå®ããããšã§ã³ã³ãã€ã«ãå¯èœã§ãã
ããããã©ã€ãã©ãªã®ã³ã³ãã€ã«ã«ã¯æ³šæãå¿ èŠã§ããã³ã³ãã€ã«ãšã©ãŒãçºçãããšãã©ã€ãã©ãªã¯æ£åžžã«åäœããªãå¯èœæ§ããããŸãããŸããäžåºŠã³ã³ãã€ã«ããã©ã€ãã©ãªãå床ã³ã³ãã€ã«ããéã¯ããªããžã§ã¯ããã¡ã€ã«ãåé€ããŠããè¡ãããšãæšå¥šãããŸãã
ã©ã€ãã©ãªã®ã³ã³ãã€ã«ã¯ãã³ãŒãã®é å¥æ§ãšå®è¡å¹çã確ä¿ããããã«å¿ èŠã§ããå®è¡ãšã©ãŒãé¿ããããã®æ£ããã³ã³ãã€ã«æ¹æ³ãåŠã³ãŸãããã
5.3 ã©ã€ãã©ãªã®ã¡ã¢ãªç®¡ç
ã©ã€ãã©ãªã«é¢ããŠã¡ã¢ãªç®¡çãç解ããŠããããšã¯éèŠã§ããç¹ã«Cèšèªã§ã¯åçã¡ã¢ãªã®ç¢ºä¿ã»è§£æŸãå¿ èŠãšãªãå ŽåããããŸãã
ããããã¡ã¢ãªç®¡çã«ã¯æ³šæãå¿ èŠã§ããã¡ã¢ãªã®ãªãŒã¯ã¯ãé·æéã®åŠçã«ãããããã©ãŒãã³ã¹äœäžããšã©ãŒã®åå ãšãªãããã䜿çšåŸã¯å¿ ãã¡ã¢ãªã®è§£æŸãè¡ãããã«ããŸãããã
é©åãªã¡ã¢ãªç®¡çã¯ããã°ã©ã ã®å®å®åäœã«å¯äžããŸãããŸããä¿¡é Œæ§ã®é«ããœãããŠã§ã¢éçºãè¡ãããã«ããã¡ã¢ãªç®¡çã®ä»æ¹ãç解ããããšã¯å¿ é ã§ãã
5.4 ããŒãžã§ã³ç®¡çã®éèŠæ§
ããªããå©çšããã©ã€ãã©ãªã®ããŒãžã§ã³ç®¡çã«ã€ããŠåŠã¶ããšã¯ããšã©ãŒãåé¡ã®è§£æ±ºã«åœ¹ç«ã¡ãŸãã
äžã€ã®ã©ã€ãã©ãªã«ã¯è€æ°ã®ããŒãžã§ã³ãååšããããããã®ããŒãžã§ã³ã«ããå©çšã§ããæ©èœãæ§èœãç°ãªãå ŽåããããŸãããã®ãããããããã®ããŒãžã§ã³ã®å·®ç°ãããããããã°ã©ã ã«ã©ã®ããã«åœ±é¿ãåãŒãããç解ããããšãéèŠã§ãã
ããŒãžã§ã³ç®¡çèœåã¯ãããã°ã©ã ã®äºææ§ãä¿ã€ããã«ç¹ã«éèŠã§ããããŒãžã§ã³ç®¡çã«å¯Ÿããç解ãšæŠç¥ã¯ãããªããå¹ççã«ã³ãŒãã管çããéã®éèŠãªããŒã«ãšãªããŸãã
6. Cèšèªã®ã©ã€ãã©ãªãšä»ã®èšèªã©ã€ãã©ãªã®æ¯èŒ
Cèšèªã®ã©ã€ãã©ãªã¯ãã®æ©èœæ§ãšæ±çšæ§ããåºã䜿çšãããŠããŸãããä»ã®ããã°ã©ãã³ã°èšèªã®ã©ã€ãã©ãªãšæ¯èŒããéã«ã¯ããã€ãã®ç¹åŸŽãæµ®ã圫ããšãªããŸãã
ãŸããCèšèªã®ã©ã€ãã©ãªã¯äžè¬ã«éåžžã«è»œéã§ããããœãŒã¹ã³ãŒãã®ã³ã³ãã€ã«æéãçãããšãç¹åŸŽã®äžã€ã§ãã
ããã«ãCèšèªã¯äœã¬ãã«èšèªã«è¿ããããããŒããŠã§ã¢ã®å¶åŸ¡ãå¯èœã§ãããã©ã€ãã©ãªãå€çš®å€æ§ãªããŒããŠã§ã¢ãæäœããããã®ãã®ãå€ãååšããŸãã
6.1 C++ã®ã©ã€ãã©ãªãšã®æ¯èŒ
C++ã®ã©ã€ãã©ãªã¯ãCèšèªã®ã©ã€ãã©ãªãšåæ§ã«å€æ°ååšããŸãããC++ã¯ãªããžã§ã¯ãæåèšèªã§ããããããã®ã©ã€ãã©ãªãã¯ã©ã¹ããªããžã§ã¯ããšãã£ãæŠå¿µã䜿çšãããããã³ãã¬ãŒãã掻çšãããªã©ã®ç¹æ§ããããŸãã
ããã«å¯ŸããŠãCèšèªã®ã©ã€ãã©ãªã¯çŽæçã§ã·ã³ãã«ãªæ§é ãæã€ããšãå€ããããç解ãããããããã«ã¯ãããã®ã©ã€ãã©ãªã䜿ãããšã§ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžããããšãäžè¬çã§ãã
ãŸããC++ã©ã€ãã©ãªã¯Cèšèªã®ã©ã€ãã©ãªãããäžè¬çã«ã¯æ©èœãè±å¯ã§ãããããé«åºŠãªããã°ã©ãã³ã°ãå¯èœã«ããŸããããã®äžæ¹ã§ãååŠè ã«ãšã£ãŠã¯èŠããã¹ãäºé ãå¢ããåŠç¿æ²ç·ãæ¥å³»ã«ãªãåŸåããããŸãã
6.2 Javaã®ã©ã€ãã©ãªãšã®æ¯èŒ
Javaã®ã©ã€ãã©ãªã¯ãJavaã®”Write Once, Run Anywhere”ãšããå²åŠãå ·çŸåããŸããã€ãŸããåãJavaã©ã€ãã©ãªãç°ãªããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãããŒããŠã§ã¢äžã§åäœããããšãå¯èœã«ããŸãã
äžæ¹ãCèšèªã®ã©ã€ãã©ãªã¯ãçŽæ¥ããŒããŠã§ã¢ãšå¯Ÿè©±ããããã®ãã®ãå€ãããã®ãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãããŒããŠã§ã¢ã«åŒ·ãäŸåããŸãã
ãŸããJavaããªããžã§ã¯ãæåèšèªãªã®ã§ãJavaã®ã©ã€ãã©ãªã¯ãªããžã§ã¯ãæåã®æŠå¿µãçšããŠèšèšãããããããç解ããããšãæ±ããããŸããCèšèªã®ã©ã€ãã©ãªã¯ããã·ãŒãžã£ã«ïŒæç¶ãçïŒããã°ã©ãã³ã°ã«åºã¥ããŠãããåºæ¬çã«ã¯é¢æ°ã®éåãšããŠå®è£ ãããŸãã
6.3 Pythonã®ã©ã€ãã©ãªãšã®æ¯èŒ
Pythonã®ã©ã€ãã©ãªã¯å€æ©èœã§äœ¿ããããããšã§ç¥ãããç¹ã«ããŒã¿åæãæ©æ¢°åŠç¿ããŠã§ãéçºãªã©ã®åéã§å€§éã«å©çšãããŠããŸãã
ããã«å¯ŸããCèšèªã®ã©ã€ãã©ãªã¯ããäœã¬ãã«ãªæäœããããã©ãŒãã³ã¹ãéèŠãããå Žé¢ã§æŽ»çšãããããŒããŠã§ã¢ãšã®çŽæ¥ã®ããåããå¯èœã«ããäžæ¹ã䜿çšæ¹æ³ãè€éã§ããããšãåŸã ã«ããŠãããŸãã
Pythonã®ã©ã€ãã©ãªã¯ãCèšèªã®ã©ã€ãã©ãªã«æ¯ã¹ãŠç¿åŸã容æã§ã䜿çšãçŽæçã§ããç¹ã倧ããªç¹åŸŽãšèšããŸãã
6.4 JavaScriptã®ã©ã€ãã©ãªãšã®æ¯èŒ
JavaScriptã®ã©ã€ãã©ãªã¯äž»ã«ãŠã§ãéçºã§å©çšããããŠã§ãããŒãžã®åçãªæåãå®è£ ããã®ã«äŸ¿å©ã§ããç¹ã«ãå€ãã®JavaScript ã©ã€ãã©ãªã¯DOMæäœã容æã«ããããèšèšãããŠããŸãã
äžæ¹ãCèšèªã®ã©ã€ãã©ãªã¯ãŠã§ãéçºã«çŽæ¥å©çšããããšã¯å°ãªãããããã·ã¹ãã ã¬ãã«ã®æäœãçµã¿èŸŒã¿ã·ã¹ãã ãããã€ã¹ãã©ã€ããªã©ã®äœæã«å©çšãããŸãã
ãŸããJavaScriptã©ã€ãã©ãªã¯ã¹ã¯ãªããèšèªã®ç¹æ§ã掻ãããŠåçã«ããŒãããã䜿ãããããæäŸããŸãããCèšèªã®ã©ã€ãã©ãªã¯ã³ã³ãã€ã©ã«ãã£ãŠã³ã³ãã€ã«ããããããããå¹ççã§ã»ãã¥ãªãã£ãé«ããšèšããŸãã