ããžãã¹ã®äžçã§ã¯æéã貎éã§ããç¹ã«æè¡ãè¿ éã«åŠã¶å¿ èŠããããšããå¹çã¯éèŠã«ãªããŸãããã®ãªãŒãæã§ã¯ãC++ããã°ã©ãã³ã°èšèªãæ軜ã«ç解ããããã®æ žãšãªãæ å ±ãéçŽããŸãããåããŠã®æ¹ã§ãåºç€ãããªããžã§ã¯ãæåã®æŠå¿µãããã«ã¯ãããžã§ã¯ãã»ããã¢ãããŸã§ãç°¡æœã«èª¬æããŸãããã®åŸã®ãªãœãŒã¹å©çšã«ãããããªãåŠç¿ãžã®æ©æž¡ããè¡ããããžãã¹ããŒãœã³ãéãããæéã®äžã§C++ããã¹ã¿ãŒããããã®æéã瀺ããŸãããå¿ããäžã§ãããã®ãŸãšããã¬ã€ããããã°ãC++ã®äžçã«ååã«è¶³ãèžã¿å ¥ããããšãã§ããã§ãããã
1. C++ åºç€ã®çŽ æ©ãç解
1.1 C++ãšã¯ïŒããã°ã©ãã³ã°èšèªã®æŠèŠ
C++ã¯ãé«æ§èœãªã¢ããªã±ãŒã·ã§ã³éçºã«å¹ åºãå©çšããããªããžã§ã¯ãæåããã°ã©ãã³ã°èšèªã§ããæè»æ§ãšå¹çæ§ãå Œãåããã²ãŒã éçºãã·ã¹ãã ãœãããŠã§ã¢ã«çšããããŸããCèšèªã®æ§é ãããŒã¹ã«ãã€ã€ãã¯ã©ã¹ãç¶æ¿ãšãã£ããªããžã§ã¯ãæåã®æ©èœãè¿œå ãããŠããŸãã
ãã®ç¹æ§äžãC++ã¯é床ãšçŽæ¥ããŒããŠã§ã¢ãžã®ã¢ã¯ã»ã¹èœåãèŠæ±ãããé åã§æ¯æãããŠããŸããæšæºãã³ãã¬ãŒãã©ã€ãã©ãªïŒSTLïŒãªã©ã®ã©ã€ãã©ãªã掻çšããŠãåå©çšãå¯èœãªãœãããŠã§ã¢ã³ã³ããŒãã³ãã®éçºãè¡ããçç£æ§ã®åäžã«ãè²¢ç®ããŠããŸãã
åŸæ¥ã®Cãšã®äºææ§ãé«ããããéå»ã®ãœãããŠã§ã¢ãªãœãŒã¹ãçãããªãããã¢ãã³ãªããã°ã©ãã³ã°ææ³ãåãå ¥ããããšãå¯èœã§ãã
1.2 C++ã®æŽå²ãšç¹åŸŽ
C++ã¯ã1983幎ã«ãã«ç 究æã®ãã£ãŒãã»ã¹ãã©ãŠã¹ãã©ããã«ãã£ãŠéçºãããŸãããåœåãC with ClassesããšåŒã°ããŠãããã®èšèªã¯ãCèšèªã®æ©èœã«ãªããžã§ã¯ãæåã®æŠå¿µãå ãã圢ã§é²åããŠãããŸããã
ãã®åŸãæšæºåéçšãçµãŠãå€ãã®æ¹è¯ãšæ¡å ãç¹°ãè¿ãããè€æ°ã®æšæºèŠæ Œãå¶å®ãããŠããŸããC++11ãC++14ãC++17ãšãã£ãããŒãžã§ã³ã次ã ãšãªãªãŒã¹ããããã䟿å©ã§ãã¯ãã«ãªèšèªæ©èœãè¿œå ããç¶ããŠããŸãã
ç¹ã«ãæšæºã©ã€ãã©ãªã®åŒ·åãèªåã¡ã¢ãªç®¡çãã©ã ãåŒã®å°å ¥ã䞊è¡åŠçãµããŒããªã©ãçŸä»£ã®ããã°ã©ãã³ã°ããŒãºã«åãããç¹åŸŽã匷åãããŠããŸãã
1.3 éçºç°å¢ã®èšå®ãšå¿ èŠãªããŒã«
C++ããã°ã©ã ãéçºããããã«ã¯ãIDEïŒçµ±åéçºç°å¢ïŒã®å°å ¥ãäžå¯æ¬ ã§ããVisual Studio, Code::Blocks, Eclipseãªã©ãå€ãã®åªããIDEãååšããŸãããããã¯Syntax HighlightingãCode CompletionãDebugging Toolãªã©éçºãå¹ççã«é²ããããã®æ©èœãæäŸããŠããŸãã
ã³ã³ãã€ã©ãéèŠãªããŒã«ã§ããGCCãClangãMicrosoft Visual C++ãªã©ãæ§ã ãªã³ã³ãã€ã©ãå©çšã§ããŸãããã©ãããã©ãŒã ãéçºã®æ¡ä»¶ã«ãã£ãŠæé©ãªã³ã³ãã€ã©ãéžã¶ããšãéèŠã§ãã
C++ã®éçºã«ã¯ãããŒãžã§ã³ç®¡çã·ã¹ãã ïŒGitãªã©ïŒã®å©çšãæšå¥šãããŸããããã«ããã³ãŒãã®å€æŽå±¥æŽã管çããå¹æçãªããŒã ã§ã®ã³ã©ãã¬ãŒã·ã§ã³ãå®çŸã§ããŸãã
1.4 C++ã®åºæ¬æ§æãšææ³
C++ã®ããã°ã©ã ã¯ãé¢æ°å®çŸ©ãšå€æ°å®£èšããæ§æãããŸããç¹ã«ãmainé¢æ°ã¯ããã°ã©ã å®è¡ã®èµ·ç¹ãšãªããŸããããŒã¿åã«ã¯ãint, float, double, charãªã©ããããå³å¯ãªåã·ã¹ãã ãæ¡çšããŠããŸãã
å¶åŸ¡æ§é ã«ã¯ãifæãswitchæãwhileæãforæããããŸãããããã䜿ã£ãŠããã°ã©ã ã®æµããå¶åŸ¡ããããšãã§ããŸãããŸããé¢æ°ã¯ã³ãŒãã®åå©çšãå¯èœã«ããããžãã¯ãã¢ãžã¥ãŒã«åããæ段ãæäŸããŸãã
äŸå€åŠçã¯ãšã©ãŒç®¡çã«äžå¯æ¬ ã§ãtry, catch, throwããŒã¯ãŒããçšããŠå®æœãããŸããããã«ãããããã°ã©ã ã®å®å®æ§ãšä¿¡é Œæ§ãé«ããããšãã§ããŸãã
2. åå¿è åãããã°ã©ãã³ã°ã®ã³ã
ããã°ã©ãã³ã°ãåŠã¶éã«ã¯ãããã€ãã®éèŠãªã³ãããããŸããåå¿è ãç¥ã£ãŠããã¹ãæåã®ãã€ã³ãã¯ãããã°ã©ãã³ã°ã¯ç¿åŸã«æéãããããã®ã§ãããšç解ããããšã§ããããã«äžéãæåŸ ãããåºæ¬ãããã£ãããšç©ã¿éããŠãã姿å¢ãéèŠã§ãã
次ã«ãç¶ç¶çãªç·Žç¿ãå¿ èŠã§ããçè«ã ãã§ãªããå®éã«ã³ãŒããæžãããšã§ããèœåã¯åäžããŸããããããŠããšã©ãŒã«çŽé¢ãããšãã«ã¯ãããã解決ããããã®æ¹æ³ãåŠã³ãããè¯ãã³ãŒããæžããã£ãããšããããšã§ãããã°ã©ãã³ã°èœåã¯ããã«åäžããŸãã
æåŸã«ãããã°ã©ãã³ã°ã¯åãªãã³ãŒãã£ã³ã°æè¡ã ãã§ãªããåé¡è§£æ±ºèœåãéèŠã§ããã¢ã«ãŽãªãºã ãèããæé©ãªãœãªã¥ãŒã·ã§ã³ãå°ãæèæ³ã身ã«ã€ããããšããè¯ãããã°ã©ããŒãžã®è¿éãšãªããŸãã
2.1 åŠç¿èšç»ã®ç«ãŠæ¹
å¹ççãªåŠç¿ã®ããã«ã¯ãèšç»çã«é²ããããšã倧åã§ãããŸããåŠã³ããå 容ãæ確ã«ããããã«åºã¥ããŠç®æšãèšå®ããŸããäŸãã°ãåºæ¬çãªææ³ããå§ããå°ããªããã°ã©ã ãæžããããã«ãªãããšã第äžã®ç®æšã«ããŸãããã
次ã«ãå®éã®åŠç¿ã¹ã±ãžã¥ãŒã«ãç«ãŠãŸããæ¯æ¥ãŸãã¯é±ã«æ°åã決ãŸã£ãæéã«åŠç¿ããç¿æ £ãã€ããããšã倧åã§ããæé管çã培åºããããšã§ãå¹ççãã€æç¶å¯èœãªåŠç¿ãå®çŸããŸãã
ãŸããåŠç¿ã®é²æãå®æçã«æ¯ãè¿ãããšã§ãèªåã®ç解床ã確èªããèšç»ãé©å®èª¿æŽããããšãéèŠã§ããç®æšã«å¯Ÿããé²æãèŠæåéã®çºèŠãªã©ãèªå·±è©äŸ¡ãè¡ããŸãããã
2.2 å¹æçãªããã°ã©ãã³ã°å匷æ³
å¹æçãªå匷æ³ã®ã²ãšã€ã¯ãç解ããããå°ããªåäœã§åŠã¶ããšã§ããç¹ã«C++ã®ãããªå€æ©èœèšèªãåŠã¶éã«ã¯ãå šäœãäžåºŠã«æããããšããã«ãåºæ¬ææ³ã®ç解ããå§ããåŸã ã«å¿çšã«é²ãã§ããããšãéèŠã§ãã
ããäžã€ã®å匷æ³ã¯ããããžã§ã¯ãããŒã¹ã®åŠç¿ã§ããå®éã«èå³ã®ããããã°ã©ã ãäœæããªããããã®éçšã§å¿ èŠãªç¥èãåŠã¶ããšã§ãããå®è·µçãªã¹ãã«ã身ã«ã€ããããšãã§ããŸãã
ãŸãããªã³ã©ã€ã³ã®ãã¥ãŒããªã¢ã«ãã³ãã¥ããã£ãå©çšããã®ãæå¹ãªæ¹æ³ã§ããçµéšè ã®ç¥èŠãéãŸããã©ãŒã©ã ã§çåã解æ¶ããããåãç®æšãæã€ä»²éãšã³ã©ãã¬ãŒã·ã§ã³ããªããåŠã¶ããšãã§ããŸãã
2.3 C++ã®ã³ã³ãã€ã«ãšå®è¡ã®æµã
C++ã®ã³ã³ãã€ã«ãšã¯ã人éãæžãããœãŒã¹ã³ãŒããã³ã³ãã¥ãŒã¿ãç解ããããã®ãã€ããªã³ãŒãã«å€æããããã»ã¹ã§ãããã®ããã»ã¹ãè¡ãããã«ã¯ãC++ã³ã³ãã€ã©ãå¿ èŠã§ãå€ãã®éçºç°å¢ã«ã¯çµã¿èŸŒãŸããŠããŸãã
å®éã«ã³ã³ãã€ã«ãè¡ãéã«ã¯ããœãŒã¹ã³ãŒããæžãããã¡ã€ã«ã«å¯ŸããŠã³ã³ãã€ã©ãå®è¡ããŸããäŸãã°ãgccãclangãªã©ã®ã³ã³ãã€ã©ã䜿çšããã³ãã³ãã©ã€ã³ããã³ã³ãã€ã«ã³ãã³ããå®è¡ãããšãå®è¡å¯èœãã¡ã€ã«ãçæãããŸãã
çæãããå®è¡å¯èœãã¡ã€ã«ãå®è¡ããã°ãããã°ã©ã ãåäœããŸãããšã©ãŒããªããã°ãæåŸ éãã®çµæãåŸãããšãã§ããã§ãããã
2.4 ãšã©ãŒãšãããã°å ¥é
ããã°ã©ãã³ã°ã«ãããŠãšã©ãŒã¯é¿ããŠéããªãéã§ããC++ãåŠã³å§ããåå¿è ã¯ç¹ã«ãå€ãã®ãšã©ãŒã«çŽé¢ããããšã§ãããããšã©ãŒã«ã¯æ§æãšã©ãŒãè«çãšã©ãŒãªã©ããã€ãã®çš®é¡ããããŸãã
æ§æãšã©ãŒã¯ãããã°ã©ã ãã³ã³ãã€ã©ã®ã«ãŒã«ã«åŸã£ãŠããªãããã«çºçãããšã©ãŒã§ã倧æµã®å Žåãã³ã³ãã€ã©ããšã©ãŒã¡ãã»ãŒãžãšãšãã«è©²åœç®æãææããŠãããŸããããããäžå¯§ã«è§£æ±ºããŠããããšã§ãèªç¶ãšC++ã®ææ³ã«æ £ããŠãããŸãã
ãããã°ã¯ãšã©ãŒãç¹å®ããä¿®æ£ããããã®äœæ¥ã§ããçµ±åéçºç°å¢(IDE)ã«ã¯ãããã¬ãå«ãŸããŠããããã¬ãŒã¯ãã€ã³ããèšå®ããããå€æ°ã®å€ãç£èŠãããããããšã§ããšã©ãŒã®åå ãå¹ççã«èŠã€ããããšãã§ããŸãã
3. C++ã®åºæ¬çãªæŠå¿µãç¿åŸ
3.1 å€æ°ãšããŒã¿å
C++ã§ããã°ã©ãã³ã°ãå§ããã«ã¯ãå€æ°ãšããŒã¿åã®æŠå¿µãæŽãããšãå¿ é ã§ããå€æ°ã¯ããŒã¿ãæ ŒçŽããããã®ãç®±ããšèããããšãã§ããããŒã¿åã¯ãã®ç®±ã«å ¥ããããšã®ã§ãããå 容ç©ãã®çš®é¡ãæå®ããŸããäŸãã°ãintã¯æŽæ°ãcharã¯æåãdoubleã¯æµ®åå°æ°ç¹æ°ãæ ŒçŽããããã®ããŒã¿åã§ãã
å€æ°ã宣èšããéã«ã¯ãããŒã¿åã®åŸã«å€æ°ã®ååãæžããŸããäŸ: int age;
ããããããšã§ãååãageãã®å€æ°ã«æŽæ°ããŒã¿ãæ ŒçŽããããšãã§ããããã«ãªããŸããå€æ°ã«å€ãå²ãåœãŠãããšããåæåããšèšããage = 21;
ã®ããã«è¡ãããšãã§ããŸãã
C++ã«ã¯ããŸããŸãªããŒã¿åããããŸãããåºæ¬çãªåããå§ããŠåŸã ã«è€éãªåã«ã€ããŠåŠã¶ãšè¯ãã§ããããåºæ¬åã«ã¯æŽæ°åãæµ®åå°æ°ç¹åãæååãããŒã«åããããããã°ã©ã ã®ããŒãºã«å¿ããŠé©åã«éžæããããšãéèŠã§ãã
3.2 æŒç®åãšè¡šçŸã®å
æŒç®åãç解ããããšã¯ãC++ã§å¹æçãªè¡šçŸãäœãããã«éèŠã§ããç®è¡æŒç®åïŒ+, -, *, /, % ãªã©ïŒã¯æ°åŠã®èšç®ãè¡ãã®ã«äœ¿ããŸãããŸããæ¯èŒæŒç®åïŒ==, !=, <, >, <=, >=ïŒã¯å€ãæ¯èŒããæ¡ä»¶æŒç®å (&&, ||, !) ã¯è€æ°ã®æ¡ä»¶ãçµã¿åãããŠè©äŸ¡ããéã«äœ¿çšãããŸãã
äŸãã°ãint total = a + b;
ãšããåŒã§ã¯ãaãšbã®å€ãå ç®ããŠtotalå€æ°ã«æ ŒçŽããŠããŸãããã®ãããªæŒç®åã掻çšããŠãè€éãªèšç®ãæ¡ä»¶å€æãè¡šçŸããããšãã§ããŸããããããæŒç®åã䜿ãéã¯ãåªå
é äœãšçµååãç解ããŠããå¿
èŠããããŸããããã§ãªããšãäºæããªãçµæã«ãªãããšããããŸãã
ãŸããC++ã§ã¯æŒç®åã®ãªãŒããŒããŒããå¯èœã§ãèªå®çŸ©ã®ããŒã¿åã«å¯ŸããŠç¹æã®æ¯ãèããå®çŸ©ããããšãã§ããŸããããã«ãããã³ãŒãã®è¡šçŸåãé«ããããšãå¯èœã§ãããåå¿è ã¯ãŸãã¯åºæ¬çãªæŒç®åã®äœ¿çšæ³ããã¹ã¿ãŒããããšããå§ããŸãããã
3.3 å¶åŸ¡æ§é ïŒæ¡ä»¶åå²ãšç¹°ãè¿ã
å¶åŸ¡æ§é ã¯ããã°ã©ã ã®æµãã管çããããã«äœ¿ãããŸããæ¡ä»¶åå²ã¯ããã°ã©ã ãç°ãªããã¹ããã©ãããã«ããç¹°ãè¿ãã¯ã³ãŒããããã¯ãæ¡ä»¶ãæºãããããŸã§ããŸãã¯æå®ãããåæ°ã ãå®è¡ããŸããæãäžè¬çãªæ¡ä»¶åå²ã®æ§é ã¯ifæã§ãããswitchæã䜿ãããŸãã
äŸãã°ãifæã¯if (condition) { /* code */ }
ã®ããã«èšè¿°ãããconditionãtrueã®å Žåã«ã³ãŒããå®è¡ãããŸããç¹°ãè¿ãã«ã¯forã«ãŒããwhileã«ãŒããdo-whileã«ãŒãããããããããç°ãªãã·ããªãªã«é©ããŠããŸããäŸãã°ãforã«ãŒãã¯å埩åæ°ãæ確ãªå Žåã«æé©ã§ãã
å¹ççãªããã°ã©ã ãæžãããã«ã¯ãé©åãªå¶åŸ¡æ§é ãéžæãããã¹ãïŒå ¥ãåïŒã®æ·±ãã«ã泚æããå¿ èŠããããŸããæ·±ããããã¹ãã¯ã³ãŒãã®å¯èªæ§ãäœäžãããåå ãšãªããŸãã®ã§ãé¢æ°ãªã©ãçšããŠé©åã«æœè±¡åããŸãããã
3.4 é¢æ°ã®å®çŸ©ãšå©çš
é¢æ°ã¯ç¹å®ã®ã¿ã¹ã¯ãå®è¡ããã³ãŒãã®ãããã¯ã§ãããããã°ã©ã å
ã§
ç¹°ãè¿ã䜿çšããåŠçãã«ãã»ã«åããã®ã«åœ¹ç«ã¡ãŸããé¢æ°ã®å®çŸ©ã¯ãè¿åŽå€ã®ããŒã¿åãé¢æ°åãåŒæ°ãªã¹ãïŒåŒæ°ããªãå Žåã¯ç©ºïŒããæ§æãããŸããäŸ: int add(int x, int y) { return x + y; }
é¢æ°ã¯ã³ãŒãã®åå©çšæ§ãé«ããã¡ã³ããã³ã¹ã容æã«ããŸããé¢æ°ãé©åã«äœ¿çšãããšãããã°ã©ã ã®åéšåãäžã€ã®ã¿ã¹ã¯ã«éäžããããã°ã©ã å šäœã®æ§é ãæ確ã«ãªããŸãããŸããåŒæ°ã«ããç°ãªãå ¥åã«å¯ŸããŠåãé¢æ°ã䜿ãåãããšãã§ãããã®æè»æ§ãC++ã®åŒ·åãªæ©èœã®äžã€ã§ãã
é¢æ°ã®ãªãŒããŒããŒããC++ã®ç¹åŸŽã§ããããã«ãããç°ãªãåŒæ°ã®ã»ãããæã€ååã®é¢æ°ãè€æ°å®çŸ©ããããšãã§ããŸããé¢æ°ã®ãªãŒããŒããŒãã¯ãé¢æ°ã®äœ¿ãåæãè¯ãããããã«ãã°ãã°å©çšãããŸããã䜿ãæ¹ã誀ããšã³ãŒãã®è€éæ§ãäžããçµæã«ããªãåŸãŸãã®ã§æ³šæãå¿ èŠã§ãã
4. ãªããžã§ã¯ãæåããã°ã©ãã³ã°ãžã®æ©æž¡ã
4.1 ãªããžã§ã¯ãæåãšã¯ïŒ
ãªããžã§ã¯ãæåã¯ããã°ã©ã ã®èšèšãšéçºãå¹çåãããã©ãã€ã ã®äžã€ã§ãããã®ã¢ãããŒãã§ã¯ãããŒã¿ãšãã®ããŒã¿ãåŠçããæç¶ããäžã€ã®ããªããžã§ã¯ãããšããŠãŸãšããããšã«æ³šåããŸãããã®ããã«ããããšã§ãããçŽæçã§äœ¿ããããã³ãŒãã®æ§ç¯ãå¯èœãšãªããŸãã
ãŸãããªããžã§ã¯ãæåããã°ã©ãã³ã°ã§ã¯ãå®äžçã®äºç©ãæŠå¿µãã¢ãã«åããããããœãããŠã§ã¢ã®åå©çšãšæ¡åŒµãããããæ§é ãçã¿åºããŸããããã«ãããéçºã®çç£æ§ãåäžããããè€éãªã·ã¹ãã ã管çãããããªããŸãã
åºæ¬çãªãªããžã§ã¯ãæåã®æŠå¿µã«ã¯ããæœè±¡åããã«ãã»ã«åããç¶æ¿ããããªã¢ãŒãã£ãºã ããšãã£ããã®ãå«ãŸããŸãããããã®æŠå¿µã¯ãC++ã®ãªããžã§ã¯ãæåãµããŒãã«ãã£ãŠå®è·µãããŸãã
4.2 ã¯ã©ã¹ãšãªããžã§ã¯ã
C++ã«ãããã¯ã©ã¹ã¯ãªããžã§ã¯ãã®èšèšå³ã§ããã¯ã©ã¹ã¯ããŒã¿ã®å±æ§ïŒã¡ã³ãå€æ°ïŒãšæäœïŒã¡ã³ãé¢æ°ãŸãã¯ã¡ãœããïŒãå®çŸ©ããŸããå®éã®ãªããžã§ã¯ãã¯ã¯ã©ã¹ã«åºã¥ããŠäœãããã€ã³ã¹ã¿ã³ã¹ã§ãããåãªããžã§ã¯ãã¯ç¬ç«ããç¶æ ãšæ¯ãèããæã€ããšãã§ããŸãã
ãªããžã§ã¯ããçæããéã«ã¯ãã¯ã©ã¹ããã€ã³ã¹ã¿ã³ã¹ããã€ã³ã¹ã¿ã³ã¹åãããå¿ èŠããããŸãããã®ããã»ã¹ã«ãããããã°ã©ã å ã§ãªããžã§ã¯ããå®éã«ãçãããããšã«ãªããŸããC++ã§ã¯ãã³ã³ã¹ãã©ã¯ã¿ãšãã¹ãã©ã¯ã¿ãšããç¹å¥ãªé¢æ°ãæã£ãŠããŠããªããžã§ã¯ãã®åæåãšç Žæ£ã管çããŸãã
ãããã®æŠå¿µãå©çšããããšã§ãC++ããã°ã©ãã¯é«ãã³ãŒãã®åå©çšæ§ãšãã¡ã³ããã³ã¹æ§ã享åã§ããŸããäžè²«æ§ã®ããã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ã«åŸãããšã§ãèªã¿ããããç解ããããããã°ã©ã ãäœæããããšãã§ããŸãã
4.3 ç¶æ¿ãããªã¢ãŒãã£ãºã ãã«ãã»ã«åã®åºç€
ç¶æ¿ã¯ãããã¯ã©ã¹ãå¥ã®ã¯ã©ã¹ããå±æ§ãšã¡ãœãããåãç¶ãã¡ã«ããºã ã§ããããã«ãããæ¢åã¯ã©ã¹ã®ã³ãŒããåå©çšããæ°ããã¯ã©ã¹ãäœæããéã®åŽåãæžããããšãã§ããŸãããŸããéå±€çãªã¯ã©ã¹ã®æ§é ãäœãããšãå¯èœã«ãªããŸãã
ããªã¢ãŒãã£ãºã ã¯ãåãã€ã³ã¿ãŒãã§ãŒã¹ãç°ãªãããŒã¿åããªããžã§ã¯ãã«å¯ŸããŠç°ãªãåäœãããèœåãæããŸããC++ã§ã¯äž»ã«ãä»®æ³é¢æ°ã䜿çšããåçããªã¢ãŒãã£ãºã ãšããã³ãã¬ãŒãã䜿çšããéçããªã¢ãŒãã£ãºã ã®äºã€ã®åœ¢ããããŸãã
ã«ãã»ã«åã¯ããªããžã§ã¯ãã®è©³çŽ°ãå®è£ ãé èœããå€éšããçŽæ¥ã¢ã¯ã»ã¹ã§ããªãããã«ããããšã§ããããã«ããããªããžã§ã¯ãã®å ¬éã€ã³ã¿ãŒãã§ãŒã¹ãéããŠã®ã¿ããªããžã§ã¯ããšå¯Ÿè©±ããããšãã§ããããŒã¿ã®æŽåæ§ãšå®å šæ§ãä¿ã€ããšãå¯èœã«ãªããŸãã
4.4 C++11/14/17ã®æ°æ©èœæŠèŠ
C++ã¯æéãšå ±ã«é²åãç¶ããŠãããC++11ãC++14ãC++17ã§ã¯æ§ã ãªæ°æ©èœãå°å ¥ãããŸããããããã®æ°æ©èœã¯ãC++ã®è¡šçŸåãé«ããã ãã§ãªããéçºè ã«ããå¹ççãªã³ãŒãã®èšè¿°ãå¯èœã«ããŠããŸãã
äŸãã°ãC++11ã§ã¯ã©ã ãåŒã®å°å ¥ããã匷åãããåæšè«ãã¡ã¢ãªç®¡çã®ããã®ã¹ããŒããã€ã³ã¿ãªã©ãè¿œå ãããéçºè ã¯ãããŸã§ä»¥äžã«è¡šçŸåè±ãã§å®å šãªã³ãŒããæžãããšãã§ããããã«ãªããŸããã
C++14ãšC++17ã§ã¯ãæŽãªãæ©èœæ¡åŒµãè¡ãããŸãããC++14ã§ã¯å€æ°ãã³ãã¬ãŒãããžã§ããªãã¯ã©ã ãåŒãªã©ããC++17ã§ã¯ã€ã³ã©ã€ã³å€æ°ãæ§é åæçžãªã©ã®æ©èœãæ°ãã«å ãããC++ã®äœ¿ãåæãå€§å¹ ã«åäžããŸããããããã®å€åã«ãããC++ã¯çŸä»£ã®ããã°ã©ãã³ã°ããŒãºã«å¯Ÿãããã察å¿ããããèšèªãžãšé²åãç¶ããŠããŸãã
5. C++ã§ãããžã§ã¯ããå§ãã
5.1 ç°¡åãªãããžã§ã¯ãã®ã»ããã¢ãã
C++ãããžã§ã¯ããå§ããã«ã¯ãæåã«éçºç°å¢ãæŽããå¿ èŠããããŸããçµ±åéçºç°å¢(IDE)ãšããŠVisual StudioãEclipseãªã©ã人æ°ã§ãããã·ã³ãã«ãªããã¹ããšãã£ã¿ãšã³ã³ãã€ã©ã§ãã£ãŠãå§ããããŸãããŸãC++ã®ã³ã³ãã€ã©ãã€ã³ã¹ããŒã«ããé©åãªIDEãéžã¶ããšãã¹ã¿ãŒãå°ç¹ãšãªããŸãã
ãããžã§ã¯ãã®æ§æã決ãã次ã®ã¹ãããã§ã¯ããœãŒã¹ãã¡ã€ã«(.cpp)ãšããããŒãã¡ã€ã«(.hãŸãã¯.hpp)ã管çããããšã«ãªããŸãããã®éããã¡ã€ã«ããšã«ã³ãŒããé©åã«åããŠç®¡çããããšã§ãåŸã®ä¿å®æ§ãèªã¿ãããã«å¯äžããŸãããŸããmakefileãCMakeLists.txt ã®ãããªãã«ãã·ã¹ãã ãå©çšãããšããã«ãããã»ã¹ãèªååããããå¹ççãªéçºãå¯èœã§ãã
æåŸã«ãããžã§ã¯ãã®ãã«ããšå®è¡ããã¹ãããŸããã䜿ãã®IDEã«ã¯ãã«ããã¿ã³ãåãã£ãŠããããšãå€ãã§ãããã³ãã³ãã©ã€ã³ãå©çšããŠãã«ãããããšãã§ããŸããããã§ã¯ã·ã³ãã«ãªãHello Worldãããã°ã©ã ã§åäœç¢ºèªãããã®ãäžè¬çã§ãããã®ã¹ããããåå¿è ã«ã¯ç¹ã«éèŠã§ãç¡äºãããŒã¯ãŒã«ããåºåãããã°ãã»ããã¢ããã¯æåã§ãã
5.2 ãœãŒã¹ã³ãŒãã®ç®¡çïŒããŒãžã§ã³ç®¡çã·ã¹ãã
ç¶ç¶çãªC++ãããžã§ã¯ãéçºã§å¿ é ãšãªãã®ãããŒãžã§ã³ç®¡çã·ã¹ãã ã§ããGitã¯äžçäžã§å¹ åºã䜿çšãããã·ã¹ãã ã§ãã³ãŒãã®å€æŽå±¥æŽã远跡ããããŒã ã§ã®å ±åäœæ¥ãã¹ã ãŒãºã«è¡ãã®ã«åœ¹ç«ã¡ãŸããGitHubãGitLabããŸãã¯Bitbucketãšãã£ããã©ãããã©ãŒã ãšé£æºããããšãæšå¥šãããŸãã
ããŒãžã§ã³ç®¡çãå§ããã«ããããæåã«ãªããžããªãäœæããåæã®ã³ãŒãããŒã¹ãã³ãããããŸããã³ãŒãã決ããããééã§ã³ãããããæå³ã®ããã¡ãã»ãŒãžãã€ããããšã§ãåŸã§å€æŽå 容ã確èªãããããªããŸãããã©ã³ããçšããŠæ©èœããšã«äœæ¥ãåããããŒãžãªã¯ãšã¹ãã§ã³ãŒãã¬ãã¥ãŒãè¡ãããšãäžè¬çãªã¯ãŒã¯ãããŒã§ãã
ããã«ãã¿ã°ãå©çšããŠãªãªãŒã¹ããŒãžã§ã³ã管çããããåé¡è¿œè·¡ã·ã¹ãã ãšé£æºããŠãã°ãæ©èœèŠæ±ãå¹ççã«æ±ããããã«ããããšãéçºã®å¹çåã«ç¹ãããŸããå®æçã«ãªã¢ãŒããªããžããªã«ããã·ã¥ãè¡ãããšã§ãããŒã ã¡ã³ããŒéã§ææ°ã®ã³ãŒããå ±æãããããªããŸãã
5.3 ã¢ãžã¥ãŒã«ãšã©ã€ãã©ãªã®å©çš
å¹ççãªãããžã§ã¯ãéçºã®ããã«ã¯ãæ¢åã®ã¢ãžã¥ãŒã«ãã©ã€ãã©ãªã®æŽ»çšãäžå¯æ¬ ã§ããæšæºãã³ãã¬ãŒãã©ã€ãã©ãª(STL)ã¯ãããŸããŸãªäžè¬çãªããŒã¿æ§é ãã¢ã«ãŽãªãºã ãæäŸããŠãããããããããžã§ã¯ãã«è¿ éã«å°å ¥ã§ããŸãããŸããBoostãQtãšãã£ããµãŒãããŒãã£ã©ã€ãã©ãªã¯ãç¹å®ã®æ©èœãããè€éãªãã®ã«æ¡åŒµããã®ã«åœ¹ç«ã¡ãŸãã
ã¢ãžã¥ãŒã«ã®äœ¿çšã«ã¯ãé©åãªincludeæãçšããããšã§ããããŒãã¡ã€ã«ããœãŒã¹ã³ãŒãã«çµã¿èŸŒã¿ãŸããã©ã€ãã©ãªã®ãªã³ã¯ãå¿ èŠãªå Žåã«ã¯ãã³ã³ãã€ã©ã«å¯ŸããŠã©ã€ãã©ãªã®ãã¹ãæ瀺ããããã«ããã«ãã·ã¹ãã ã®èšå®ãè¡ãããšãéèŠã§ããåçã©ã€ãã©ãªãéçã©ã€ãã©ãªã®ã©ã¡ãã䜿çšãããã¯ããããžã§ã¯ãã®èŠä»¶ã«ãã£ãŠç°ãªããŸãã
ãŸããããã±ãŒãžãããŒãžã£ãŒãå©çšããã©ã€ãã©ãªã®ç®¡çã¯ãäŸåæ§ã®è§£æ±ºãã¢ããããŒãã®èªååã«å¹æçã§ããäŸãã°ãvcpkgãConanã®ãããªããŒã«ã¯C++ã®ã©ã€ãã©ãªç®¡çãç°¡çŽ åãããããžã§ã¯ããããç°¡åã«ä¿å®ã§ããããã«ããŸããã©ã€ãã©ãªç®¡çã¯ãããžã§ã¯ããæé·ããã«ã€ããŠè€éã«ãªãã®ã§ãåæ段éããé©åãªããŒã«ã®æ¡çšãæ€èšããããšãéèŠã§ãã
5.4 C++ãããžã§ã¯ãã®ãã¹ããã©ã¯ãã£ã¹
C++ã§ã®ãããžã§ã¯ãéçºã«ã¯ãå¯èªæ§ã®é«ãã³ãŒããæžãããšã倧åã§ããé©åãªåœåèŠåãèšããããšã§ãé¢æ°ãå€æ°ã®ç®çãæ確ã«ãªããŸãããŸããå®æçã«ãªãã¡ã¯ã¿ãªã³ã°ãè¡ãããšã§ãã³ãŒãã®ä¿å®æ§ãé«ããããšãã§ããŸãã
ãšã©ãŒåŠçã¯ããã°ã©ã ã®å®å®æ§ãä¿ã€ããã«éèŠã§ããäŸå€åŠçãé©åã«è¡ããäºæãã¬ãšã©ãŒãçºçãããšãã«ããã°ã©ã ãé©åã«åå¿ããããã«ããŠããããšãæ±ããããŸããããã«å ããŠãUnityãã¹ããçµåãã¹ããªã©ã®ãã¹ããçµã¿èŸŒãããšã§ãå®å®æ§ãšä¿å®æ§ãããã«åäžãããããšãã§ããŸãã
ããã«ãããã¥ã¡ã³ããšã³ã¡ã³ãã¯ãã³ãŒããç解ããããããããã«äžå¯æ¬ ã§ããDoxygenã®ãããªããŒã«ãå©çšããŠAPIããã¥ã¡ã³ããçæããããã³ãŒãå ã«æå³ã®ããã³ã¡ã³ããæ®ãããšã§ãå°æ¥çãªéçºè ã«ãšã£ãŠã芪åãªãããžã§ã¯ãã«ãªããŸããã³ãŒãã¬ãã¥ãŒãå®ããŠå質ãä¿ã€æåãäœãããšããé·æçãªãããžã§ã¯ãæåã®éµãšãªããŸãã
4. ãªãœãŒã¹ãšæ¬¡ã®ã¹ããã
4.1 ç¶ããããã®ãªãœãŒã¹ãšã³ãã¥ããã£
C++ã®åŠç¿ãæ¢ããªãããã«ã¯ãè±å¯ãªãªãœãŒã¹ãšæ¯ãåããã³ãã¥ããã£ãäžå¯æ¬ ã§ããStack OverflowãGitHubã®C++ã³ãã¥ããã£ã¯ãçåã解決ãäºãã«å©ãåãå ŽãšããŠç¥ãããŠããŸãããŸããRedditã«ã¯å€ãã®C++é¢é£ã®ãµãã¬ãã£ããããããæ å ±äº€æããããã¯ãŒãã³ã°ãè¡ãããŠããŸãã
ããŒã«ã«ã«ã¯ãC++ãŠãŒã¶ãŒã°ã«ãŒããMeetupãéå¬ãããçŽæ¥ã®äº€æµãå¯èœã§ããããããéãŸãã§ã¯ãæ°ããç¥èãç¿åŸã§ããã ãã§ãªãããããžã§ã¯ãããã£ãªã¢ã«æçãªã³ãã¯ã·ã§ã³ãç¯ããã£ã³ã¹ããããŸãã
ãªã³ã©ã€ã³ãã©ãŒã©ã ãã¡ãŒãªã³ã°ãªã¹ãã圹ã«ç«ã¡ãŸããCPlusPlus.comãCodeProjectã¯ãããã°ã©ãã³ã°ã®åé¡ã«å¯Ÿããå©ããåŸãã®ã«ç¹ã«åªãããœãŒã¹ã§ããæãåããªããã¹ãã«ã磚ããC++ã®äžçãžããæ·±ãèžã¿èŸŒãããã«å©çšããŸãããã
4.2 C++ã®å ¬åŒããã¥ã¡ã³ããšåŠç¿ãµã€ã
C++ã®ãã¹ã¿ãŒã«ãªãããã«ã¯ãå ¬åŒããã¥ã¡ã³ãã¯è²Žéãªè³æºã§ããISO(åœéæšæºåæ©æ§)ãçºè¡ããC++ã®æšæºèŠæ Œã¯ãèšèªã®çŽ°ãã詳现ãç¥ãäžã§éèŠãªæç®ã§ãããã ãããã®èªã¿è§£ãã¯åå¿è ã«ã¯é£ããå ŽåããããŸãã
ãããè£ããããå ¥éè åãã®ãŠã§ããµã€ããšããŠã¯LearnCpp.comãCplusplus.comããããŸãããããã®ãµã€ãã¯ãåºç€ããå¿çšãŸã§æ®µéçã«èª¬æããŠãããå®éã®ã³ãŒãäŸã亀ããªããC++ã®ç解ãæ·±ããããšãã§ããŸãã
ããã«é²ãã åŠç¿ã«ã¯ãUdemyãCourseraãªã©ã®ãªã³ã©ã€ã³åŠç¿ãã©ãããã©ãŒã ã§å°éè¬åº§ãåããããšãå¯èœã§ããããŒãã«ç¹åããè¬åº§ãéžã¶ããšã§ãç¹å®ã®ã¹ãã«ãç¥èã®ç¿åŸãç®æãããšãã§ããŸãã
4.3 äžçŽè åãã®åŠç¿ããŒããšæ¹åæ§
åºæ¬çãªæŠå¿µãç解ãããã次ã¯äžçŽè åãã®ããŒãã«ææŠããŸãããããã³ãã¬ãŒãããã°ã©ãã³ã°ãSTL(æšæºãã³ãã¬ãŒãã©ã€ãã©ãª)ãªã©ãããããããŒãã§ããSTLãåŠã¶ããšã§ãããŸããŸãªããŒã¿æ§é ãã¢ã«ãŽãªãºã ãããæ·±ãç解ããå¹ççãªããã°ã©ãã³ã°ãå¯èœã«ãªããŸãã
ãŸããã¡ã¢ãªç®¡çããã€ã³ã¿ãåç §ã®é«åºŠãªå©çšæ³ãäžçŽè ã«ãšã£ãŠå¿ é ã®é åã§ããC++ã§ã¯ãã¡ã¢ãªå¹çãšå®è¡é床ã®æé©åãéèŠãªããŒãã®äžã€ã§ããããããã®ç¥èã¯ãã®éæã«äžå¯æ¬ ã§ãã
ããã«ããã«ãã¹ã¬ããããã°ã©ãã³ã°ããããã¯ãŒã¯ããã°ã©ãã³ã°ãªã©ãç¹å®ã®åéã«ç¹åããŠåŠç¿ããããšã次ã®ã¹ããããšããŠèããããŸããããã«ãã£ãŠãC++ã®ããã°ã©ã ãå®éã«ã©ã®ããã«å¿çšããããã«ã€ããŠã®ç解ãæ·±ãŸããŸãã
4.4 C++ã䜿çšããå®äžçã®ã¢ããªã±ãŒã·ã§ã³äŸ
C++ã¯ãã®æ§èœã®è¯ããããå®äžçã®ã¢ããªã±ãŒã·ã§ã³ã§åºã䜿çšãããŠããŸããã²ãŒã éçºã§ã¯ãé«ãããã©ãŒãã³ã¹ãèŠæ±ãããã³ã³ããŒãã³ãã®å®è£ ã«C++ãéžã°ããããšãå€ãã§ããUnreal Engineãªã©ã®äººæ°ã®ã²ãŒã ãšã³ãžã³ã¯C++ã§æžãããŠããŸãã
ããã«ããã¡ã€ãã³ã¹ã®åéã§ã¯ãé«éãªãã©ã³ã¶ã¯ã·ã§ã³åŠçãããŒã¿åæã«C++ã䜿çšãããŸããã·ã¹ãã ãã¬ãŒãã£ã³ã°ããªã¹ã¯ç®¡çã®ã·ã¹ãã ã¯ãC++ã®å¹ççãªèšç®èœåã掻ãããŠéçºãããããšãäžè¬çã§ãã
çµèŸŒã¿ã·ã¹ãã ããããã£ã¯ã¹ã®åéã§ã¯ãããŒããŠã§ã¢ãšå¯æ¥ã«é£æºããããã®ãœãããŠã§ã¢ãäœæããéã«C++ãå©çšãããŸãããªã¢ã«ã¿ã€ã ã·ã¹ãã ã®éçºã§ã¯ãC++ã®æã€äœã¬ãã«ã®æäœèœåãšé«éæ§ãéåžžã«éå®ãããŸãã
5. ãŸãšã
C++ã¯é«éãã€ãã¯ãã«ãªããã°ã©ãã³ã°èšèªã§ããã®åºç€ããæ°æ©èœãŸã§ãçæéã§ç解ãæ·±ããããšã倧åã§ããããžãã¹ããŒãœã³åãã«ãC++ã®æŽå²ãç¹åŸŽãåºæ¬æ§æãã¯ãããšããå¿ èŠãªç¥èã端çã«åŠã³ãéçºç°å¢ã®èšå®ããã³ã³ãã€ã«ãå®è¡æ¹æ³ãŸã§ãææ¡ããŸããããåå¿è ãå¹çããç¿åŸããããã®å匷æ³ãèšç»ç«ãŠãåºæ¬çãªããã°ã©ã ã®æžãæ¹ãããªããžã§ã¯ãæåããã°ã©ãã³ã°ã®æŠå¿µãããã«ã¯ãããžã§ã¯ã管çã®ããŠããŠããã¹ããã©ã¯ãã£ã¹ã玹ä»ããŸããæåŸã«ãC++ã³ãã¥ããã£ãžã®åå ãå®äžçã®ã¢ããªã±ãŒã·ã§ã³äŸãéããŠãåŠç¿ãããã«é²ããããã®ãªãœãŒã¹ãæ¢æ±ããããšã§ãã¹ãã«ã¢ãããžãšã€ãªããŸãããã