é åã®ããã©ãŒãã³ã¹ã«ãããã¡ã¢ãªç®¡çã®éèŠãªåœ¹å²ãæ¢æ±ããäžè¬çãªããã«ããã¯ãæé©åæŠç¥ãå¹ççãªãœãããŠã§ã¢æ§ç¯ã®ããã®ãã¹ããã©ã¯ãã£ã¹ãçè§£ããŸãã
ã¡ã¢ãªç®¡ç: é åãããã©ãŒãã³ã¹ããã«ããã¯ã«ãªãå Žå
å¹çæ§ãæåãå·Šå³ãããœãããŠã§ã¢éçºã®äžçã§ã¯ãã¡ã¢ãªç®¡çã®çè§£ãäžå¯æ¬ ã§ãã ããã¯ãäžçäžã®ããŸããŸãªããã°ã©ãã³ã°èšèªãã¢ããªã±ãŒã·ã§ã³ã§åºã䜿çšãããŠããåºæ¬çãªããŒã¿æ§é ã§ããé åãæ±ãå Žåã«ç¹ã«åœãŠã¯ãŸããŸãã é åã¯ããŒã¿ã®ã³ã¬ã¯ã·ã§ã³ã䟿å©ã«ä¿åã§ããŸãããã¡ã¢ãªã广çã«ç®¡çãããŠããªãå Žåãããã©ãŒãã³ã¹ã®å€§ããªããã«ããã¯ã«ãªãå¯èœæ§ããããŸãã ãã®ããã°æçš¿ã§ã¯ãé åã®ã³ã³ããã¹ãã«ãããã¡ã¢ãªç®¡çã®è€éããæãäžããæœåšçãªèœãšã穎ãæé©åæŠç¥ãããã³äžçäžã®ãœãããŠã§ã¢éçºè ã«é©çšã§ãããã¹ããã©ã¯ãã£ã¹ãæ¢ããŸãã
é åã¡ã¢ãªå²ãåœãŠã®åºæ¬
ããã©ãŒãã³ã¹ã®ããã«ããã¯ãæ¢ãåã«ãé åãã©ã®ããã«ã¡ã¢ãªãæ¶è²»ããããçè§£ããããšãäžå¯æ¬ ã§ãã é åã¯ãé£ç¶ããã¡ã¢ãªäœçœ®ã«ããŒã¿ãæ ŒçŽããŸãã ãã®é£ç¶æ§ã¯ãé«éã¢ã¯ã»ã¹ã«ãšã£ãŠéèŠã§ãããä»»æã®èŠçŽ ã®ã¡ã¢ãª ã¢ãã¬ã¹ã¯ããã®ã€ã³ããã¯ã¹ãšåèŠçŽ ã®ãµã€ãºã䜿çšããŠçŽæ¥èšç®ã§ããŸãã ãã ãããã®ç¹æ§ã«ãããã¡ã¢ãªã®å²ãåœãŠãšè§£æŸã«èª²é¡ãçããŸãã
éçé åãšåçé å
é åã¯ãã¡ã¢ãªã®å²ãåœãŠæ¹æ³ã«åºã¥ããŠã2 ã€ã®äž»èŠãªã¿ã€ãã«åé¡ã§ããŸãã
- éçé
å: éçé
åã®ã¡ã¢ãªã¯ãã³ã³ãã€ã«æã«å²ãåœãŠãããŸãã éçé
åã®ãµã€ãºã¯åºå®ãããŠãããå®è¡æã«å€æŽããããšã¯ã§ããŸããã ãã®ã¢ãããŒãã¯ãå²ãåœãŠé床ã®ç¹ã§å¹ççã§ãããåçãªå²ãåœãŠãªãŒããŒããããå¿
èŠãšããŸããã ãã ããæè»æ§ã«æ¬ ããŸãã é
åãµã€ãºãéå°è©äŸ¡ãããŠããå Žåããããã¡ãŒãªãŒããŒãããŒãçºçããå¯èœæ§ããããŸãã é倧è©äŸ¡ãããŠããå Žåã¯ãã¡ã¢ãªã®ç¡é§ã«ã€ãªããå¯èœæ§ããããŸãã äŸãšããŠã¯ãC/C++ ã®
int myArray[10];ããããã°ã©ã ã®ã³ã³ãã€ã«æã« Java ã®int[] myArray = new int[10];ãªã©ãããŸããŸãªããã°ã©ãã³ã°èšèªã§èŠã€ããããšãã§ããŸãã - åçé å: äžæ¹ãåçé åã¯ãå®è¡æã«ã¡ã¢ãªãå²ãåœãŠãŸãã ãã®ãµã€ãºã¯å¿ èŠã«å¿ããŠèª¿æŽã§ãããããæè»æ§ãåäžããŸãã ãã ãããã®æè»æ§ã«ã¯ã³ã¹ããããããŸãã åçå²ãåœãŠã«ã¯ã空ãã¡ã¢ãªãããã¯ã®æ€çŽ¢ãå²ãåœãŠãããã¡ã¢ãªã®ç®¡çãããã³é åã®ãµã€ãºå€æŽ (ããŒã¿ã®æ°ããã¡ã¢ãªäœçœ®ãžã®ã³ããŒãå¿ èŠã«ãªãå ŽåããããŸã) ãªã©ããªãŒããŒããããå«ãŸããŸãã äžè¬çãªäŸãšããŠã¯ãC++ ã® `std::vector`ãJava ã® `ArrayList`ãPython ã®ãªã¹ããªã©ããããŸãã
éçé åãšåçé åã®ã©ã¡ããéžæãããã¯ãã¢ããªã±ãŒã·ã§ã³ã®å ·äœçãªèŠä»¶ã«ãã£ãŠç°ãªããŸãã é åãµã€ãºãäºåã«ããã£ãŠããã倿Žãããå¯èœæ§ãäœãå Žåã¯ãå¹çæ§ã®ããã«éçé åãæšå¥šãããããšããããããŸãã åçé åã¯ããµã€ãºãäºæž¬äžå¯èœãŸãã¯å€æŽãããå¯èœæ§ãããå Žåã«æé©ã§ãããããã°ã©ã ã¯å¿ èŠã«å¿ããŠããŒã¿ã¹ãã¬ãŒãžãé©å¿ãããããšãã§ããŸãã ãã®çè§£ã¯ãã·ãªã³ã³ãã¬ãŒãããã³ã¬ããŒã«ãŸã§ããããã®æ±ºå®ãã¢ããªã±ãŒã·ã§ã³ã®æ¡åŒµæ§ãšããã©ãŒãã³ã¹ã«åœ±é¿ãäžããããŸããŸãªå°åã§ãéçºè ã«ãšã£ãŠäžå¯æ¬ ã§ãã
é åã«é¢ããäžè¬çãªã¡ã¢ãªç®¡çã®ããã«ããã¯
é åãæ±ãå Žåãããã€ãã®èŠå ãã¡ã¢ãªç®¡çã®ããã«ããã¯ã®åå ãšãªãå¯èœæ§ããããŸãã ãããã®ããã«ããã¯ã¯ãç¹ã«å€§èŠæš¡ãªããŒã¿ã»ãããåŠçããããé »ç¹ã«é åæäœãå®è¡ãããããã¢ããªã±ãŒã·ã§ã³ã§ãããã©ãŒãã³ã¹ãå€§å¹ ã«äœäžãããå¯èœæ§ããããŸãã ããã©ãŒãã³ã¹ãæé©åããå¹ççãªãœãããŠã§ã¢ãäœæããã«ã¯ããããã®ããã«ããã¯ãç¹å®ããŠå¯ŸåŠããããšãäžå¯æ¬ ã§ãã
1. éå°ãªã¡ã¢ãªã®å²ãåœãŠãšè§£æŸ
åçé åã¯æè»ã§ãããéå°ãªã¡ã¢ãªã®å²ãåœãŠãšè§£æŸã®åœ±é¿ãåããå¯èœæ§ããããŸãã é »ç¹ãªãµã€ãºå€æŽ (åçé åã§ã®äžè¬çãªæäœ) ã¯ãããã©ãŒãã³ã¹ãäœäžãããå¯èœæ§ããããŸãã åãµã€ãºå€æŽæäœã«ã¯ãéåžžãæ¬¡ã®æé ãå«ãŸããŸãã
- ç®çã®ãµã€ãºã®æ°ããã¡ã¢ãªãããã¯ãå²ãåœãŠãã
- å€ãé åããæ°ããé åã«ããŒã¿ãã³ããŒããã
- å€ãã¡ã¢ãªãããã¯ãè§£æŸããã
ãããã®æäœã«ã¯ãç¹ã«å€§èŠæš¡ãªé åãæ±ãå Žåã倧ããªãªãŒããŒãããã䌎ããŸãã äžçäžã§äœ¿çšãããŠãã e ã³ããŒã¹ ãã©ãããã©ãŒã ã補åã«ã¿ãã°ãåçã«ç®¡çããŠããã·ããªãªãèããŠã¿ãŸãããã ã«ã¿ãã°ãé »ç¹ã«æŽæ°ãããå Žåãè£œåæ å ±ãä¿æããé åã¯ãã«ã¿ãã°ã®æŽæ°ããã³ãŠãŒã¶ãŒã®ãã©ãŠãžã³ã°äžã«ããã©ãŒãã³ã¹ãäœäžããåå ãšãªããäžå®ã®ãµã€ãºå€æŽãå¿ èŠã«ãªãå ŽåããããŸãã åæ§ã®åé¡ã¯ãããŒã¿ã®éãå€§å¹ ã«å€åããç§åŠã·ãã¥ã¬ãŒã·ã§ã³ãããŒã¿åæã¿ã¹ã¯ã§ãçºçããŸãã
2. ãã©ã°ã¡ã³ããŒã·ã§ã³
ã¡ã¢ãª ãã©ã°ã¡ã³ããŒã·ã§ã³ãããã 1 ã€ã®äžè¬çãªåé¡ã§ãã ã¡ã¢ãªãç¹°ãè¿ãå²ãåœãŠãããè§£æŸããããšããã©ã°ã¡ã³ãåãããå¯èœæ§ããããŸããã€ãŸãã空ãã¡ã¢ãªãããã¯ãã¢ãã¬ã¹ç©ºéå šäœã«æ£ãã°ã£ãŠããããšãæå³ããŸãã ãã®ãã©ã°ã¡ã³ããŒã·ã§ã³ã¯ãããã€ãã®åé¡ã«ã€ãªããå¯èœæ§ããããŸãã
- å éšãã©ã°ã¡ã³ããŒã·ã§ã³: ããã¯ãå²ãåœãŠãããã¡ã¢ãªãããã¯ããæ ŒçŽããå¿ èŠãããå®éã®ããŒã¿ããã倧ããå Žåã«çºçããã¡ã¢ãªã®ç¡é§ã«ã€ãªãããŸãã
- å€éšãã©ã°ã¡ã³ããŒã·ã§ã³: ããã¯ãå²ãåœãŠèŠæ±ãæºããã®ã«ååãªç©ºãã¡ã¢ãªãããã¯ããããã®ã®ãåäžã®é£ç¶ãããããã¯ãååã«å€§ãããªãå Žåã«çºçããŸãã ããã«ãããå²ãåœãŠã®å€±æããé©åãªãããã¯ãèŠã€ããããã®ããé·ãæéããããå¯èœæ§ããããŸãã
ãã©ã°ã¡ã³ããŒã·ã§ã³ã¯ãé åãå«ãåçã¡ã¢ãªå²ãåœãŠã䌎ããã¹ãŠã®ãœãããŠã§ã¢ã«ãšã£ãŠæžå¿µäºé ã§ãã æéã®çµéãšãšãã«ãé »ç¹ãªå²ãåœãŠãšè§£æŸã®ãã¿ãŒã³ã¯ãæçåãããã¡ã¢ãªç°å¢ãäœãåºããé åæäœãšã·ã¹ãã å šäœã®ããã©ãŒãã³ã¹ãäœäžãããå¯èœæ§ããããŸãã ããã¯ãäœé å»¶ãšå¹ççãªãªãœãŒã¹å©çšãäžå¯æ¬ ã§ãã財å (ãªã¢ã«ã¿ã€ã ã®æ ªåŒååŒ)ãã²ãŒã (åçãªããžã§ã¯ãã®äœæ)ããœãŒã·ã£ã«ã¡ãã£ã¢ (ãŠãŒã¶ãŒããŒã¿ç®¡ç) ãªã©ãããŸããŸãªã»ã¯ã¿ãŒã®éçºè ã«åœ±é¿ãäžããŸãã
3. ãã£ãã·ã¥ãã¹
ææ°ã® CPU ã¯ãã¡ã¢ãªãžã®ã¢ã¯ã»ã¹ãé«éåããããã«ãã£ãã·ã¥ãå©çšããŠããŸãã ãã£ãã·ã¥ã¯ãé »ç¹ã«ã¢ã¯ã»ã¹ãããããŒã¿ãããã»ããµã®è¿ãã«ä¿åããæ å ±ã®ååŸã«ãããæéãççž®ããŸãã é åã¯ãé£ç¶ããã¹ãã¬ãŒãžã§ãããããåªãããã£ãã·ã¥åäœã®æ©æµãåããŸãã ãã ããããŒã¿ããã£ãã·ã¥ã«ä¿åãããŠããªãå Žåããã£ãã·ã¥ãã¹ãçºçããã¡ã¢ãªãžã®ã¢ã¯ã»ã¹ãé ããªããŸãã
ãã£ãã·ã¥ãã¹ã¯ãããŸããŸãªçç±ã§çºçããå¯èœæ§ããããŸãã
- å€§èŠæš¡é å: éåžžã«å€§èŠæš¡ãªé åã¯ããã£ãã·ã¥ã«å®å šã«ã¯åãŸããªãå ŽåããããçŸåšãã£ãã·ã¥ãããŠããªãèŠçŽ ã«ã¢ã¯ã»ã¹ãããšãã£ãã·ã¥ãã¹ãçºçããŸãã
- éå¹ççãªã¢ã¯ã»ã¹ãã¿ãŒã³: é åèŠçŽ ã«éã·ãŒã±ã³ã·ã£ã«ãªæ¹æ³ (ããšãã°ãã©ã³ãã ã«ãžã£ã³ããã) ã§ã¢ã¯ã»ã¹ãããšããã£ãã·ã¥ã®å¹çãäœäžããå¯èœæ§ããããŸãã
é åã¢ã¯ã»ã¹ãã¿ãŒã³ãæé©åããããŒã¿ã®å±ææ§ (é »ç¹ã«ã¢ã¯ã»ã¹ãããããŒã¿ãã¡ã¢ãªå ã§äºãã«è¿ã¥ããŠããããš) ã確ä¿ãããšããã£ãã·ã¥ã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããã£ãã·ã¥ãã¹ã®åœ±é¿ã軜æžã§ããŸãã ããã¯ãç»ååŠçããããªãšã³ã³ãŒãã£ã³ã°ãç§åŠèšç®ãªã©ã髿§èœãªã¢ããªã±ãŒã·ã§ã³ã§ã¯äžå¯æ¬ ã§ãã
4. ã¡ã¢ãªãªãŒã¯
ã¡ã¢ãªãªãŒã¯ã¯ãã¡ã¢ãªãå²ãåœãŠãããŠããŸãããè§£æŸãããªãå Žåã«çºçããŸãã æéã®çµéãšãšãã«ãã¡ã¢ãªãªãŒã¯ã¯äœ¿çšå¯èœãªãã¹ãŠã®ã¡ã¢ãªãæ¶è²»ããå¯èœæ§ããããã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ãã·ã¥ãŸãã¯ã·ã¹ãã ã®äžå®å®æ§ã®åå ãšãªããŸãã ã¡ã¢ãªãªãŒã¯ã¯ããã€ã³ã¿ãŒãšåçã¡ã¢ãªå²ãåœãŠã®èª€ã£ã䜿çšãšé¢é£ä»ããããããšããããããŸãããç¹ã«åçé åãªã©ãé åã§ãçºçããå¯èœæ§ããããŸãã åçé åãå²ãåœãŠãããåç §ã倱ãããå Žå (ããšãã°ã誀ã£ãã³ãŒããè«çãšã©ãŒãåå )ãé åã«å²ãåœãŠãããã¡ã¢ãªã¯ã¢ã¯ã»ã¹ã§ããªããªããè§£æŸãããããšã¯ãããŸããã
ã¡ã¢ãªãªãŒã¯ã¯æ·±å»ãªåé¡ã§ãã ãããã¯ãã°ãã°åŸã ã«çŸãããããæ€åºããŠãããã°ããããšãå°é£ã§ãã å€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã§ã¯ãå°ããªãªãŒã¯ãæéã®çµéãšãšãã«è€åçã«çºçããæçµçã«æ·±å»ãªããã©ãŒãã³ã¹ã®äœäžãã·ã¹ãã é害ã«ã€ãªããå¯èœæ§ããããŸãã 峿 Œãªãã¹ããã¡ã¢ãªãããã¡ã€ãªã³ã°ããŒã«ãããã³ãã¹ããã©ã¯ãã£ã¹ã®éµå®ã¯ãé åããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã§ã®ã¡ã¢ãªãªãŒã¯ãé²ãããã«äžå¯æ¬ ã§ãã
é åã¡ã¢ãªç®¡çã®æé©åæŠç¥
é åã«é¢é£ããã¡ã¢ãªç®¡çã®ããã«ããã¯ã軜æžããããã©ãŒãã³ã¹ãæé©åããããã«ãããã€ãã®æŠç¥ãæ¡çšã§ããŸãã 䜿çšããæŠç¥ã®éžæã¯ãã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®èŠä»¶ãšãåŠçãããããŒã¿ã®ç¹æ§ã«ãã£ãŠç°ãªããŸãã
1. äºåå²ãåœãŠãšãµã€ãºå€æŽæŠç¥
1 ã€ã®æå¹ãªæé©åææ³ã¯ãé åã«å¿ èŠãªã¡ã¢ãªãäºåã«å²ãåœãŠãããšã§ãã ããã«ãããç¹ã«é åã®ãµã€ãºãäºåã«ããã£ãŠããå ŽåããŸãã¯åççã«æšå®ã§ããå Žåã«ãåçå²ãåœãŠãšè§£æŸã®ãªãŒããŒããããåé¿ã§ããŸãã åçé åã®å Žåãæåã«å¿ èŠãªå®¹éããã倧ããªå®¹éãäºåã«å²ãåœãŠãé åãæŠç¥çã«ãµã€ãºå€æŽããããšã§ããµã€ãºå€æŽæäœã®é »åºŠãæžããããšãã§ããŸãã
åçé åã®ãµã€ãºå€æŽæŠç¥ã«ã¯ã次ã®ãã®ããããŸãã
- ææ°é¢æ°çæé·: é åã®ãµã€ãºã倿Žããå¿ èŠãããå Žåã¯ãçŸåšã®ãµã€ãºã®åæ° (ããšãã°ããµã€ãºã® 2 å) ã®æ°ããé åãå²ãåœãŠãŸãã ããã«ããããµã€ãºå€æŽã®é »åºŠãæžããŸãããé åãæå€§å®¹éã«éããªãå Žåãã¡ã¢ãªãç¡é§ã«ãªãå¯èœæ§ããããŸãã
- å¢åæé·: é åã倧ããããå¿ èŠããããã³ã«ãäžå®éã®ã¡ã¢ãªã远å ããŸãã ããã«ãããã¡ã¢ãªã®ç¡é§ãæå°éã«æããããšãã§ããŸããããµã€ãºå€æŽæäœã®åæ°ãå¢ããŸãã
- ã«ã¹ã¿ã æŠç¥: äºæ³ãããæé·ãã¿ãŒã³ã«åºã¥ããŠãç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«åãããŠãµã€ãºå€æŽæŠç¥ã調æŽããŸãã ããŒã¿ãã¿ãŒã³ãèæ ®ããŸããããšãã°ãéèã¢ããªã±ãŒã·ã§ã³ã§ã¯ã1 æ¥ã®ããããµã€ãºã®å¢å ãé©åã§ããå¯èœæ§ããããŸãã
IoT ããã€ã¹ã§ã»ã³ãµãŒã®èªã¿åãå€ãæ ŒçŽããããã«äœ¿çšãããé åã®äŸãèããŠã¿ãŸãããã èªã¿åãã®äºæ³ã¬ãŒããããã£ãŠããå Žåãé©åãªéã®ã¡ã¢ãªãäºåã«å²ãåœãŠããšãé »ç¹ãªã¡ã¢ãªå²ãåœãŠãåé¿ãããããã€ã¹ã®å¿çæ§ãç¶æãããŸãã äºåå²ãåœãŠãšå¹æçãªãµã€ãºå€æŽã¯ãããã©ãŒãã³ã¹ãæå€§åããã¡ã¢ãªã®æçåãé²ãããã®éèŠãªæŠç¥ã§ãã ããã¯ãæ¥æ¬ã®çµã¿èŸŒã¿ã·ã¹ãã ãéçºããŠãããšã³ãžãã¢ãããç±³åœã®ã¯ã©ãŠããµãŒãã¹ãäœæããŠãããšã³ãžãã¢ãŸã§ãäžçäžã®ãšã³ãžãã¢ã«é¢é£ããŠããŸãã
2. ããŒã¿ã®å±ææ§ãšã¢ã¯ã»ã¹ãã¿ãŒã³
ãã£ãã·ã¥ã®ããã©ãŒãã³ã¹ãåäžãããã«ã¯ãããŒã¿ã®å±ææ§ãšã¢ã¯ã»ã¹ãã¿ãŒã³ãæé©åããããšãäžå¯æ¬ ã§ãã åè¿°ã®ããã«ãé åã®é£ç¶ããã¡ã¢ãªã¹ãã¬ãŒãžã¯ãåªããããŒã¿ã®å±ææ§ãæ¬è³ªçã«ä¿é²ããŸãã ãã ããé åèŠçŽ ãžã®ã¢ã¯ã»ã¹æ¹æ³ãããã©ãŒãã³ã¹ã«å€§ãã圱é¿ããå¯èœæ§ããããŸãã
ããŒã¿ã®å±ææ§ãåäžãããããã®æŠç¥ã«ã¯ã次ã®ãã®ããããŸãã
- ã·ãŒã±ã³ã·ã£ã«ã¢ã¯ã»ã¹: å¯èœã§ããã°ãé åèŠçŽ ã«ã·ãŒã±ã³ã·ã£ã«ãªæ¹æ³ (ããšãã°ãé åã®æåããæåŸãŸã§å埩ãã) ã§ã¢ã¯ã»ã¹ããŸãã ããã«ããããã£ãã·ã¥ãããçãæå€§åãããŸãã
- ããŒã¿åé åºä»ã: ããŒã¿ã¢ã¯ã»ã¹ãã¿ãŒã³ãè€éãªå Žåã¯ã屿æ§ãåäžãããããã«ãé åå ã®ããŒã¿ãåé åºä»ãããããšãæ€èšããŠãã ããã ããšãã°ã2D é åã§ã¯ãè¡ãŸãã¯åãžã®ã¢ã¯ã»ã¹ã®é åºããã£ãã·ã¥ã®ããã©ãŒãã³ã¹ã«å€§ãã圱é¿ããå¯èœæ§ããããŸãã
- æ§é äœã®é å (SoA) ãšæ§é äœã®é å (AoS): é©åãªããŒã¿ã¬ã€ã¢ãŠããéžæããŸãã SoA ã§ã¯ãåãåã®ããŒã¿ãé£ç¶ããŠæ ŒçŽãããŸã (ããšãã°ããã¹ãŠã® x 座æšãäžç·ã«æ ŒçŽãããæ¬¡ã«ãã¹ãŠã® y 座æšãæ ŒçŽãããŸã)ã AoS ã§ã¯ãé¢é£ããŒã¿ã¯æ§é äœã«ã°ã«ãŒãåãããŸã (ããšãã°ã(x, y) 座æšãã¢)ã æè¯ã®éžæã¯ãã¢ã¯ã»ã¹ãã¿ãŒã³ã«ãã£ãŠç°ãªããŸãã
ããšãã°ãç»åãåŠçããå Žåããã¯ã»ã«ãžã®ã¢ã¯ã»ã¹é åºãèæ ®ããŸãã ãã¯ã»ã«ãé çªã« (è¡ããšã«) åŠçãããšãäžè¬çã«ã©ã³ãã ã«ãžã£ã³ããããããåªãããã£ãã·ã¥ããã©ãŒãã³ã¹ãåŸãããŸãã ã¢ã¯ã»ã¹ãã¿ãŒã³ã®çè§£ã¯ãç»ååŠçã¢ã«ãŽãªãºã ãç§åŠã·ãã¥ã¬ãŒã·ã§ã³ãããã³éäžçãªé åæäœã䌎ããã®ä»ã®ã¢ããªã±ãŒã·ã§ã³ã®éçºè ã«ãšã£ãŠäžå¯æ¬ ã§ãã ããã¯ãããŒã¿åæãœãããŠã§ã¢ã«åãçµãã§ããã€ã³ãã®éçºè ãã髿§èœã³ã³ãã¥ãŒãã£ã³ã°ã€ã³ãã©ã¹ãã©ã¯ãã£ãæ§ç¯ããŠãããã€ãã®éçºè ãªã©ãããŸããŸãªå Žæã«ããéçºè ã«åœ±é¿ãäžããŸãã
3. ã¡ã¢ãªããŒã«
ã¡ã¢ãªããŒã«ã¯ãåçã¡ã¢ãªå²ãåœãŠã管çããããã®ãç¹ã«é »ç¹ã«å²ãåœãŠããã³è§£æŸããããªããžã§ã¯ãã«ãšã£ãŠäŸ¿å©ãªææ³ã§ãã æšæºã¡ã¢ãªã¢ãã±ãŒã¿ãŒ (C/C++ ã® `malloc` ãš `free` ãªã©) ã«äŸåãã代ããã«ãã¡ã¢ãªããŒã«ã¯ãäºåã«å€§ããªã¡ã¢ãªãããã¯ãå²ãåœãŠããã®ããŒã«å ã§ããå°ããªãããã¯ã®å²ãåœãŠãšè§£æŸã管çããŸãã ããã«ããããã©ã°ã¡ã³ããŒã·ã§ã³ãæžãããå²ãåœãŠé床ãåäžãããããšãã§ããŸãã
ã¡ã¢ãªããŒã«ã®äœ¿çšãæ€èšããå Žå:
- é »ç¹ãªå²ãåœãŠãšè§£æŸ: 倿°ã®ãªããžã§ã¯ããç¹°ãè¿ãå²ãåœãŠããã³è§£æŸãããå Žåãã¡ã¢ãªããŒã«ã¯æšæºã¢ãã±ãŒã¿ãŒã®ãªãŒããŒããããåæžã§ããŸãã
- åæ§ã®ãµã€ãºã®ãªããžã§ã¯ã: ã¡ã¢ãªããŒã«ã¯ãåæ§ã®ãµã€ãºã®ãªããžã§ã¯ãã®å²ãåœãŠã«æé©ã§ãã ããã«ãããå²ãåœãŠããã»ã¹ãç°¡çŽ åãããŸãã
- äºæž¬å¯èœãªã©ã€ãã¿ã€ã : ãªããžã§ã¯ãã®ã©ã€ãã¿ã€ã ãæ¯èŒççããäºæž¬å¯èœãªå Žåãã¡ã¢ãªããŒã«ã¯é©åãªéžæè¢ã§ãã
ã²ãŒã ãšã³ãžã³ã®äŸã§ã¯ãã¡ã¢ãªããŒã«ã¯ããã£ã©ã¯ã¿ãŒãçºå°äœãªã©ãã²ãŒã ãªããžã§ã¯ãã®å²ãåœãŠã管çããããã«ãã䜿çšãããŸãã ãããã®ãªããžã§ã¯ãã®ã¡ã¢ãªããŒã«ãäºåã«å²ãåœãŠãããšã§ããšã³ãžã³ã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããã¡ã¢ãªãåžžã«èŠæ±ããããšãªãããªããžã§ã¯ããå¹ççã«äœæããã³ç Žæ£ã§ããŸãã ããã«ãããããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããŸãã ãã®ã¢ãããŒãã¯ãçµã¿èŸŒã¿ã·ã¹ãã ãããªã¢ã«ã¿ã€ã ããŒã¿åŠçãŸã§ããã¹ãŠã®åœã®ã²ãŒã éçºè ããã®ä»ã®å€ãã®ã¢ããªã±ãŒã·ã§ã³ã«é¢é£ããŠããŸãã
4. é©åãªããŒã¿æ§é ã®éžæ
ããŒã¿æ§é ã®éžæã¯ãã¡ã¢ãªç®¡çãšããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãã é åã¯ãã·ãŒã±ã³ã·ã£ã«ããŒã¿ã¹ãã¬ãŒãžãšã€ã³ããã¯ã¹ã«ããé«éã¢ã¯ã»ã¹ã«ã¯æé©ãªéžæè¢ã§ãããç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«ãã£ãŠã¯ãä»ã®ããŒã¿æ§é ã®æ¹ãé©åã§ããå ŽåããããŸãã
é åã®ä»£æ¿æ¡ãæ€èšãã:
- é£çµãªã¹ã: å é ãŸãã¯æ«å°Ÿã§ã®æ¿å ¥ãšåé€ãé »ç¹ã«è¡ãããåçããŒã¿ã«äŸ¿å©ã§ãã ã©ã³ãã ã¢ã¯ã»ã¹ã«ã¯äœ¿çšããªãã§ãã ããã
- ããã·ã¥ããŒãã«: ããŒã«ããæ€çŽ¢ã«å¹ççã§ãã ã¡ã¢ãªãªãŒããŒãããã¯é åãããé«ããªãå¯èœæ§ããããŸãã
- ããªãŒ (ããšãã°ãäºåæ¢çŽ¢ããªãŒ): ãœãŒããããããŒã¿ãç¶æããå¹ççãªæ€çŽ¢ã«äŸ¿å©ã§ãã ã¡ã¢ãªã®äœ¿çšéã¯å€§å¹ ã«ç°ãªããå€ãã®å Žåããã©ã³ã¹ã®åããããªãŒã®å®è£ ãäžå¯æ¬ ã§ãã
éžæã¯ãèŠä»¶ã«åºã¥ããŠè¡ãå¿ èŠããããé åã«ç²ç®çã«åºå·ããã¹ãã§ã¯ãããŸããã éåžžã«é«éãªã«ãã¯ã¢ãããå¿ èŠã§ãã¡ã¢ãªã«å¶çŽããªãå Žåã¯ãããã·ã¥ããŒãã«ã®æ¹ãå¹ççã§ããå¯èœæ§ããããŸãã ã¢ããªã±ãŒã·ã§ã³ãäžéããèŠçŽ ãé »ç¹ã«æ¿å ¥ããã³åé€ããå Žåãé£çµãªã¹ãã®æ¹ãè¯ãå ŽåããããŸãã ãããã®ããŒã¿æ§é ã®ç¹æ§ãçè§£ããããšã¯ãããã©ãŒãã³ã¹ãæé©åããããã®éµãšãªããŸãã ããã¯ãè±åœ (éèæ©é¢) ãããªãŒã¹ãã©ãªã¢ (ããžã¹ãã£ã¯ã¹) ãŸã§ãé©åãªããŒã¿æ§é ãæåã«äžå¯æ¬ ã§ããããŸããŸãªå°åã®éçºè ã«ãšã£ãŠäžå¯æ¬ ã§ãã
5. ã³ã³ãã€ã©ã®æé©åã®å©çš
ã³ã³ãã€ã©ã¯ãé åããŒã¹ã®ã³ãŒãã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããããŸããŸãªæé©åãã©ã°ãšææ³ãæäŸããŸãã ãããã®æé©åæ©èœãçè§£ããŠå©çšããããšã¯ãå¹ççãªãœãããŠã§ã¢ãèšè¿°ããäžã§äžå¯æ¬ ãªéšåã§ãã ã»ãšãã©ã®ã³ã³ãã€ã©ã¯ããµã€ãºãé床ããŸãã¯ãã®äž¡æ¹ã®ãã©ã³ã¹ãæé©åããããã®ãªãã·ã§ã³ãæäŸããŠããŸãã éçºè ã¯ããããã®ãã©ã°ã䜿çšããŠãç¹å®ã®ããã©ãŒãã³ã¹ããŒãºã«åãããŠã³ãŒãã調æŽã§ããŸãã
äžè¬çãªã³ã³ãã€ã©ã®æé©åã«ã¯ã次ã®ãã®ããããŸãã
- ã«ãŒãã¢ã³ããŒãªã³ã°: ã«ãŒãæ¬äœãå±éããããšã«ãããã«ãŒãã®ãªãŒããŒããããåæžããŸãã
- ã€ã³ã©ã€ã³å: 颿°åŒã³åºãã颿°ã³ãŒãã«çœ®ãæããŠãåŒã³åºãã®ãªãŒããŒãããããªãããŸãã
- ãã¯ãã«å: SIMD (Single Instruction, Multiple Data) åœä»€ã䜿çšããŠãè€æ°ã®ããŒã¿èŠçŽ ã«å¯ŸããŠåæã«æäœãå®è¡ããŸããããã¯ãé åæäœã«ç¹ã«åœ¹ç«ã¡ãŸãã
- ã¡ã¢ãªé 眮: ãã£ãã·ã¥ã®ããã©ãŒãã³ã¹ãåäžãããããã«ãã¡ã¢ãªå ã®ããŒã¿ã®é 眮ãæé©åããŸãã
ããšãã°ããã¯ãã«åã¯é åæäœã«ç¹ã«åœ¹ç«ã¡ãŸãã ã³ã³ãã€ã©ã¯ãSIMD åœä»€ã䜿çšããŠãå€ãã®é åèŠçŽ ãåæã«åŠçããæäœã倿ã§ããŸãã ããã«ãããç»ååŠçãç§åŠã·ãã¥ã¬ãŒã·ã§ã³ãªã©ã«èŠãããèšç®ãåçã«é«éåã§ããŸãã ããã¯ãæ°ããã²ãŒã ãšã³ãžã³ãæ§ç¯ããŠããã«ããã®ã²ãŒã éçºè ãããæŽç·Žãããã¢ã«ãŽãªãºã ãèšèšããŠããåã¢ããªã«ã®ç§åŠè ãŸã§ãæ®éçã«é©çšå¯èœãªæŠç¥ã§ãã
é åã¡ã¢ãªç®¡çã®ãã¹ããã©ã¯ãã£ã¹
ç¹å®ã®æé©åææ³ã«å ããŠããã¹ããã©ã¯ãã£ã¹ãéµå®ããããšã¯ãä¿å®æ§ãå¹çæ§ãããã³ãã°ã®ãªãã³ãŒããèšè¿°ããããã«äžå¯æ¬ ã§ãã ãããã®ãã©ã¯ãã£ã¹ã¯ãå ç¢ã§ã¹ã±ãŒã©ãã«ãªé åã¡ã¢ãªç®¡çæŠç¥ãéçºããããã®ãã¬ãŒã ã¯ãŒã¯ãæäŸããŸãã
1. èªåã®ããŒã¿ãšèŠä»¶ãçè§£ãã
é åããŒã¹ã®å®è£ ãéžæããåã«ãããŒã¿ã培åºçã«åæããã¢ããªã±ãŒã·ã§ã³ã®èŠä»¶ãçè§£ããŠãã ããã ããŒã¿ã®ãµã€ãºã倿Žã®é »åºŠãã¢ã¯ã»ã¹ãã¿ãŒã³ãããã©ãŒãã³ã¹ç®æšãªã©ã®èŠçŽ ãèæ ®ããŸãã ãããã®åŽé¢ãç¥ãããšã§ãé©åãªããŒã¿æ§é ãå²ãåœãŠæŠç¥ãããã³æé©åææ³ãéžæã§ããŸãã
æ€èšãã¹ãäž»ãªè³ªå:
- é åã®äºæ³ãµã€ãºã¯? éçãŸãã¯åç?
- é åã¯ã©ã®ãããã®é »åºŠã§å€æŽãããŸãã (远å ãåé€ãæŽæ°)? ããã¯ãé åãšé£çµãªã¹ãã®éžæã«åœ±é¿ããŸãã
- ã¢ã¯ã»ã¹ãã¿ãŒã³ã¯? (ã·ãŒã±ã³ã·ã£ã«ãã©ã³ãã )? ããŒã¿ã¬ã€ã¢ãŠããšãã£ãã·ã¥ã®æé©åãžã®æè¯ã®ã¢ãããŒããæ±ºå®ããŸãã
- ããã©ãŒãã³ã¹ã®å¶çŽã¯? å¿ èŠãªæé©åã®éãæ±ºå®ããŸãã
ããšãã°ããªã³ã©ã€ã³ãã¥ãŒã¹ã¢ã°ãªã²ãŒã¿ãŒã®å Žåãèšäºã®äºæ³æ°ãæŽæ°é »åºŠãããã³ãŠãŒã¶ãŒã®ã¢ã¯ã»ã¹ãã¿ãŒã³ãçè§£ããããšã¯ãæãå¹ççãªã¹ãã¬ãŒãžããã³ååŸæ¹æ³ãéžæããããã«äžå¯æ¬ ã§ãã ååŒãåŠçããã°ããŒãã«ãªéèæ©é¢ã«ãšã£ãŠããããã®èæ ®äºé ã¯ãããŒã¿ã®éãå€ããäœé å»¶ã®ãã©ã³ã¶ã¯ã·ã§ã³ãå¿ èŠãªãããããã«éèŠã§ãã
2. ã¡ã¢ãªãããã¡ã€ãªã³ã°ããŒã«ã®äœ¿çš
ã¡ã¢ãªãããã¡ã€ãªã³ã°ããŒã«ã¯ãã¡ã¢ãªãªãŒã¯ããã©ã°ã¡ã³ããŒã·ã§ã³ã®åé¡ãããã³ãã®ä»ã®ããã©ãŒãã³ã¹ããã«ããã¯ãç¹å®ããããã«éåžžã«åœ¹ç«ã¡ãŸãã ãããã®ããŒã«ã䜿çšãããšãã¡ã¢ãªäœ¿çšéãç£èŠããå²ãåœãŠãšè§£æŸã远跡ããã¢ããªã±ãŒã·ã§ã³ã®ã¡ã¢ãªãããã¡ã€ã«ãåæã§ããŸãã ãããã¯ãã¡ã¢ãªç®¡çã«åé¡ãããã³ãŒãã®é åãç¹å®ã§ããŸãã ããã«ãããæé©åã®åãçµã¿ãéäžãããã¹ãå Žæã«é¢ããæŽå¯ãåŸãããŸãã
äžè¬çãªã¡ã¢ãªãããã¡ã€ãªã³ã°ããŒã«ã«ã¯ã次ã®ãã®ããããŸãã
- Valgrind (Linux): ã¡ã¢ãªãšã©ãŒããªãŒã¯ãããã³ããã©ãŒãã³ã¹ããã«ããã¯ãæ€åºããããã®å€ç®çããŒã«ã
- AddressSanitizer (ASan): GCC ã Clang ãªã©ã®ã³ã³ãã€ã©ã«çµ±åãããé«éã¡ã¢ãªãšã©ãŒæ€åºåšã
- ããã©ãŒãã³ã¹ã«ãŠã³ã¿ãŒ: äžéšã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«çµã¿èŸŒãŸããŠããããŒã«ãŸã㯠IDE ã«çµ±åãããŠããããŒã«ã
- ããã°ã©ãã³ã°èšèªã«åºæã®ã¡ã¢ãªãããã¡ã€ã©ãŒ: ããšãã°ãJava ã®ãããã¡ã€ã©ãŒã.NET ã®ãããã¡ã€ã©ãŒãPython ã®ã¡ã¢ãªãã©ãã«ãŒãªã©ã
éçºãšãã¹ãäžã«ã¡ã¢ãªãããã¡ã€ãªã³ã°ããŒã«ã宿çã«äœ¿çšãããšãã¡ã¢ãªãå¹ççã«ç®¡çãããã¡ã¢ãªãªãŒã¯ãæ©æã«æ€åºãããããã«ãªããŸãã ããã«ãããæéã®çµéãšãšãã«å®å®ããããã©ãŒãã³ã¹ãæäŸãããŸãã ããã¯ãã·ãªã³ã³ãã¬ãŒã®æ°èäŒæ¥ããæ±äº¬ã®äžå¿éšã«ããããŒã ãŸã§ãäžçäžã®ãœãããŠã§ã¢éçºè ã«é¢é£ããŠããŸãã
3. ã³ãŒãã¬ãã¥ãŒãšãã¹ã
ã³ãŒãã¬ãã¥ãŒãšå³æ Œãªãã¹ãã¯ã广çãªã¡ã¢ãªç®¡çã®éèŠãªã³ã³ããŒãã³ãã§ãã ã³ãŒãã¬ãã¥ãŒã¯ãæåã®éçºè ãèŠéãå¯èœæ§ã®ããæœåšçãªã¡ã¢ãªãªãŒã¯ããšã©ãŒããŸãã¯ããã©ãŒãã³ã¹ã®åé¡ãç¹å®ããããã®ã2 çªç®ã®ç®ã®ç®ãæäŸããŸãã ãã¹ãã¯ãé åããŒã¹ã®ã³ãŒããããŸããŸãªæ¡ä»¶äžã§æ£ããåäœããããšã確èªããŸãã ã³ãŒããŒã±ãŒã¹ãå¢çæ¡ä»¶ãªã©ãèãããããã¹ãŠã®ã·ããªãªããã¹ãããããšãäžå¯æ¬ ã§ãã ããã«ãããæ¬çªç°å¢ã§ã®ã€ã³ã·ãã³ãã«ã€ãªããåã«æœåšçãªåé¡ãæããã«ãªããŸãã
äž»ãªãã¹ãæŠç¥ã«ã¯ã次ã®ãã®ããããŸãã
- åäœãã¹ã: åã ã®é¢æ°ãšã³ã³ããŒãã³ãã¯ãåå¥ã«ãã¹ãããå¿ èŠããããŸãã
- çµ±åãã¹ã: ããŸããŸãªã¢ãžã¥ãŒã«éã®çžäºäœçšããã¹ãããŸãã
- ã¹ãã¬ã¹ãã¹ã: éãè² è·ãã·ãã¥ã¬ãŒãããŠãæœåšçãªããã©ãŒãã³ã¹ã®åé¡ãç¹å®ããŸãã
- ã¡ã¢ãªãªãŒã¯æ€åºãã¹ã: ã¡ã¢ãªãããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠãããŸããŸãªè² è·ã®äžã§ãªãŒã¯ããªãããšã確èªããŸãã
粟床ãéèŠãªå»çéšé (ããšãã°ãå»çšç»å) ã§ãœãããŠã§ã¢ãèšèšããå Žåããã¹ãã¯åãªããã¹ããã©ã¯ãã£ã¹ã§ã¯ãªãã絶察çãªèŠä»¶ã§ãã ãã©ãžã«ããäžåœãŸã§ãå ç¢ãªãã¹ãããã»ã¹ã¯ãé åããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ãä¿¡é Œæ§ãé«ãå¹ççã§ããããšãä¿èšŒããããã«äžå¯æ¬ ã§ãã ãã®ã³ã³ããã¹ãã§ã®ãã°ã®ã³ã¹ãã¯éåžžã«é«ããªãå¯èœæ§ããããŸãã
4. é²åŸ¡çããã°ã©ãã³ã°
é²åŸ¡çããã°ã©ãã³ã°ææ³ã¯ãã³ãŒãã«å®å šæ§ãšä¿¡é Œæ§ã®ã¬ã€ã€ãŒã远å ããã¡ã¢ãªãšã©ãŒã«å¯Ÿããèæ§ãé«ããŸãã é åèŠçŽ ã«ã¢ã¯ã»ã¹ããåã«ãåžžã«é åã®å¢çã確èªããŠãã ããã ã¡ã¢ãªå²ãåœãŠã®å€±æãé©åã«åŠçããŸãã äžèŠã«ãªã£ãå Žåã¯ãå²ãåœãŠãããã¡ã¢ãªãè§£æŸããŸãã ãšã©ãŒãåŠçããäºæããªãããã°ã©ã ã®çµäºãé²ãããã«ãäŸå€åŠçã¡ã«ããºã ãå®è£ ããŸãã
é²åŸ¡çã³ãŒãã£ã³ã°ææ³ã«ã¯ã次ã®ãã®ããããŸãã
- å¢çãã§ãã¯: èŠçŽ ã«ã¢ã¯ã»ã¹ããåã«ãé åã€ã³ããã¯ã¹ãæå¹ãªç¯å²å ã«ããããšã確èªããŸãã ããã«ããããããã¡ãªãŒããŒãããŒãé²ããŸãã
- ãšã©ãŒåŠç: ã¡ã¢ãªå²ãåœãŠããã®ä»ã®æäœäžã«çºçããå¯èœæ§ã®ãããšã©ãŒãåŠçããããã«ããšã©ãŒãã§ãã¯ãå®è£ ããŸãã
- ãªãœãŒã¹ç®¡ç (RAII): C++ ãªã©ã§ããªãœãŒã¹ç²åŸã¯åæå (RAII) ã䜿çšããŠã¡ã¢ãªãèªåçã«ç®¡çããŸãã
- ã¹ããŒããã€ã³ã¿: ã¹ããŒããã€ã³ã¿ (C++ ã® `std::unique_ptr`ã`std::shared_ptr` ãªã©) ã䜿çšããŠãã¡ã¢ãªã®è§£æŸãèªåçã«åŠçããã¡ã¢ãªãªãŒã¯ãé²ããŸãã
ãããã®ãã©ã¯ãã£ã¹ã¯ãæ¥çãåãããå ç¢ã§ä¿¡é Œæ§ã®é«ããœãããŠã§ã¢ãæ§ç¯ããããã«äžå¯æ¬ ã§ãã ããã¯ãe ã³ããŒã¹ãã©ãããã©ãŒã ãäœæããŠããã€ã³ãã®ãœãããŠã§ã¢éçºè ãããã«ããã§ç§åŠã¢ããªã±ãŒã·ã§ã³ãéçºããŠãããœãããŠã§ã¢éçºè ãŸã§ããã¹ãŠã«åœãŠã¯ãŸããŸãã
5. ãã¹ããã©ã¯ãã£ã¹ãåžžã«ææ°ã®ç¶æ ã«ä¿ã€
ã¡ã¢ãªç®¡çãšãœãããŠã§ã¢éçºã®åéã¯ãåžžã«é²åããŠããŸãã æ°ããææ³ãããŒã«ããã¹ããã©ã¯ãã£ã¹ãé »ç¹ã«ç»å ŽããŸãã ãããã®é²æ©ãææ°ã®ç¶æ ã«ä¿ã€ããšã¯ãå¹ççã§ææ°ã®ã³ãŒããèšè¿°ããããã«äžå¯æ¬ ã§ãã
以äžããæ å ±ãå ¥æããŠãã ããã
- èšäºãšããã°æçš¿ãèªã: ã¡ã¢ãªç®¡çã«ãããææ°ã®ç ç©¶ããã¬ã³ãããã¹ããã©ã¯ãã£ã¹ãåžžã«ææ¡ããŠãã ããã
- ã«ã³ãã¡ã¬ã³ã¹ãã¯ãŒã¯ã·ã§ããã«åå ãã: 仲éã®éçºè ãšãããã¯ãŒã¯ãç¯ããæ¥çã®å°éå®¶ããæŽå¯ãåŸãŸãã
- ãªã³ã©ã€ã³ã³ãã¥ããã£ã«åå ãã: ãã©ãŒã©ã ãã¹ã¿ãã¯ãªãŒããŒãããŒããã®ä»ã®ãã©ãããã©ãŒã ã«åå ããŠãçµéšãå ±æããŸãã
- æ°ããããŒã«ãšãã¯ãããžãŒã詊ã: ããŸããŸãªæé©åææ³ãšããŒã«ã詊ããŠãããã©ãŒãã³ã¹ãžã®åœ±é¿ãçè§£ããŸãã
ã³ã³ãã€ã©ãã¯ãããžãŒãããŒããŠã§ã¢ãããã°ã©ãã³ã°èšèªæ©èœã®é²æ©ã¯ãã¡ã¢ãªç®¡çã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãã ãããã®é²æ©ãåžžã«ææ°ã®ç¶æ ã«ä¿ã€ããšã§ãéçºè ã¯ææ°ã®ææ³ãæ¡çšããã³ãŒãã广çã«æé©åã§ããããã«ãªããŸãã ç¶ç¶çãªåŠç¿ã¯ããœãããŠã§ã¢éçºã§æåããããã®éµã§ãã ããã¯ããã€ãã®äŒæ¥ã§åããœãããŠã§ã¢éçºè ãããããªãããœãããŠã§ã¢ãéçºããŠããããªãŒã©ã³ãµãŒãŸã§ãäžçäžã®ãœãããŠã§ã¢éçºè ã«é©çšãããŸãã ç¶ç¶çãªåŠç¿ã¯ãã€ãããŒã·ã§ã³ãæšé²ããããå¹ççãªå®è·µãå¯èœã«ããŸãã
çµè«
ã¡ã¢ãªç®¡çã¯ã髿§èœãœãããŠã§ã¢éçºã®åºç€ã§ãããé åã¯ãç¬ç¹ã®ã¡ã¢ãªç®¡çäžã®èª²é¡ãæç€ºããããšããããããŸãã é åé¢é£ã®æœåšçãªããã«ããã¯ãèªèãã察åŠããããšã¯ãå¹ççã§ã¹ã±ãŒã©ãã«ã§ä¿¡é Œæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«äžå¯æ¬ ã§ãã é åã¡ã¢ãªå²ãåœãŠã®åºæ¬ãçè§£ããéå°ãªå²ãåœãŠããã©ã°ã¡ã³ããŒã·ã§ã³ãªã©ã®äžè¬çãªããã«ããã¯ãç¹å®ããäºåå²ãåœãŠãããŒã¿ã®å±ææ§ã®æ¹åãªã©ã®æé©åæŠç¥ãå®è£ ããããšã§ãéçºè ã¯ããã©ãŒãã³ã¹ãåçã«åäžãããããšãã§ããŸãã
ã¡ã¢ãªãããã¡ã€ãªã³ã°ããŒã«ãã³ãŒãã¬ãã¥ãŒãé²åŸ¡çããã°ã©ãã³ã°ã®äœ¿çšãããã³ãã®åéã®ææ°ã®é²æ©ãåžžã«ææ¡ãããªã©ããã¹ããã©ã¯ãã£ã¹ãéµå®ããããšã§ãã¡ã¢ãªç®¡çã¹ãã«ãå€§å¹ ã«åäžãããããå ç¢ã§å¹ççãªã³ãŒãã®èšè¿°ãä¿é²ã§ããŸãã ã°ããŒãã«ãªãœãããŠã§ã¢éçºã®ç¶æ³ã¯ãçµ¶ãéãªãæ¹åãèŠæ±ããŠãããé åã¡ã¢ãªç®¡çã«çŠç¹ãåœãŠãããšã¯ã仿¥ã®è€éã§ããŒã¿éçŽåã®ã¢ããªã±ãŒã·ã§ã³ã®èŠæ±ãæºãããœãããŠã§ã¢ãäœæããããã®éèŠãªã¹ãããã§ãã
ãããã®ååãåãå ¥ããããšã«ãããäžçäžã®éçºè ã¯ãå Žæã圌ããæŽ»åããŠããç¹å®ã®æ¥çã«é¢ä¿ãªããããåªãããããé«éã§ãããä¿¡é Œæ§ã®é«ããœãããŠã§ã¢ãèšè¿°ã§ããŸãã å©ç¹ã¯ã峿ã®ããã©ãŒãã³ã¹åäžãè¶ ããŠåºãããããè¯ããªãœãŒã¹å©çšãã³ã¹ãåæžãããã³å šäœçãªã·ã¹ãã ã®å®å®æ§ã®åäžã«ã€ãªãããŸãã 广çãªã¡ã¢ãªç®¡çãžã®éã®ãã¯ç¶ç¶çã§ãããããã©ãŒãã³ã¹ãšå¹çæ§ã®é¢ã§ã®å ±é ¬ã¯éèŠã§ãã