ASKUE-ãšãã«ã®ãŒè³æºã®ç£èŠãšäŒèšã®ããã®èªåã·ã¹ãã ã ãã®ãããªã·ã¹ãã ã®ã¿ã¹ã¯ã«ã¯ããšãã«ã®ãŒèšæž¬ããã€ã¹ïŒã¬ã¹ãæ°Žãææ¿ãé»æ°ïŒããããŒã¿ãåéããåæãšå¶åŸ¡ã«äŸ¿å©ãªåœ¢åŒã§ãããã®ããŒã¿ãæäŸããããšãå«ãŸããŸãã
ãã®ãããªã·ã¹ãã ã¯å€ãã®ç°ãªãããã€ã¹ãšã³ã³ãããŒã©ãŒãåŠçããããšãäœåãªãããããããã»ãšãã©ã®å Žåããããã¯ã¢ãžã¥ãŒã«ããŒã¹ã§æ§ç¯ãããŸãã å°ãåãŸã§ãèšéããã€ã¹ã®1ã€ãšéä¿¡ããã·ã¹ãã çšã®ã¢ãžã¥ãŒã«ãäœæããããã«äŸé ŒãããŸããïŒäžçžé»åãšãã«ã®ãŒã¡ãŒã¿ãŒ2753 ïŒã
ãã¬ãŒã·ã§ã³ã®éçšã§ãã³ã¡ã³ãããã®ããã«åŒ·èª¿è¡šç€ºãããŸãã 圌ãã®å¯äžã®ç®æšã¯ãèšäºãç¥ãéçšã§ç ããªãããšã§ãã
ç§ã¯é·ãéèªåãã¹ããé©çšããããšèããŠããŸããã ä»ã¯è¯ãæ©äŒã ãšæããŸããã ãªããã決ããã®ã§ããïŒ
ãã¹ããè©Šãã®ã«ãã®ã±ãŒã¹ã䟿å©ãªã®ã¯ãªãã§ããïŒ
- ã¢ãžã¥ãŒã«ã«ã¯ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ããããŸããã§ãããå³å¯ã«å®çŸ©ãããAPIã®ã¿ã§ããã¹ãã«éåžžã«äŸ¿å©ã§ãã
- ãããžã§ã¯ãã®æ¥çšã¯ããã»ã©å³ãããªãã£ãã®ã§ãå®éšããæéããããŸããã
- ASKUEã·ã¹ãã ã¯ç£æ¥ã·ã¹ãã ã®ã¯ã©ã¹ã«å±ããéå°ãªä¿¡é Œæ§ã¯ããã劚ããŸããã
èªåãã¹ãã«è³ããããšã§ãå®éã«æžãå¿ èŠãããã³ãŒãã®éã2åã«ããŸããã ä»åŸã¯ãããã€ã¹ãšãã¥ã¬ãŒã¿ãäœæããå¿ èŠããããŸããã ããããæçµçã«ã¯äŸ¡å€ããã£ããšæããŸãã
èå³æ·±ãçµæã®1ã€ã¯ãçããŠããããã€ã¹ãªãã§éçºãè¡ãããšãã§ãããšããããšã§ã-æå ã«ãã®ãããã³ã«ã®èª¬æã ãããããŸãã ãã¡ãããçããŠããããã€ã¹ãç»å ŽããŸããããã³ãŒãã®å€§éšåãäœæãããåŸã§ãã
éçºã¯Delphi 7ã®ç°å¢ã§å®è¡ãããŸãããèªååããããã¹ãã§ã¯ãDUnitã©ã€ãã©ãªã䜿çšãããŸããã ããŒãžã§ã³ç®¡çã·ã¹ãã -Mercurialã ãªããžããª-BitBucketã
ã·ã¹ãã å ã®ã¢ãžã¥ãŒã«ã®å Žæã«é¢ããããå°ãã®æ å ±
ã¢ãžã¥ãŒã«ã®äž»ãªã¿ã¹ã¯ã¯ãäœã¬ãã«ã®ãããã³ã«ã«åŸã£ãŠã¡ãŒã¿ãŒãšéä¿¡ãããã®éä¿¡ã®çµæãASKUEã·ã¹ãã ãç解ã§ãã圢åŒã§æäŸããããšã§ãã ç©çéä¿¡ãã£ãã«ã¯ãååãšããŠããã®æ©èœãæ¡åŒµããããŸããŸãªçš®é¡ã®ããã€ã¹ïŒã¢ãã ãã€ã³ã¿ãŒãã§ã€ã¹ã³ã³ããŒã¿ãŒïŒãåããCOMããŒãã§ãã éåžžã«äžè¬çãªRS-232 / RS-485ã®æã æã TCP / IPãå¯èœã§ãã éä¿¡ãã£ãã«ã®ç·šæã®ãã¥ã¢ã³ã¹ã«ã€ããŠã¯ãç¹å¥ãªASKUEã¢ãžã¥ãŒã«ïŒãã£ãã«ãã©ã€ãïŒã責任ãè² ããŸãã
ãããã³ã«èªäœã«é¢ããŠã¯ãäžè¬çã«èšãã°ãäžé£ã®ãã€ã圢åŒã®ãªã¯ãšã¹ããšã¬ã¹ãã³ã¹ã®ã·ãŒã±ã³ã¹ã§ãã ã»ãšãã©ã®å ŽåãèŠæ±ãšå¿çã®åŸã«ãã§ãã¯ãµã ãç¶ããŸãã ãã£ãšå ·äœçãªããšãèšãã®ã¯é£ããã§ãã ãã®éä¿¡æ¹æ³ã®æãç¹åŸŽçãªä»£è¡šã¯MODBUSä»æ§ã§ãã
MODBUSãããã³ã«ã¯ãç°è²ã®äººãšéå±ãªäººã®éåœã§ãã ããªããæããåµé çãªäººã§ããã°ããã¡ãããããªãã¯ä¿¡é Œã§ããå®èšŒæžã¿ã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããããããšã¯ãŸã£ããç°ãªãç¬èªã®ããŒãžã§ã³ã®ãããã³ã«ãèãåºããŠãã ããã ãããŠããã®å ŽåãããŒã±ãã£ã³ã°éšéã¯ãããã€ã¹ãMODBUSã®ãããªãããã³ã«ã䜿çšããŠéä¿¡ããããšãããã€ã¹ã®å°æ¥ã®è³Œå ¥è ãæããããªãããã«ãåºåãã³ãã¬ããã«æ éã«æžã蟌ã¿ãŸãã ãã¡ãã-MODBUSãšã®äºææ§ã«ã€ããŠã®è©±ã¯ãããŸããã
ã¢ãžã¥ãŒã«ã®å éšæ§é
ã¢ãžã¥ãŒã«ã®å éšæ§é ã瀺ããŸããããã¯ãéçºãšãªãã¡ã¯ã¿ãªã³ã°ãæ°åç¹°ãè¿ããçµæå€æããŸããã ããªãã¯ãããéåžžã«ãªãªãžãã«ã§ã¯ãªãããšã«æ°ä»ããããããŸããã
ã¡ã€ã³ã®Deviceãªããžã§ã¯ãã«ã¯ãããã€ã¹ã§ã®äžè¬çãªã¢ã¯ã·ã§ã³ãšãASKUEããŒã¿ãå¿ èŠãªåœ¢åŒã§è¿ãããã®ã³ãŒããå«ãŸããŠããŸãã
Deviceãªããžã§ã¯ãã¯ãè€æ°ã®Onlinerãªããžã§ã¯ããææããŠããŸãã åOnlinerã¯ãããã€ã¹ãšã®å®å šã«å®äºããéä¿¡ã»ãã·ã§ã³ãæ åœããŸãã ããŸããŸãªã¿ã€ãã®ãªã³ã©ã€ã³ãŠãŒã¶ãŒããããã€ã¹ã®ããŸããŸãªå žåçãªæäœãæ åœããŸãã æãäžè¬çãªã®ã¯ããã©ã¡ãŒã¿ãŒã®ã°ã«ãŒãã®ããŒãªã³ã°ã§ãã ç§ã®ããã€ã¹ã®å Žåããã©ã¡ãŒã¿ãŒã®6ã€ã®ã°ã«ãŒãããããããããã«ç¬èªã®OnlinerããããŸããã
Onlinerã¯ãäœæ¥ã§Queryãªããžã§ã¯ãã䜿çšããŸãã Queryãªããžã§ã¯ãã¯ãåäžã®èŠæ±å¿çãµã€ã¯ã«ãæ åœããŸãã Queryãªããžã§ã¯ãæäœã®çµæã¯ãããã€ã¹ããåä¿¡ããç¹å®ã®æ å ±ã§ããã䜿ãããã圢åŒã«çž®å°ãããŸãã ããã«ãQueryãªããžã§ã¯ãã¯ãäžæ£ã§å£ããæ©åšã®å¿çãèªèããå¿ èŠã«å¿ããŠã¯ãšãªãç¹°ãè¿ããŸãã ãã®ããžãã¯ã¯ã¯ãšãªã¬ãã«ã§ã¯é衚瀺ã§ãããOnlinerã¯ããã«ã€ããŠå¿é ããŠããŸããã
æäžäœã¬ãã«ã¯Structãªããžã§ã¯ãã§ãã ããŸããŸãªäœã¬ãã«ã®ãã€ã圢åŒãããã°ã©ãã³ã°èšèªã§äœ¿çšãããå€ã«å€æãã責任ããããŸãã ãã€ãã¹ããªãŒã ãStructãªããžã§ã¯ãã®å ¥åã«éãããŸã-åºåã§ã¯ãIntegerãFloatãStringåã®å€ã æã ïŒã»ãŒåžžã«ïŒãStructãªããžã§ã¯ãã¯éèŠãªããšãããªããã°ãªããŸããã ãããã£ãŠãStructã¬ãã«ã§ã¯ãããŒã¿ã®ã·ãªã¢ã«åãšéã·ãªã¢ã«åã®æ°åŠçãªäœæ¥ããã¹ãŠã«ãã»ã«åãããŸãã 圌ã¯ãã®ããŒãã¯ãŒã¯ã®ãã¹ãŠã®ãã¥ã¢ã³ã¹ãããé«ãã¬ãã«ããé ããŠããŸãã
CrcProcessorãªããžã§ã¯ããå³ã§åŒ·èª¿è¡šç€ºãããŠããŸãã ãã®ååã«ããã°ããã§ãã¯ãµã ã®èšç®ãæ åœããŸãã ã±ãŒã¹ã¯ãäžèŠãããšæãããã»ã©åçŽã§ã¯ãããŸããã
以äžã§ã¯ãããŒã¿å€æïŒStructïŒãšãã§ãã¯ãµã èšç®ïŒCrcProcessorïŒã«ã€ããŠããå°ã詳ãã説æããŸãããããã¯ã¯èå³æ·±ããã®ã§ããã話ãã¹ãããšãããããã§ãã
èšéããã€ã¹ã®ããŒã¿åœ¢åŒ
ã¡ãŒã¿ãªã³ã°ããã€ã¹ã®èŠæ±ãšåçã«ãªãæ å ±ããšã³ã³ãŒãããæ¹æ³ãæå®ããããšã¯å°é£ã§ãã
æãç¡å®³ãªã®ã¯ã¿ã€ãå šäœã§ãã ãã¹ãŠã®ã¿ã€ãã®ã¢ãã¬ã¹ããã€ã³ã¿ãŒãã«ãŠã³ã¿ãŒã¯ã1ã€ã®ã¿ã€ãå šäœãšããŠãšã³ã³ãŒããããŸããã¿ãŒã²ãããã©ã¡ãŒã¿ãŒã¯æŽæ°ã¿ã€ãã®å ŽåããããŸãã ç¹å®ã®æŽæ°åã¯ããã€ãé·ãšããããã®ãã€ãããã£ãã«ãä»ããŠéä¿¡ãããé åºãç°ãªããŸãã
æ°åŠããŸãã¯ãããæ éã«éçºãããã»ã¯ã·ã§ã³-çµã¿åããè«ã¯ããªããžã§ã¯ãã®é åã®æ°ã«å³å¯ãªå¶éãèšå®ããŸãïŒnïŒïŒã ããšãã°ã3ãã€ãã¯6éãã®é åºã§é 眮ã§ããŸãã ãã®å æã§ããªãïŒéåã³ã³ãã¥ãŒãã£ã³ã°ã«é Œããªãå ŽåïŒçè«çéçã¯ãèšéããã€ã¹ã®ãããã³ã«ã®äœæè ãã²ã©ãæ··ä¹±ãããŸãã 3ãã€ãã20éãã®æ¹æ³ã§éä¿¡ã§ããå Žåãé ããæ©ããããããã®ãã€ãã«ééãããšæããŸãã
ç§ã®æèŠã§ã¯ãåºå®ç¹ãæã€ã¿ã€ãã¯ãèšæž¬ããã€ã¹ã§æãæåããŠããŸãã ãã®èãæ¹ã¯ãå°æ°ç¹ãå·Šã«æ°æ¡ã·ããããå¿ èŠããããšããæ¡ä»¶ã§ããã£ãã«ãä»ããŠæŽæ°å€ãéä¿¡ããããšã§ãã ããŸããŸãªå€æã®äžã§æ£ããåäœããéåžžã«åªããã¿ã€ãã éè¡ã³ã³ãã¥ãŒãã£ã³ã°ã®æšæºãšããŠäœ¿çšãããã»ã©è¯ãã ïŒVisualBasicã«é貚åãããããšã誰ããç¥ã£ãŠããå Žå-ããã¯ã¡ããã©ãã®ããã«æ§æãããŠããŸãïŒã
åºæ¬çãªåã¯ãã®ãŸãŸãªã®ã§ããªã©ãã¯ã¹ããŠçµã¿åããè«ããã€ãé åºãå¿ããããšã¯ã§ããŸããã
ãã¡ããããã¹ãŠã®ç¹ã§ãå€ãã®åé¡ã¯æµ®åå°æ°ç¹åã§ãã ã¬ã·ãã¯1ã€ãããããŸãã-ãããäœãæå³ããã®ãããããã©ãã«ããã®ããã©ã®ãããªãªãã·ã§ã³ãããã®ãââãå®å šã«ç解ããããã§ãã ãããŠåã³-ãã€ããªãŒããŒã«ã€ããŠèŠããŠãããŠãã ããã
æµ®åå°æ°ç¹åãããã©ãããã©ãŒã ã®æšæºåã®1ã€ãšå éšè¡šçŸã§å¶ç¶ã«äžèŽããããšãæåŸ ããããšããé害ã®é«ãã§ãã ãã®ãããªèããããªãã蚪ãããªããããªãã¯ããã°ã©ãã³ã°ãããã¹ãã§ã¯ãããŸãããããªã¹ã¯ã®å°ãªãã¯ã©ãã-ã«ãŒã¬ããããã¬ã€ãããå®ãããè²·ããã¯ãŒã«ãã«ããã«è³ããã¹ãã§ãã
æãèå³æ·±ããªãã·ã§ã³ã¯ãéä¿¡ãã£ãã«ã§ã¿ã€ã ã¹ã¿ã³ããéä¿¡ããããšãããšãã«çºçããŸãã æ¥ä»ãšæå»ã®ããŸããŸãªéšåã¯ãæãä»»æã®åœ¢åŒã§éä¿¡ãããŸãã
幎ãæãæ¥ãæéãåãç§ã®é åºã¯ããã¹ãŠåãçè«äžã®éçïŒnïŒïŒã«èªä¿¡ãæã£ãŠåªåããŠããŸãã ããªãã¯ãŸã ãã®å¹Žã«ã€ããŠããã€ãã®èšèãèšãããšãã§ããŸãã 2000幎ã®åé¡ã¯èª°ã«ãäœãæããªãã£ããããã»ãšãã©ã®å Žåã幎ã¯2æ¡ã§éä¿¡ãããŸãã
å€ãã®å Žåããããã³ã«ãä»ããŠéä¿¡ããããã€ãã¹ããªãŒã ã¯ãããŸããŸãªãã€ã¯ãåè·¯ïŒã¿ã€ããŒãADCãããŒããã¬ãžã¹ã¿ïŒã®å éšã¡ã¢ãªã®çŽæ¥ãã³ãã§ãã
ãã€ã¯ãããããäœæãã人ã¯ãåãããã®æ³šææ·±ã䜿çšã«ã€ããŠå€ããç¥ã£ãŠããŸãã ãããã£ãŠãåã ã®ããããšãããã®ã»ãããä»»æã®å Žæããã«ããã¢ã³ãããŒã¹ãããæ¥çãããã¹ã¯ãé©çšããããŸããŸãªæ¹åã«ã·ããããå®éã®ããã°ã©ããŒã®ä»äºãäžé£ã®é¡ã®ãªãæ¥ã«ãªããããªå€ãã®ããšãè¡ãå¿ èŠããããšããäºå®ã«åããŠãã ããäºãã®äžã«ã
ã»ãšãã©ã®åœ¢åŒã«æ³šæããŸããããããã¯ãã¹ãŠã®åŸ®åŠãªç¹ããã¯ã»ã©é ãã§ãã æãäºæãã¬ç¬éã«ããããã³ã«ã«ããéä¿¡ããŸã£ããæ°ããã¬ãã«ã«åŒãäžããç¹å¥ãªææ³ãé©çšã§ããŸãã ããšãã°ãBCDïŒãã€ããª10é²åœ¢åŒïŒãªã©ã®ãšããŸããã¯ãªãã®ããASCIIæåã«ããæ°å€ã®éä¿¡ãé©çšã§ããŸãã åãå€ã®éšåãç°ãªãèŠæ±ã§éä¿¡ãããå ŽåããããŸãïŒããšãã°ãå€ã®å šäœãååŸããã«ã¯ãããã€ã¹ã«1ã€ã®èŠæ±ãéä¿¡ããéšåçãªèŠæ±ãååŸããå¿ èŠããããŸãïŒã
ç§ãäŒã£ãããšã®ãªãå¯äžã®ããšã¯ãåœå¥æåã®UTF圢åŒã§ã®éä¿¡ã§ãã ããããããã¯åæã®åé¡ã§ã¯ãªããšæããŸãããUTFã§ã®äœæ¥ã¯ãªãœãŒã¹éçŽåã®ããžãã¹ã§ããããã€ã¯ãã³ã³ãããŒã©ãŒã®ãªãœãŒã¹ã¯éãããŠãããšããäºå®ã§ãã
äžèšã®ãã¹ãŠããæ°çŸã®ããã€ã¹ã䜿çšããç§ã®èšå€§ãªçµéšã®çµæã§ãããšæãããå Žåãããã«åè«ããå¿ èŠããããŸãã ããã®ã»ãšãã©ãã¹ãŠã¯ã¡ãŒã¿ãŒã§åºäŒã£ãã®ã§ããã®ããã«ã¢ãžã¥ãŒã«ãæžããŸããã ä¿¡ããããªã人ã®ããã«ãç§ã¯ããã€ã¹ã«ãã¹ããŒããšãããã³ã«ã®èª¬æãéãããšãã§ããŸãã ããªãã¯ç§ãæžãããã¹ãŠãçå®ã§ããããšãããããŸãã
ãã§ãã¯ãµã èšç®
äžã§è¿°ã¹ãããã«ããã§ãã¯ãµã ã«ã€ããŠããäžèŠãããšæããã»ã©åçŽã§ã¯ãããŸããã CRC8ãCRC16ãCRC32ãšãã確ç«ãããçšèªããããšããäºå®ã«ããããããããããã¯ãã§ãã¯ãµã ãã©ã®ããã«èæ ®ãããã¹ãããæ確ã«ç解ããŠããŸããã ãããã£ãŠãåžžã«åŸ®åŠãªéããçããŸãã éä¿¡ãããã³ã«ã®äœæè èªèº«ããããç¥ã£ãŠããããããã³ã«èšè¿°ã§æšæºãžã®åç §ã瀺ããŠããŸãããããã§ãã¯ãµã ã®èšç®æ¹æ³ã瀺ãã³ãŒãïŒ!!!ïŒãéåžžCã§æäŸããŸãã
CRCèšç®ãå ±æã©ã€ãã©ãªã«å ¥ããããšã¯ãå§ãããŸããã ã¢ã«ãŽãªãºã ãè€æ°ã®ã±ãŒã¹ã§äžèŽããå Žåã§ãããã€ãCRCã«ãŠã³ãã«ã€ããŠå®å šã«æ°ãå€ã«ãªãããªã¢ã³ãã«åºãããã§ãããã å°ããªã³ããŒããŒã¹ããè¡ãå¿ èŠãããå Žåã§ããåããã€ã¹ã«ç¬èªã®ã¢ã«ãŽãªãºã ãäœæããããšããå§ãããŸãã
ç§ã®ããã€ã¹ã®å Žåãäœããã®çç±ã§ãCRCãã«ãŠã³ãããã·ãŒã±ã³ã¹ã«èŠæ±ã®æåã®ãã€ããå«ããã¹ãã§ã¯ãããŸããã ãããã³ã«ã®èª¬æã«ããçãã¡ã¢ã«æ³šæãæã£ãããšã¯ã倧ããªæåã ãšæããŸãã ããããªããšãããã€ã¹ãšã®æ¥ç¶ã確ç«ã§ããªããªãããã§ãã ã©ããããç§ã¯ééãã®ãªãæåã®ãã€ãã®èšŒäººã®æŽ»åã«åºäŒããŸããã å¥ã®æ¹æ³ã§ãããããã¹ãŠèª¬æããããšã¯ã§ããŸããã
ã¢ãžã¥ãŒã«ãã¹ãã¹ããŒã
ã¢ãžã¥ãŒã«ã®å éšæ§é ãšãã®éçºã®ããã€ãã®æ©èœã«ã€ããŠèª¬æããŸãããã次ã«ã¢ãžã¥ãŒã«ã®ãã¹ãã¹ããŒã ã玹ä»ããŸãã ãã®ã¹ããŒã ã¯ãªããžã§ã¯ãã®æ§é ãç¹°ãè¿ããŸããããæ å ±ãããŒã®è«çã¹ããŒã ãšãã®æ€èšŒãåæ ããŠããŸãã ããã¯èšäºã®äžã§æãéèŠãªæ°åã ãšæãã®ã§ãããã«ã€ããŠè©³ãã説æããŸãã
æåã¯ãããã¯ããªãç¬åµçãªã¹ããŒã ã§ããããã«æãããŸããããããããç§ã®å€ãç 究æã®ç¥èããçãŸããããšã«æ°ä»ããŸããïŒæ å ±çè«ã«ã¯ããã€ãã®ã³ãŒã¹ããããŸããïŒã
ãžã§ãã¬ãŒã¿ãŒã¯åç §å€ãçæããŠä¿åããããã€ã¹ã®æ¬äŒŒãšãã¥ã¬ãŒã¿ãŒã«ãã£ãŠåãå ¥ããããäœã¬ãã«ã®ãããã³ã«ã«å€æããŸãã ãããã³ã«ã¯ã¢ãžã¥ãŒã«ã«ãã£ãŠèªèãããåç §å€ã¯ãããã埩å ãããŸãã å€ããã¹ãç°å¢ã«è¿ãããŸãïŒããã€ã¹ã¢ãžã¥ãŒã«ã®å Žåã¯ãASKUEã®ããã«èŠããŸãïŒã 次ã«ããã¹ãç°å¢ã¯ã¢ãžã¥ãŒã«ããååŸããå€ãåç §å€ãšæ¯èŒããŸãã æ¯èŒã«åºã¥ããŠãã¢ãžã¥ãŒã«ã®æ£åžžæ§ã«ã€ããŠçµè«ãåºãããŸãã
èµ€ã§åŒ·èª¿è¡šç€ºãããŠãã2ã€ã®ã¢ãžã¥ãŒã«ã¯ãã¹ãã¬ã¹ãã¹ãã«é¢é£ããŠããŸãã ç¹ã«ãéä¿¡äžè¶³ãåæããã±ããæªã¿ã®ç¶æ³ãåçŸã§ããŸãã äž»ãªã¿ã¹ã¯ã¯ãããã€ã¹ãžã®ç¹°ãè¿ããªã¯ãšã¹ãã®ã¡ã«ããºã ãããã³äºæããªãç¶æ³ã®å Žåã®ã¡ã¢ãªã®æ£ããå²ãåœãŠãšè§£æŸã確èªããããšã§ãïŒããã¯ã¡ã¢ãªãªãŒã¯ç£èŠãŠãããã«ãã£ãŠç£èŠãããŸãïŒã
ãªãã¡ã¬ã³ã¹ãžã§ãã¬ãŒã¿ãŒ
ããã»ã©è€éã§ã¯ãããŸããããéèŠãªãŠãããã¯åç §å€ãžã§ãã¬ãŒã¿ãŒã§ãã ãžã§ãã¬ãŒã¿ãŒã®æ¬è³ªã¯ã枬å®ãããASKUEãã©ã¡ãŒã¿ãŒã®å€ãååŸããããšã§ãã ãã®å€ã¯ãäžæ¹ã§ã¯å€åããäºæž¬äžèœïŒè¯å¥œãªååžãæã€ïŒã§ãããä»æ¹ã§ã¯æ±ºå®è«çïŒã€ãŸãããšã©ãŒãå¹ççã«æ€çŽ¢ã§ããããã«ããããã«ããã¹ãããšã«åçŸå¯èœïŒã§ããå¿ èŠããããŸãã
èããããã«ãããã¯ããçš®ã®ããã·ã¥é¢æ°ã§ããã¹ãããšãæããã«ãªããŸãã ç§èªèº«ã®èªè»¢è»ã¢ãã«ã§å°ãå®éšããŠãæçµçã«Md5ãå°ç¡ãã«ããŸããã ä»äºã«é¢ããèŠæ ã¯ãããŸããã 以äžã¯Delphiã®ã³ãŒãã§ãã
function TFECoreEmulator.GenNormalValue(const pTag:string):double; var A,B,C,D:longint; begin TFECoreMD5Computer.Compute(A,B,C,D,pTag+FE_CORE_EMULATOR_SECURE_MIX); result:=0; result:=result+Abs(A mod 1000)/1E3; result:=result+Abs(B mod 1000)/1E6; result:=result+Abs(C mod 1000)/1E9; result:=result+Abs(D mod 1000)/1E12; end; function TFECoreEmulator.ModelValueTag(const pGroupNotation, pParamNotation: string; const pStartTime, pFinishTime: TDateTime):string; begin result:=pGroupNotation+'@'+pParamNotation+'@'+DateTimeToStr(pStartTime)+'@'+DateTimeToStr(pFinishTime); end;
åçŽãªå€æã®çµæãšããŠãéåžžã®å€ïŒ0..1ïŒãååŸããŸããããã¯å¿ èŠãªç¯å²ã«å°éãã軜ãããŒãã§ãšãã¥ã¬ãŒã¿ã«éä¿¡ããŸãã ãã€ã§ããå€ã¯çµ¶å¯Ÿç²ŸåºŠã§åçŸã§ããŸãã
æ¬äŒŒãšãã¥ã¬ãŒã¿ãŒããã€ã¹
æ¬äŒŒãšãã¥ã¬ãŒã¿ã®äž»ãªç®çã¯ãããã€ã¹ãšã®éä¿¡ã¢ãžã¥ãŒã«ããã®èŠæ±ã«å¯Ÿããå¿çãçæããããšã§ãã ç§ãã¡ã¯æ¬åœã®ãšãã¥ã¬ãŒã·ã§ã³ã«ã€ããŠè©±ããŠããªãã®ã§ã圌ã¯ãæ¬äŒŒãã§ãïŒããã¯æ©ç¥ããã§åœ¹ã«ç«ããªãä»äºã§ãããïŒã 圌ãããªããã°ãªããªãããšã¯ãç¹å®ã®èŠæ±ã«å¯Ÿããç¹å®ã®åçãäœæããããšã§ãã ããã«ããã©ã¡ãŒã¿ãŒå€ãå¿ èŠãªå Žåã圌ã¯åç §å€ã®ãžã§ãã¬ãŒã¿ãŒã䜿çšããŸãã
ãã®äžã«ç°åžžãªãã®ã¯äœããããŸãããçãã圢æããããã®ç¹å¥ãªã¹ããŒã ã«ã®ã¿æ³šç®ããŸãã æåã«æãæµ®ãã¶ã®ã¯ããªã¯ãšã¹ãã解æããŠã¬ã¹ãã³ã¹ãçæããããã®ç¹å®ã®æé ïŒéåžžã¯ParseãšããååïŒã§ãã ããããå®éã®å®è£ ã§ã¯ããã®æé ã¯ä¿¡ããããªãã»ã©ã®ãµã€ãºã«æé·ããå Žåã«ãã£ãŠã¯ãäºãã«åŒ·ãåã蟌ãŸããŠããŸãã
ã ããç§ã¯å°ãéãããšãããŸããã
ãšãã¥ã¬ãŒã¿ã«ãã«ããŒãªããžã§ã¯ãã®ã»ãããæäŸããŸããâã¬ããªã«ã«ååãä»ããŸããã åã¬ããªã«ã¯ãä»ã®ã¬ããªã«ãšã¯å¥ã«ãªã¯ãšã¹ãã解æããããšããŸãã èŠæ±ã圌女ã«é©çšãããªãããšãç解ãããšããã«ã圌女ã¯äŸå€ãã¹ããŒãããšãã¥ã¬ãŒã¿ã¯åæã®ããã«èŠæ±ã次ã®ã¬ããªã«ã«æž¡ããŸãã ãããã£ãŠããªã¯ãšã¹ãã®åããªã¢ã³ãã®ã³ãŒããåå¥ã®ãªããžã§ã¯ãã«ããŒã«ã©ã€ãºããããšãã§ããŸããã åäžã®ã¬ããªã«ãæ©èœããŠããªãå Žåã¯ãããã€ã¹ã¢ãžã¥ãŒã«ãŸãã¯ãšãã¥ã¬ãŒã¿ãŒã®ããããã«ãšã©ãŒããããŸãã
ãŸããStructãªããžã§ã¯ãïŒæ§é ã®æ å ±ã®ãšã³ã³ãŒãããã³ãã³ãŒãæ¹æ³ãæããïŒãšCrcProcessorãåå©çšããããšãããããŸãã ãã¡ãããããã¯ä¿¡é Œæ§ã®èŠ³ç¹ããè¡ãã¹ãã§ã¯ãããŸããã ããããç§ã¯ãã®åŠ¥åãèš±ããŠããããšæããŸãã
ä¿¡é Œæ§ã®èŠ³ç¹ããããã¹ã察象ã®ãªããžã§ã¯ããšãã¹ãã€ã³ãã©ã¹ãã©ã¯ãã£ã§å ±éã®ã³ãŒãã䜿çšããªãã§ãã ããïŒãšã©ãŒã¯çžäºã«è£åã§ããããïŒã ãªããžã§ã¯ããšãã®ãã¹ãã¯ãäžè¬ã«ç°ãªã人ã ã«ãã£ãŠæžãããŠããããšãæãŸããã§ãã ãããŠã圌ãã¯ãäºãã«ã€ããŠäœãç¥ããªãããšãæãŸãããäŒè°ã§æ¡æãããªãã§ãã ããã ãåç¥ã®ããã«ãç§ã¯ãã®ãã¹ãŠãåç¬ã§æžããŸããããåæ§ã®æ¹æ³è«ã¯å©çšã§ããŸããã§ããã
ã¹ãã¬ã¹çºçåš
ã¹ãã¬ã¹ãžã§ãã¬ãŒã¿ãŒã¯ãã¢ãžã¥ãŒã«ãšããã€ã¹ãšãã¥ã¬ãŒã¿ãŒã®éã®ã®ã£ããã«å«ãŸããŠããŸãã 圌ã¯æ¬¡ã®ããšãã§ããŸãã
- ãšãã¥ã¬ãŒã¿ãŒã®å¿çãå®å šã«ãããã¯ãã
- éäžã§çããæã¡ç Žã
- å¿çãã€ããæªãã
åçãäžæãããå Žåãåé¡ãçºçããŸãã-åçãäžæããå Žæã ãã¹ãŠã®ããããŒãšããªã¢ã³ãã«ãéä¿¡ãããã¢ãžã¥ãŒã«ãå®éã®ããŒã¿ãåŸ æ©ããå ŽåãæãéèŠãªå Žæã§åçãäžæããŸããã ãã¹ãŠã®ãã«ããŒãªããžã§ã¯ããæ¢ã«äœæãããŠããã¯ãã§ãã ãã®å Žæã§éä¿¡ãäžæãããšãã¡ã¢ãªãªãŒã¯ã®å¯èœæ§ãæ倧ã«ãªããŸãã
ã©ã€ãããã€ã¹ãæäœããéçšã§ãéåžžã«èå³æ·±ããšã©ãŒã«ééããŸãããããã€ã¹ã®å¿çã¯ããã§ãã¯ãµã ãäžèŽããå Žåã§ãããã¹ãŠã®ã«ãŒã«ãæ£åŒã«æºãããŸãã ãã ããããŒã¿èªäœã¯èŠæ±ããããã®ãšäžèŽããŸããã ç¹ã«ãã®ã±ãŒã¹ã§ã¯ãããã€ã¹ã®å éšãšã©ãŒãšåŒã°ããå¥ã®ã¢ãŒããå°å ¥ããŸããã
é·ãçèã®æ«ãã©ãããã°ãããã§ããã®ããšãããšãããã€ã¹ã¯åã«ãªã¯ãšã¹ãã®æŽåæ§ãå¶åŸ¡ããªããšããçµè«ã«éããŸããã ãŸããããã¥ã¢ã«ã«å€ãèšèŒãããŠãããã§ãã¯ãµã ã¯ãããã€ã¹èªäœãšã¯èŠãªãããŸããã ãããã£ãŠãèŠæ±ãæªããããå ŽåïŒããšãã°ãèŠæ±ãããã¡ã¢ãªã®ã¢ãã¬ã¹ãå€æŽãããå ŽåïŒãçŽç²ãªããŒããæã€ããã€ã¹ã¯æ£åžžãªãã©ãŒã ã圢æããŸããã誀ã£ãå¿çãããŸãã
ã¡ã¢ãªå²ãåœãŠå¶åŸ¡
æ£ããã¡ã¢ãªå²ãåœãŠã«ã€ããŠã¢ãžã¥ãŒã«ããã¹ãããæ¹æ³ãå°ã説æããŸãã å€ãã®ããšãæããã§ããã誰ã«ãç¥ãããŠããŸããããšã«ããã話ãããŸãã ããã®ããã€ãã¯èå³æ·±ããããããŸããã
é·ãéãããã°ã©ãã¯å€ã®ã¡ã¢ãªå²ãåœãŠã«é¢é£ããæªå€¢ãæ±ããŠããŸãã ã¬ããŒãžã³ã¬ã¯ã¿ãåããJavaãšDotNetã®çºæã«ãããç¶æ³ã¯å€å°æ¹åãããŸããã ããããæªå€¢ã¯ãŸã æ®ã£ãŠãããšæããŸãã ãããã¯åã«ããæŽç·ŽããæŽç·Žããããã®ã«ãªããŸããã
äŸå€ã¡ã«ããºã ã«åºã¥ããææ°ã®ãšã©ãŒåŠçã·ã¹ãã ã¯éåžžã«äŸ¿å©ã§ãã ãããããªãœãŒã¹ã®å²ãåœãŠãšè§£æŸã®ããã»ã¹ã¯éåžžã«è€éã§ãã ããã¯ãäŸå€ãçºçãããšãããã·ãŒãžã£ã®å®è¡ãäžæãããããã§ãã äŸå€ã¯ãæ¡ä»¶ãã«ãŒããã«ãŒãã³ãããã³ã¢ãžã¥ãŒã«ã®å¢çãç°¡åã«å æããŸãã ãããŠãã¡ãããããã·ãŒãžã£ã®æåŸã«ãªãœãŒã¹ã解æŸããããã®ã³ãŒãã¯ãç¹å¥ãªæªçœ®ãè¬ããããªãéãå®è¡ãããŸããã
ãã®åé¡ã解決ããããã«ã人é¡ã®æé«ã®å¿ãæãåºãããŸããã ãã®çµæãtry..finallyã³ã³ã¹ãã©ã¯ããçºæãããŸããã ãã®èšèšã¯ãã¬ããŒãžã³ã¬ã¯ã¿ãåããã·ã¹ãã ã§ãè¡ãããŸããããã¯ããªãœãŒã¹ãã¡ã¢ãªã ãã§ãªããããšãã°éããŠãããã¡ã€ã«ã§ãããå¯èœæ§ãããããã§ãã
ã±ãŒã¹ã®å€å žçãªã¢ããªã±ãŒã·ã§ã³ã¹ããŒã -ãªãœãŒã¹ã®å Žå-ãªããžã§ã¯ãã¯æ¬¡ã®ããã«ãªããŸãã
myObject:=TVeryUsefulClass.Create; try ... VeryEmergenceProcedure; ... finally myObject.Free; end;
ããããç§ã¯ãã®æ¹æ³ããã奜ãã§ãïŒã³ãŒãã«é¢ä¿ãããã¹ãŠã®ãªããžã§ã¯ããäžåºŠã«åŠçã§ããããã«ããã€ã§ãã©ãã§ããªããžã§ã¯ããäœæã§ããŸãïŒã
myObject1:=nil; myObject2:=nil; try ... myObject1:=TVeryUsefulClass.Create; ... VeryEmergenceProcedure; ... myObject2:=TVeryUsefulClass.Create; ... VeryVeryEmergenceProcedure; ... finally myObject1.Free; myObject2.Free; end;
é©åãªã¡ã¢ãªç®¡çã®ã¬ã·ãã¯åçŽã§ã-ãªãœãŒã¹ãå²ãåœãŠãããäŸå€ãçºçããå¯èœæ§ãããå Žåã¯ãã€ã§ããtry..finallyã¹ããŒã ãé©çšããŸãã ããããäžæ³šæã¯ç°¡åã«å¿ããããäœãééã£ãããšããããããŸãã ãããã£ãŠããã¹ãããããšããå§ãããŸãã
ç§ã¯æ¬¡ã®ããã«ããŸããã 圌ã¯ãã¹ãŠã®ãªããžã§ã¯ãã®å ±éã®ç¥å ãäœæããäœææã«ããããäžè¬ãªã¹ãã«ç»é²ããç Žæ£æã«ãªã¹ãããèªèº«ãåé€ããŸããã æåŸã«ãæ€åºãããŠããªããªããžã§ã¯ãã®ãªã¹ãããã§ãã¯ãããŸãã ãã®ããã»ã©è€éã§ã¯ãªãã¹ããŒã ã«ã¯ããªããžã§ã¯ããèå¥ããã³ãŒãå ã§ãããäœæãããå ŽæãèŠã€ããã®ã«åœ¹ç«ã€ããã€ãã®èŠçŽ ãè¿œå ãããŠããŸãã ãã®ããããªããžã§ã¯ãã«ã¯äžæã®ã©ãã«ãå²ãåœãŠãããäœæãšåé€ã®ç¬éããã¬ãŒã¹ãã¡ã€ã«ã«è¡šç€ºãããŸãã
var ObjectCounter:integer; ObjectList:TObjectList; ... TFECoreObject = class (TObject) public ObjectLabel:string; procedure AfterConstruction; override; procedure BeforeDestruction; override; end; ... procedure TFECoreObject.AfterConstruction; begin inc(ObjectCounter); ObjectLabel:=ClassName+'('+IntToStr(ObjectCounter)+')' ObjectList.Add(self); Trace('Create object '+ObjectLabel) end; ... procedure TFECoreObject.BeforeDestruction; begin ObjectList.Delete(self); Trace('Free object '+ObjectLabel) end; ... procedure CheckObjects; var i:integer; begin for i:=0 to ObjectList.Count-1 do Trace('Bad object '+(ObjectList[i] as TFECoreObject).ObjectLabel); end;
æãç®ã®è¥ããèªè ã¯ãããããã§ã«ã¬ããŒãžã³ã¬ã¯ã¿ãŒã®åæã®ã¡ã«ããºã ã§ãããšèšãã§ãããã ãã¡ãããã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯é ãé¢ããŠããŸãã ããã¯è¯ã劥åã ãšæããŸãã ã³ãŒãã®ã¹ããŒããŠã³ã«æ°ã¥ããŸããã§ããã ããã«ãäœæ¥ã¢ã»ã³ããªã§æ¡ä»¶ä»ãã³ã³ãã€ã«ãã£ã¬ã¯ãã£ãã䜿çšããŠããã®ã¡ã«ããºã ãç¡å¹ã«ããããšãã§ããŸãã
ãã®ã¡ã«ããºã ã«ã¯æ¬ ç¹ããããŸã-ç§ã®å ±éã®ç¥å ããçæãããŠããªããªããžã§ã¯ãã®äœæãç£èŠããããšã¯ã§ããŸããã ååãšããŠããããã¯æšæºã©ã€ãã©ãªãªããžã§ã¯ãTStringListãTObjectListãªã©ã§ãã ãªããžã§ã¯ãã®ã³ã³ã¹ãã©ã¯ã¿ãŒã§ã®ã¿äœæãããã¹ãã©ã¯ã¿ã§ç Žæ£ãããšããã«ãŒã«ãäœæããŸããã ãããŠããã¹ãã¯ãã§ã«ãªããžã§ã¯ããç£èŠããŠããŸãã ãã¹ãŠã泚ææ·±ãè¡ããšããšã©ãŒã®å¯èœæ§ãæå°éã«æããããŸãã
3æéã®ã¹ãã¬ã¹ãã¹ãã®ã©ããã§ãéèŠãªå Žæããã¹ãŠç¹å®ããtry..finallyãæ£ããæ¹æ³ã§é 眮ããŸããã
åºæºç²ŸåºŠ
ã³ã³ãã¥ãŒã¿ãŒã®æç¹ã§ããŸãã察æ°å®èŠã®æç¹ã§ãä¿¡é Œã§ããå°æ°ç¹ä»¥äž3æ¡ã®ã¿ã人ã«å°æ°ç¹ä»¥äž14æ¡ã§ãã³ãããã®ã¯æªããšèããããŠããŸããããããã£ãŠãASKUEã·ã¹ãã ã§ã¯ãåãã©ã¡ãŒã¿ãŒã«ç²ŸåºŠãèšå®ã§ããŸãã ãã¹ãŠã®ãã©ã¡ãŒã¿ãŒã«ã€ããŠãããã¯ç°ãªããããã€ã¹ãšã®éä¿¡ã¢ãžã¥ãŒã«ã«ãã£ãŠæ±ºå®ãããŸãã å€ãã©ã®ããã«åœ¢æãããã©ã®ãããªèš±å®¹ç²ŸåºŠãä¿èšŒãããããç¥ã£ãŠããã®ã¯åœŒã ãã§ãã äž»ãªäœæ¥ãå®äºããåŸãç§ã¯å®éšããŠãã¢ãžã¥ãŒã«ã®æ倧èœåã粟床ã®èŠ³ç¹ããèŠã€ããããšã«ããŸããã
ãªããããããŠããã®ã§ããïŒ ããããããã¯ãã¹ãŠèªç¶ã®å¥œå¥å¿ã«é¢ãããã®ã§ãã ç®ã®åã§éæ³ã®ãããªããšãèµ·ããã®ãèŠãŸããã åç §å€ã¯ããããŸã§èŠãããšã®ãªãcãªãã©ãŒãããã«ããã¯ãããéæ³ã®æã®æ³¢ã§ãå®éã«ç°ãã埩å ãããŸãã ãããŠãéæ³ã®æãæã£ãŠãããªãããã€ãå°ãæ¯ã£ãŠã¿ããã 奜å¥å¿ããã€ãç§ãå°ç¡ãã«ãããšæãã
ãããã£ãŠãå€ã®ã¿ã€ãããšã«ã蚱容粟床ãå€æŽãå§ããŸããã 詳现ã«ã€ããŠã¯èª¬æããŸãããã1ã€ã®ã±ãŒã¹ã«ã€ããŠã®ã¿èª¬æããŸãã ç§ã¯ã粟床ã®éçã®æãã«ããã°ããã¹ãããŸã ååã ã£ããšãã«ããã¹ããèœã¡å§ããããšã«æ°ä»ããŸããã
å°ã調ã¹ãŠã¿ããšãããããã€ãã®å Žæã§Truncã䜿çšããŠãéã®ã·ã³ãã«ããä»äžããŸããã Roundã«çœ®ãæãããšãããéç粟床ã¯ããã«1æ¡åäžããŸããã
å人ãæ°åãäžžããã«ã¯ããã¡ããRoundãšRoundToã䜿çšããå¿ èŠããããŸãã æ°åŠçãªèŠ³ç¹ããèŠããšãTruncé¢æ°ã¯ã°ããããäžæ£ãªå€æã§ãã Truncã¯ãçºæããã1ã€ã®å Žåã«ã®ã¿äœ¿çšããå¿ èŠããããŸããæŽæ°éšåãšåæ°éšåã®åé¢ã§ãã ä»ã®ãã¹ãŠã®å Žå-ã©ãŠã³ãã ãã以å€ã®å ŽåãVosã¯ãã€ããŒãªãå Žåã«ãã£ãŠã¯ã¡ãžã£ãŒãªãã©ãã«ã«çŽé¢ããŸãã
ã©ã€ãããã€ã¹ãžã®æ¥ç¶
äžã§èšã£ãããã«ãäœæ¥ã®å€§éšåãçµãã£ããšãã«ãã®ããã€ã¹ã«æ¥ç¶ããŸããã ããã€ã¹ãRS-485çµç±ã§æ¥ç¶ããå¿ èŠãããããšãç¥ã£ãã®ã§ãç§ã¯ãšãŠã幞ãã§ããã çµå±ã®ãšããã2æ¬ã®ã¯ã€ã€ãããããŸããã ç§ã®åŸãã«ç¡ç·é»åæ©åšã®ãã€ãªãã¢ãµãŒã¯ã«ãããã®ã§ãã©ãã«ãããŠ2æ¬ã®ã¯ã€ã€ã«å¯ŸåŠã§ãããšæããŸããã ã€ã³ã¿ãŒãã§ã€ã¹ã³ã³ããŒã¿ãŒãšããã€ã¹ãæ¥ç¶ããããšãããšãã«ãé£çµ¡å ã®æå®ãèªãã åŸãç§ã¯é·ãå°æã«é¥ã£ãåçãèŠã€ããŸããã
æ£åŒãªè«çã®èŠ³ç¹ãããç¶æ³ã«è§£æ±ºçããªãããšãç解ããã®ã§ãã€ã³ã¿ãŒãããã調ã¹ãããšã«ããŸããã
ç§ã¯çŽ æŽã§çŽ æŽãªäººã§ãã ç§ã¯ããããã®æ°ãããããžã§ã¯ãããè¯ãã®åå©ãšæšæºã®äžå¯äŸµæ§ãä¿¡ããŠéå§ããŸãã ãããŠããã€ãæ®é ·ãªå€±æãç§ã襲ããŸãã ææªã®å Žåãããã¯æã ç¹°ãè¿ãããŸãã 人çã¯ç§ã«äœãæããŠãããŸããã
ã€ã³ã¿ãŒãããã§ã¯ãAããã€ãã¹ãšãã©ã¹ã®äž¡æ¹ãæ¥ç¶ãããšèšãããŠããŸããã ããã¯ãã¹ãŠè£œé æ¥è ã«äŸåããŸãã ãã®ãããªæ··ä¹±ããã£ãå Žåãééã£ãæ¥ç¶ã§ãå°ãªããšãäœãçããã¹ãã§ã¯ãªããšå€æããŸããã ç§ã¯ãããè©ŠããŸããã ãã¹ãŠãããŸããããŸããã
ãã¡ãããå®éã®ããã€ã¹ã¯ãããžã§ã¯ãã«å€ãã®æ¹åããããããŸããã å®éã®éä¿¡ã»ãã·ã§ã³ã¯ã圌ãã®å Žæã«å€ãã眮ããŸããã 倧ããªå€æŽã¯ããšã©ãŒåŠçãšã¹ãã¬ã¹ãã¹ãã«åœ±é¿ãäžããŸããã ç¹ã«ãã¯ââã€ã€ã¬ã¹ã¢ãã çµç±ã§ããã€ã¹ã«æ¥ç¶ããå ŽåïŒã»ãŒ3åã®1ã®åçãæªãã§ããŸããïŒã
ãããã«
ASKUEã¢ãžã¥ãŒã«ã®éçºãšãã¹ãã«é¢ããç§ã®çã話ã«èå³ãæã£ãŠããã ããããšãé¡ã£ãŠããŸãã ç§ããã¹ããæ€èšããæãéèŠãªããšã 補åã®å質ã¯ããã«çŽæ¥äŸåããŸãã ãããžã§ã¯ãã«å ãããããã¹ãã§ç¢ºèªãããŠããªããã¹ãŠã®å€æŽã¯ãæéãšåŽåã®ç¡é§ã§ãã çµå±ã®ãšãããã³ãŒãã®ããããªå€æŽã§ããã¹ããããŠããªãåé¡ãäœåºŠãè¿ãããŸãã
ç§ã®ä»äºã¯TDDæ¹æ³è«ïŒãã¹ãã«ãããã¹ãé§åéçºéçºïŒã«è§ŠçºãããŸããã ãããããã¡ãããçŽç²ãªTDDã§ã¯æåããŸããã§ããã ããã«ç§ãããªãã£ãããšããããŸãïŒ
- äºåã«ãã¹ããäœæããªãã£ã
- ã¯ã©ã¹ããšã«ãã¹ããæžããŠããŸãã
- çããã¹ããæžããŠããªã
ãããžã§ã¯ãã§äœãèµ·ãã£ãã®ããã¢ãžã¥ã©ãŒãŸãã¯çµ±åã«èµ·å ãããã¹ãã®çš®é¡ãããããŸããã ããã¯ãµãã·ã¹ãã ã®åãå ¥ããã¹ãã ãšæããŸãã
ã³ã¡ã³ããèªãã åŸãç§ã人çã«ã€ããŠäžå¹³ãèšã£ãŠãããšæãããããããŸããã ããã©ããããããããŸãã«ããã°ã©ãã³ã°ãäžçã§æãèå³æ·±ã掻åã«ããŠããçç±ã§ãã ãŸããèšæž¬ããã€ã¹ã®äœæè ããã¹ãŠãå¿ã«çããŠããªãããšããé¡ãããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ã®å察åŽã§ã¯ã人çãé¢çœãããšãç¥ã£ãŠããŸãã ç§ã®ç®èã¯ãã¹ãŠèªåèªèº«ã«åããããŠããŸãã
çæ§ã«æ¥œããããã°ã©ãã³ã°ããç¥ãããŸãã