ããã®éçºè ã®ã»ãšãã©ã¯ã4人ã®ã®ã£ã³ã°ã®ãããªç·ãèªãã§ãããšæããŸãã ã€ã³ã¿ãã¥ãŒã§ããå šå¡ããã¿ãŒã³ãšããèšèãèãã幞éãªäººã¯ããæªãïŒãŸãã¯ããå°ãªãïŒããæªãèšèïŒåœä»€çãæ©èœçãã¢ãããåå¿æ§ããã®ä»ã®ææïŒãèããã äžè¬ã«ããœãããŠã§ã¢éçºã®äžçã§ã¯ããªãå€ãã®æãããŠé¢çœãã¢ã€ãã¢ãåºåã£ãŠããŸããã幞ããªããšã«ããããã®ãã¹ãŠãèšèã®æœè±¡åã®åœ¢ã§ã®ã¿ååšããããã§ã¯ãããŸããã ãã®èšäºã§ã¯ãé©çšãããããŒã«ã«ã€ããŠã¯ããŸã話ããïŒã»ãšãã©ã®äœæ¥æéã«åºäŒãã®ã¯åœŒãšäžç·ã§ããïŒãç解ãå¿ èŠãšããããŒã«ã®äŸã«ã€ããŠã話ããããšæããŸãã ã©ã®ããã«ïŒããã³ã©ã®ïŒããŒã«ãèšèšãã³ãŒãäœæã®ããã»ã¹ãå€æŽãããã«ã€ããŠã話ãããããšæããŸãã
ç§ã®æèŠã§ã¯ããã®èšäºã¯äžçŽã¬ãã«ã®éçºè ã«ãšã£ãŠã¯ããªãè€éã«ãªããŸãããããã«ãã°ãããããŒã«ããªã¹ãããŸããã³ãŒããšã¢ããªã±ãŒã·ã§ã³ã®äŸãèªããšãéçºã«éåžžã«åœ¹ç«ã¡ãŸãã çµéšè±å¯ãªéçºè ã«ãšã£ãŠã¯ããã®æ å ±ã®ããªãã®éšåã¯ç¢ºãã«ç¥ãããŠããŸãããããªãã«ãšã£ãŠåœ¹ã«ç«ã€äœããèŠã€ãããšä¿¡ããŠããŸãã å°ãªããšããæ¥ãããããŠæãããããšã«ããã®èšäºã§èª¬æããããšã®ã»ãšãã©ã«ããªãé ããŠäŒã£ãããã§ãã
äžè¬çã«ãå®è·µã瀺ãããã«ãæãæçšãªãœãªã¥ãŒã·ã§ã³ã¯éåžžéåžžã«ç°¡åã§ãã äž»ãªæé©åã¯ãã»ãšãã©ã®å ŽåãOïŒn log nïŒã®ä»£ããã«OïŒnïŒã®æŒžè¿çãªæ¯ãèããæã€ã¢ã«ãŽãªãºã ãéžæããããšã§ã¯ãªããã³ãŒãããŒã¹ãæŽçããæ¹æ³ãéžæããããšã«ãããŸãã ç¬èªã®ã³ãŒãã«èŠåŽããæéãå°ãªããªããšãã³ãŒãã®æ¹åã«ããå€ãã®æéãè²»ããããšã«ãªããŸãã ãããã£ãŠãååUITableViewã«PullToRefreshãå®è£ ãã201çªç®ã®ãããããããã³ãŒãã®æŽçã«å€ãã®æéãè²»ããããšããŸããã ãããŠãç§ãç¥ã£ãŠããããã€ãã®æ¹æ³ãå ±æããããšæããŸãã
- æåã®æå°ã®ç« ã§ã¯ãããã»ã©è€éã§ã¯ãªãã䟿å©ãª3ã€ã®ãã¬ãŒã ã¯ãŒã¯ããå§ããŸãã ããããããã«å®å
šãªæ·±ãã«é£ã³èŸŒãããšãªããéå§ããå ŽæãåŸãããã«ã
- ã³ã³ã¢ããã
- ããžã«ã«ã¬ã³ãŒã
- çŽæããã
- 2çªç®ã®ç« ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ãŸãã¯ãã®éèŠãªéšåãã€ãŸãéçºããã»ã¹å
šäœã«æ·±å»ãªåœ±é¿ãäžããã¢ã€ãã¢ãæŠå¿µã®åºç€ãšãªããã¬ãŒã ã¯ãŒã¯ããªã¹ãããŸãã ããããæ倧éã«äœ¿ãå§ããã«ã¯ããããã«åºã¥ããŠå°ãªããšã2ã3ã®å°ããªã¢ããªã±ãŒã·ã§ã³ãäœæããããšããå§ãããŸãããããã¯ãæ°ããæ©èœãèšèšãããšãã®æèã«å€§ããªåœ±é¿ãäžããããã§ãã
- çŽç²ãªmvc
- ç°ã®ãã¬ãŒã ã¯ãŒã¯
- åå¿æ§ã³ã³ã¢
- componentKit
- 3çªç®ã®ç« ã§ã¯ããã¹ããšããã¹ãå¯èœãªã³ãŒããäœæã§ãããã®ã«ã€ããŠèª¬æããŸãã
- æåŸ
- OCMock
- è¡ã®éæ³
- 第4ç« ã¯ãã³ãŒãã«çµã¿èŸŒãããšãã§ãããã¬ãŒã ã¯ãŒã¯ã§ã¯ãªããã³ãŒãã®äœæ¥ã容æã«ããããŒã«ã«å°å¿µããŸãã
- çºé»æ©
- ãã¡ã¹ãã¬ãŒã³
- YACC / LEX
èš±ããäºåã«ãé¡ãããŸãã ãã«ãã»ãã®ã³ãºãèšã£ãããã«ïŒ
ç§ã¯ããªãã®è¯ãååãããã2åæªãããšãç¥ã£ãŠããŸãããããŠç§ã¯ç§ãããããã¹ãååã®èãååãæããŠããŸãã
ã ããããã«ãã-ãã®èšäºã§ã¯ãææ¡ãããããŒã«ã®è©³çŽ°ãªåæã¯ååã§ã¯ãããŸããïŒããã«ã¯ã³ãŒãã1è¡ããããŸããïŒïŒ-䞻芳çãªææ ãšäœ¿çšã®æšå¥šã®ã¿ã§ãã ãŸããå€ãã®ããŒã«ãããããããããåå¥ã®åæã«å€ããŸãã
ãããïŒ ãããã®ã¬ãã¥ãŒããããŸã-ãããŠãåããŒã«ã«ã€ããŠããã®äœ¿çšäŸãããã¥ã¡ã³ããé¢é£æ å ±ãèŠã€ããããšãã§ããå Žæã瀺ããããšããŸãã-è¯ããããã¯æ¬åœã«åå以äžã§ãã
ããã§ã¯å§ããŸãããã
第1ç« ã¯ããã«
ã³ã³ã¢ããã
ãã®æ¥œåšã«ã€ããŠèããŠãããªã人ã¯ããããããã«ããªãã§ãããã ãããžã§ã¯ãã®å€éšäŸåé¢ä¿ç®¡çããŒã«ïŒãµãŒãããŒãã£ïŒã
ããªãã¯ããã§ããã«ã€ããŠèªãããšãã§ããŸã ã 誰ãããã¹ãŠãå®å šã«ç¥ã£ãŠããã®ã§ãããã§ã¯åœŒã«ã€ããŠç¹ã«èª¬æããŸããã ãããŠãç¥ããªã人ã®ããã«ãããªãã¯ãããèªã㧠ãiOSéçºè ã®ããã®ãã®ããŒã«ãå¿ é ã§ããããšãèæ ®ã«å ¥ããããšãã§ããŸãã 䜿çšãžã®ç§»è¡ã«ãããæ°ããã¢ããªã±ãŒã·ã§ã³ã®ãããã¿ã€ãã³ã°ã«ãããââæéãå€§å¹ ã«ççž®ãããç¬èªã®çåºãäœæããããšã§ãåå©çšå¯èœãªã³ãŒããäœæããããã»ã¹ãå€§å¹ ã«çµ±å¶ãããŸãã
é·æ
- ä¿¡ããããªãã»ã©ç°¡åãªãããžã§ã¯ãã®äŸåé¢ä¿ç®¡çã æ°ãããã®ã®è¿œå ã¯ãã£ã1è¡ã§å®äºããŸãã
- åå©çšå¯èœãªã³ãŒãããåå©çšãä¿é²ãã䟿å©ã§ã·ã³ãã«ãªã³ã³ããã«ããã¯ããæ©èœã
- ã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãããäŸåé¢ä¿ã®ã³ãŒããåé¢ããŸããããã«ããããµãŒãããŒãã£ããŒã«ãããã®ã³ãŒããå€æŽããèªæã軜æžãããŸãïŒãã¡ãããããã¯äŸ¿å©ã§å¿ èŠãªå ŽåããããŸããäŸåé¢ä¿ã¢ãžã¥ãŒã«ã®æåã®æŽæ°åïŒã
çæ
- äŸåé¢ä¿ãè¿œå ããããã»ã¹ã¯éåžžã«åçŽåãããŠããããããããã®äŸåé¢ä¿ã®å€ãããããã¿ããšã«ãããžã§ã¯ãã«è¿œå ãããªãããã«æ³šæããŠç£èŠããå¿ èŠããããŸãã ãããŠãããããããã¿ã€ãã³ã°ã«é©ããŠããå Žå-ãããŠãé·åœã®ãããžã§ã¯ãã«-ããã¯éèŠãªè³ªåã§ãããã¹ãŠã®ãµãŒãããŒãã£ãå®ç§ãšããããã§ã¯ãããŸããããééãã®è²¬ä»»ã¯ããªãã«ããããã§ãã
- å¥åŠãªãã®ãå¿ èŠãªå Žåã¯ããšãã©ãããã調ã¹ãªããã°ãªããŸããã ããšãã°ãããæç¹ã§ãã¿ãŒã²ããããšã«ç°ãªãã¢ãŒããã¯ãã£ãæ£ããçµã¿ç«ãŠãããã«ãããžã§ã¯ããæããã®ã«ããªãã®æéãããããŸããã ããããä»ã§ã¯ç°¡åã§å¿«é©ã«ãªã£ãŠããŸãããäºå®ã¯æ®ã£ãŠããŸãã
ããžã«ã«ã¬ã³ãŒã
ããŒã¿ããŒã¹ãã¬ãŒã ã¯ãŒã¯ãCoreDataã®ã©ãããŒã§ãã 詳现ã¯ãã¡ããã芧ãã ãã ã
MagicalRecordã¯ã以åã«ããããæ¹æ³ã§CoreDataãé¿ããå Žåã§ããCoreDataã®äœ¿çšãéå§ããã®ã«åœ¹ç«ã¡ãŸãã CoreDataãçããŠãã家ã§ã³ãŒããŒãšã©ã®ããã«æ©èœããããç解ããã«MagicalRecordã䜿çšããŠæ¯èŒããããšããããŸã-ç§ã¯ãããç解ã§ããŸãããç§ã®å人çãªçµéšãã-ç§ã¯ãå®çšçãªã¿ã¹ã¯ã
MRèªäœã¯ãObjective-Cã®ActiveRecordã³ã³ã»ããã®é©å¿ã§ãã ãã®æŠå¿µã¯ãããŒã¿ããŒã¹ãæäœããéã®çŠç¹ãããŒã¿ããŒã¹ãšããŒãã«ããåã ã®ã¬ã³ãŒãã«ç§»ããããŒã¿ããŒã¹ãšã®åºæ¬çãªæäœããããã«é¢é£ä»ããŸãã ã€ãŸãããããŒãã«-ãã®ã¬ã³ãŒããåé€ãããã®ä»£ããã«ããã¬ã³ãŒã-倱æããŸãã¯ãã¬ã³ãŒã-äœæãå€æŽãæ¬è³ªã«å¯Ÿå¿ãããã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ãæäŸããããšèšããŸãã
ããã䜿çšãããšãããŒã¿ããŒã¹ã®ã©ãããŒå ã®ã³ãŒãã®éãå€§å¹ ã«åæžã§ããŸãã ããã«ãããŒã¿ããŒã¹ãæäœããããã®ã¯ããã«ç°¡åã§å®å šãªã³ãŒããæžãããšãã§ããŸãã
é·æ
- å€ãã®CoreDataã¬ãŒããé ããã¬ã³ãŒãã®åæåãä¿åãå€æŽã«å¿ èŠãªã³ãŒããå€§å¹ ã«åæžããŸãã åã³ã³ããã¹ãã§ã®äœæ¥ãç°¡çŽ åããŸãã
- æåã¯ããŒã¿ã䜿çšããéåæäœæ¥ã«çŠç¹ãåœãŠãŠãããããUIããã³ã°ããããšã¯ãããŸããã
- äœãšã³ããªãŒãããå€-ãã®ãã¬ãŒã ã¯ãŒã¯ã䜿çšãããšãããŒã¿ããŒã¹ã®é·æãæããããšãã§ããŸãããå°çã®ãã¹ãŠã®æ·±ããŸã§ã¯éããŸããã
çæ
- ã³ãŒãã®ãã¹ãŠã®éåæéšåãšåæ§ã«ããã¹ãã§ã«ããŒããããšã¯ããªãå°é£ã§ãã
- ããã«ãããŒã¿ããŒã¹ãæäœããä»ã®æ¹æ³ãšåæ§ã«ãã¢ãŒããã¯ãã£ã¬ãã«ã§ããŒã¿ããŒã¹ã®æ£ç¢ºæ§ãä¿èšŒããå¿ èŠããããŸã-ã¢ããªã±ãŒã·ã§ã³ãåãå Žæã§äžåºŠã«èªã¿æžããè©Šè¡ããªãããã«ããŸãïŒããããæåããŸãããããã«ããªããæ¬åœã«å¥œãã§ã¯ãªãçµæããããŸãïŒ
- è¿°èªãã¯ãšãªããã®ä»ã®èšè¿°ãå®å šã«è»œæžããããã§ã¯ãããŸããïŒãã®ãããªããšãæåŸ ããã®ã¯å¥åŠã ããããããçŽæ¥ã®æ¬ é¥ã ãšã¯èšããŸããïŒ
PromiseKit
Promiseã®ãããªæŠå¿µã䜿çšããããã®ãã¬ãŒã ã¯ãŒã¯ã 詳现ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã
ã€ãŸããããã¯ã¢ã¯ã·ã§ã³ã®ãã§ãŒã³ã®åœ¢åŒã§éåæã³ãŒãã䜿çšããŠäœæ¥ãç·šæããæ¹æ³ã§ãã ãªããããå¿ èŠã§ããïŒ
1.éåæã³ãŒãã¯ãå®è¡äžã®ã¹ã¬ããã«é¢ä¿ãªããã·ã³ãã«ã§ç·åœ¢ã«ãªããŸãã 圌ã®ç®ã®åã§ã圌ã®å³æ Œãªæ§é -äœãšãªãæºããããŸãã 1ã€ã®ç»é¢ã§ã次ã®ããžãã¯ãé 眮ã§ããŸãã2ã€ã®æ§æãã¡ã€ã«ãããŠã³ããŒãããŸãã ããããæ¥ããã劥åœæ§ããã§ãã¯ããŠãã ããã ãã®åŸãããçš®ã®ã¢ãã¡ãŒã·ã§ã³ãéå§ããçµæã衚瀺ããŸãã
2.éåæã³ãŒãã¯ãã¢ãããã¯ã§ã«ãã»ã«åãããåå©çšå¯èœã«ãªããŸãã éåžžã«å€ãã®å Žåãéåææäœã®ã«ãã»ã«åãç Žå£ããèªæããããŸããããšãã°ãããã€ãã®äžè¬çãªå€æ°ã䜿çšãããšãéåæã³ãŒãã®å€æŽãé£ãããªããŸãã
3.å®è¡ãã§ãŒã³å šäœã®ãšã©ãŒåŠçã®å¿«é©ãªæ©äŒããããŸãã éåæã³ãŒãã®ãã§ãŒã³ãæžãã人ã¯èª°ã§ãããã§ãŒã³ãé·ããªãã°ãªãã»ã©ããšã©ãŒãæ£ããåŠçããããšãé£ãããªããã³ãŒããè€éã§æ±ãã«ãããªããšããäºå®ã«ééããŸããã
é·æ
- éåææäœã®å®è¡ã®ã°ã©ãã®æ§ç¯ãå€§å¹ ã«ç°¡çŽ åããŸãã 1ã€ã®æäœãå¥ã®æäœãŸãã¯ä»ã®ããã€ãã®æäœã®çŽåŸã«éå§ããã®ã¯ç°¡åã§ã
- ãã§ãŒã³å®è¡ã®ããŸããŸãªæ®µéã§çºçãããšã©ãŒã®åŠçãå€§å¹ ã«ç°¡çŽ åããŸãïŒç¹ã«ããã¹ãŠã®æäœãå®å šã«æåããä»ã®ãã¹ãŠã®æäœã§æå³ããªãå Žåã«ã®ã¿ã¢ããªã±ãŒã·ã§ã³ã®ãã§ãŒã³ãæå³ããªãå ŽåïŒ
- éåææäœãæ£ããã«ãã»ã«åã§ããããã«ããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªå Žæã§ã®è€æ°ã®äœ¿çšãå€§å¹ ã«ä¿é²ããŸãã
çæ
- çŽæãåŠçãããšãã¯ããŸã ã¡ã¢ãªã«æ³šæããå¿ èŠããããŸã
- ãã³ãŒããã§ã¯ãªãããã³ãŒããåŒã³åºãã©ãããŒãã§ã®äœæ¥ã«æ £ããã«ã¯æéãããããŸã
- ãããã°äžã®äžäŸ¿ã
第2ç« ã¢ãŒããã¯ãã£ãã¬ãŒã ã¯ãŒã¯ãªã©
PureMVC
詳现ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã
ãããããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã®éçºäžã«å¯ŸåŠããªããã°ãªããªãã£ãæåã®äž»èŠãªã¢ãŒããã¯ãã£ãã¬ãŒã ã¯ãŒã¯ã®1ã€ã§ãã
èŠããã«ãããã¯ãMVCãã¿ãŒã³ãããå°ããªãšã³ãã£ãã£ã«æ£åŒã«å解ãããã®ã§ãã
1. VOïŒå€ãªããžã§ã¯ãïŒ-CoreData Entityã§ããç¥ãããŠããŸã
2.ãããã·-å¥åŠãªååã§ããã«ãããããããã¢ãã«ã®ã©ãããŒãè¡šããŸã-ã¢ãã«ã®éèªæãªã²ãã¿ãŒïŒã¢ã°ãªã²ãŒã¿ãŒïŒãããŒã¿ãžã®ã¢ã¯ã»ã¹ãæ åœããŸã
3.ã¡ãã£ãšãŒã¿ãŒ-MVCã§ã³ã³ãããŒã©ãŒãæ€èšããããäžè¬çãªãã®ã¯ããã¥ãŒã®è¡šç€ºãå¶åŸ¡ããããããã®ä¿¡å·ãåŠçããŸãã ãã¡ãµãŒããä»ããŠéä¿¡ãããéç¥ããµãã¹ã¯ã©ã€ãã§ããŸã
4.衚瀺-ããŠã衚瀺ã¯è¡šç€ºã§ãã æ å ±ã®èŠèŠç衚瀺ãæ åœããã³ãŒãã
5.ãã¡ãµãŒã-ã¢ããªã±ãŒã·ã§ã³ã®å®è¡äžã«åžžã«ååšããã·ã³ã°ã«ãã³ãšã³ãã£ãã£ã ProxyãMediatorãããã³Commandã¯ã©ã¹ã®ãã¹ãŠã®ãªããžã§ã¯ãã¯ãäœææã«ç»é²ããå¿ èŠããããŸã
6.éç¥-ãã¡ãµãŒããä»ããŠéä¿¡ãããã¡ãã»ãŒãžã 賌èªããŠãããã¹ãŠã®ã¡ã³ããŒãã¡ãã£ãšãŒã¿ãŒïŒããã³ãããã®ã¿ïŒãåãåããŸãã
7.ã³ãã³ã-ãããŒã¢ããªã±ãŒã·ã§ã³ãèšè¿°ãããã®-ã³ãã³ããã¿ãŒã³ã«åŸã-ã¯ãã¡ã¢ãªã«ä¿æãããããšãªãèµ·åãå®è¡ãçµäºãããŸããããã¯ãå®è¡ãããã³ãŒãã«ããéç¥ã§ãã
é·æ
- ã¢ãŒããã¯ãã£ã®å®å šæ§ã®çŽ æŽãããããŒãžã³-ç§ã®äŸã§ã¯ããã¹ãŠãæ°å¹Žéã³ãŒãã«æ³šã蟌ãŸããæ·±ããªãã¡ã¯ã¿ãªã³ã°ã®å¯èœæ§ãšé©åãªæè¡ããã»ã¹ã®åºçŸã確èªããããã«éçºãèµ·ããã«çããŸããã
- ã©ããããããã¿ã€ãã³ã°-ã¢ãŒããã¯ãã£ã¯ãã§ã«ååã«è©äŸ¡ãããŠããŸãã ãŸãããã®æ§é ã䜿çšããçµéšãããå Žåã¯ãéåžžã«è¿ éã«è¡ãããšãã§ããŸãããåæã«ã¢ãžã¥ãŒã«åŒã®å埩圢åŒã§ã¢ããªã±ãŒã·ã§ã³ã®æ©èœãåäžãããããšãã§ããŸãã
- éåžžã«æ£åŒãªæ§é ïŒãããžã§ã¯ãã§äœ¿çšãå§ããå ŽåïŒãç¡èŠããã®ã¯ããªãå°é£ã§ããããã¯ããã¹ãŠã®ãããžã§ã¯ãéçºè ãçµ±äžãããæ¹æ³ã§ã³ãŒããèšè¿°ãããšããäºå®ã«ã€ãªãããŸãã
çæ
- ãã¹ãŠã®éèŠãªã¢ãžã¥ãŒã«ã¯å®éã«ã¯ã·ã³ã°ã«ããŒã³ïŒãã®å Žåãã·ã³ã°ã«ãã³ãã¡ãµãŒãã«ç»é²ãããŠããïŒã§ãããããäžæ£ãªã³ãŒããæžãæ©äŒãéåžžã«å€ããããŸããããã¯ããããžã§ã¯ããæé»çãªäŸåé¢ä¿ãæ§ç¯ããããããæ©äŒãéåžžã«è¿ éã«æã€ããšãæå³ããŸã
- ããã¬ã®å°çã æ瀺çãªãã€ã³ãã£ã³ã°ã¯ã»ãšãã©ãããŸãããå®è¡ãã§ãŒã³ã«æ²¿ã£ãŠé²ãã«ã¯ããšã³ãã£ãã£ã象城ããç·ã«æ²¿ã£ãŠç§»åãããã®ãšã³ãã£ãã£ãç»é²ãããŠããå ŽæãèŠã€ããããã«é¢é£ä»ããããã¯ã©ã¹ãèŠã€ããŠãããã«è¡ãå¿ èŠããããŸãã æºåãæŽããŸã§ç¹°ãè¿ããŸãã ã¹ã¿ãã¯ã®ãã¹ãã®æ·±ãã¯å®å šã«å®å®ã®å€ã«éããŸãïŒç§ã¯èªåã®ç®ã§100ãèŠãŸããïŒ
ç°ã®ãã¬ãŒã ã¯ãŒã¯
詳现ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã ãŠãŒã¹ã±ãŒã¹ãããã«ãããŸãã
å ·äœçã«ã¯ããã®ãã¬ãŒã ã¯ãŒã¯ã¯ã²ãŒã éçºã«ããé©ããŠããŸãããããæç¹ã§ã¢ããªã±ãŒã·ã§ã³ãã¹ããŒãã¬ã¹ã§ãªããªã£ããšèšããå Žåãå°ãªããšããã®ããšãç解ããããšã¯æçã§ãã
èŠããã«ãããã¯Entity-Component-Systemãã¿ãŒã³ãå®è£ ãã次ã®ãšã³ãã£ãã£ã»ããã§åäœãããã¬ãŒã ã¯ãŒã¯ã§ãã
1.ãšã³ãã£ãã£-å®éã«ã¯ãããã€ãã®ãšã³ãã£ãã£ïŒèª¬æãç°¡åã«ããããã«ããã®ãã¬ãŒã ã¯ãŒã¯ã«ããé©ããŠããããããã®å Žåã¯ã²ãŒã ããŒãã®äŸã䜿çšããŸãïŒã ããšãã°ããã¬ãŒã€ãŒãæµããŸãã¯é害ç©ã ããã«ããšã³ãã£ãã£ã¯ããã»ã©æ瀺çãªã¢ã¯ã¿ãŒïŒã¢ã¯ã·ã§ã³ãªããžã§ã¯ãïŒã«ã¯ã§ããŸãããããšãã°ãOptionsãããã¢ãããlifeBarããŸãã¯ããšãã°ã¬ãã«å šäœã§ãã ç¹å®ã®ã³ã³ããŒãã³ãã»ããã«é¢é£ä»ããããæå°éã®æ å ±ã§åäœããŸãã
2.ã³ã³ããŒãã³ã-ããŒã¿ãæã€ã¢ãããã¯ã³ã³ããã ããšãã°ãäœçœ®ãé床ãç Žå£å¯èœæ§ã...
3.ãã£ã«ã¿ãŒ-ãšã³ãã£ãã£ã»ããå šäœã§ã¯ãªãããããééãããã®ã®ã¿ãååŸã§ããããã«ããããã®ãã£ã«ã¿ãŒã ã³ã³ããŒãã³ãããŒã®ã»ããã§ãã ãããã£ãŠããã£ã«ã¿ãŒã«ããŒãäœçœ®ããšãé床ããå«ãŸããŠããå Žå-移åããªããšã³ãã£ãã£ããŸãã¯ã²ãŒã 以å€ã®ãšã³ãã£ãã£-ã¯ééããŸããã
4.ã·ã¹ãã -ãšã³ãã£ãã£å€æŽã®æ§è³ªã®èª¬æã ãã£ã«ã¿ãŒããããšã³ãã£ãã£ã®ã»ããã§åäœããäœããã®åœ¢ã§ãããå€æããŸãã ããšãã°ãéåã·ã¹ãã ã ãã£ã«ã¿ãŒãééãããšã³ãã£ãã£ïŒäœçœ®ãé床ãå é床ãéåã®åœ±é¿ãåããããïŒãååŸããéåã®åœ±é¿ãèæ ®ããŠå é床ãåèšç®ããŸãã
ãŸãã¯MovementSystem-äœçœ®ãé床ãããã³å é床ãæã€ãã¹ãŠã®ãšã³ãã£ãã£ãååŸããå é床ã®å€ã«ãã£ãŠé床ãå€æŽããé床ã®å€ã«ãã£ãŠäœçœ®ãå€æŽããŸã
5.ã¯ãŒã«ã-ç¹å®ã®é åºã§ãã¹ãŠã®ã·ã¹ãã ã®æŽæ°ãèŠæ±ãããªããžã§ã¯ãã
å®éããã®ãã¬ãŒã ã¯ãŒã¯ã¯ãåŸæ¥ã®OOPã®ããçãã芳ç¹ãããªããžã§ã¯ãã®åäœãæäŸããŸãããªããžã§ã¯ãã¯å€åã«åå¿ããã®ã§ã¯ãªããã·ã¹ãã ãä»ããŠç¬ç«ããŠåå¿ããã³å€æŽã§ãããªããžã§ã¯ããèŠã€ããŸãã
é·æ
- ããžãã¯ãçŽäº€ãšã³ãã£ãã£ã«åå²ããäºãã«å¹²æžããªãã¢ãžã¥ãŒã«ã®èŠ³ç¹ããèãã
- æåã®å€æŽã®ããããïŒåäœïŒãæ°ããæåã®è¿œå ã®ããããã
- ã¹ããŒããã·ã³ã¯èšèšãã¬ãŒã ã¯ãŒã¯ã«çµã¿èŸŒãŸããŠããŸãã ãããã£ãŠããã£ã©ã¯ã¿ãŒãšãªã¢ã¯ã·ã§ã³ã®ã»ããå šäœãåãæ¿ããããšãã§ããŸãã
çæ
- ããã¯ç¹å¹è¬ã§ã¯ãããŸããã ã¹ããŒããã·ã³ã¯ããã«è€éã«ãªããã³ãŒããå¶åŸ¡ã§ããªããªããŸãã ãã®äžã«äœãã©ã®ãããããã¹ãããéåžžã«æ確ã«ç解ããå¿ èŠããããŸãã
- ã¢ãžã¥ãŒã«ã®çŽäº€æ§ãšå®å šãªã¹ããŒãã¬ã¹ã¯ãé ã®äžã§ã¯éåžžã«çŸããæŠå¿µã§ãããå®éã«ã¯ç¶æããããšã¯éåžžã«å°é£ã§ãã ãŸããã³ã³ããŒãã³ãã®å€éšã«ããå ±æããŒã¿ã¯ãéåžžã«è¿ éã«ã1ã€ã®ã¹ã¬ããã§ã¯ãããã®ã®ã競åç¶æ ã¿ã€ãã®å€ãã®å°é£ãšãã°ã®å¯èœæ§ã«ã€ãªãããŸãã
åå¿æ§ã³ã³ã¢
ãããããä»æ¥ã®iOSéçºã®ããã®æãéèŠãªãµãŒãããŒãã£ãã¬ãŒã ã¯ãŒã¯ã®1ã€ã§ãã ããã«ã€ããŠè©³ããã¯ã ãã¡ããšããã§èªãããšãã§ããŸã -ç§ã¯ãããè¡ãããšã匷ããå§ãããŸãã 圌ã¯ãiOSã®ã¡ã€ã³ãã¿ãŒã³ïŒMVCïŒãã¢ããã°MVVMã«çœ®ãæããããšãææ¡ãããã®äœ¿çšã«ãããŠã¯ãªã¢ã¯ãã£ãããã°ã©ãã³ã°ã«äŸåããŠããŸãã
ã€ãŸãããªã¢ã¯ãã£ãããã°ã©ãã³ã°ã¯ãããŒã¿ã¹ããªãŒã ã®æäœã«çŠç¹ãåœãŠãéçºãã©ãã€ã ã§ãã éåžžã®éçºïŒå¿ é ïŒäžã«ããããã°ã©ã ã¯Aãå®è¡ãã次ã«Bãå®è¡ãã次ã«Cãå®è¡ããããšããã¹ã¿ã€ã«ã®éçºè ããã°ã©ã ã®å Žåã AãBãããã³CãããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã¢ãžã¥ãŒã«ã«ããéèŠãªè«çæäœã§ããå ŽåïŒãã®ãããªãããã¯ã®æ°ãå¢ãããšïŒãããã°ã©ã ã®æ¥ç¶æ§ãé«ãŸãããã®è€éããšãµã€ãºãå¢å€§ããŸãã
é·æéã®æäœã«å¯ŸããããŸããŸãªã¢ãžã¥ãŒã«ã®ãã®ãã€ã³ãã£ã³ã°ã®æãæåãªäŸã¯å§ä»»ãã¿ãŒã³ã§ããããã¹ãŠã®åé¡ã解決ããããã§ã¯ãããŸããã
- äžåºŠã«è€æ°ã®ä»ã®äººãéå§ããããã«ãã®æäœãå®äºããå¿ èŠãããå Žåã¯ã©ããªããŸããïŒ
- ã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãæéã«ãã®æäœãéå§ããããã«ããŸããŸãªãšã³ãã£ãã£ãå¿ èŠãªå Žåã¯ã©ããªããŸããïŒ
- 1ã€ã®æäœã«é¢é£ä»ããããã³ãŒãã¯å€æ°ã®ã¢ãžã¥ãŒã«ã«æ£åšããŠããããã®å€æŽã¯å°é£ã§ãã
- ã¢ã¯ã·ã§ã³ã®ãã§ãŒã³ïŒç¹ã«ãã®äžéïŒã«æ°ããæäœãè¿œå ããã«ã¯ãååãšããŠãããªã倧éã®ã³ãŒããå¿ èŠã§ãã
Reactive CocoaãšMVVMãæäŸãããã®ïŒ
- æäœã¯ã¢ãžã¥ãŒã«ã«çµåããããã®ã€ã³ã¿ãŒãã§ã€ã¹ã§ã©ãããŒãå®è¡å¯èœã³ãŒããããããä¿¡å·ãšã³ãã³ãã«å¯ŸããŠäœæãããŸãã
- åŸæ¥ã®MVCãšã¯ç°ãªããä¿¡å·ããŒã¹ã®ã¢ãŒããã¯ãã£ã«ãããäžéå±€ãªãã§é¢é£ãšã³ãã£ãã£ãçŽæ¥é¢é£ä»ããããšãã§ããŸãã
ç§èªèº«ã«ãšã£ãŠãReactiveCocoaã¯PromiseKitã®ã¢ã€ãã¢ã®éçºã§ãããããããã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£ã®ã¬ãã«ãŸã§æ¡å€§ããŠãããšèããŠããŸãã
ReactiveCocoaãPromiseKitã®é·æãšçæãç¶æ¿ããŠãããšããäºå®ã«å ããŠã以äžãè¿œå ããããšæããŸãã
é·æ
- ã¢ããªã±ãŒã·ã§ã³ã®ã¢ã¯ã·ã§ã³ã·ãŒã±ã³ã¹ã¯ãããå°ãªãã³ãŒãã䜿çšãããããäžç®ã§ææ¡ãããããªããŸããã€ãŸããã¢ããªã±ãŒã·ã§ã³ã®åäœãç解ãããããªããŸãã
- ã¢ã¯ã·ã§ã³ã®ã·ãŒã±ã³ã¹ã«ããæäœã®å®¹æã-äžéã¹ãããã®è¿œå ããµã€ãã¹ãããã®è¿œå ãŸãã¯åé€ã¯ç°¡åã§ãã
çæ
- Reactive Cocoaã䜿çšããã³ãŒããããã°ã¯éåžžã«å°é£ã§ãã
- ã·ã°ãã«ã®æ±ããããã¯ãã¢ããªã±ãŒã·ã§ã³ã®æ¥ç¶æ§ã®å¶åŸ¡äžèœãªå¢å ãåŒãèµ·ããããã§ãŒã³ãé·ããªããäºãã«äº€å·®ãããšããã®å®è¡ã®å¶åŸ¡ã倱ãã®ã¯éåžžã«ç°¡åã§ã
- ãã®çš®ã®ä»ã®å€ãã®ãã¬ãŒã ã¯ãŒã¯ãšåæ§ã«ãã¢ããªã±ãŒã·ã§ã³ã®éèŠãªã»ã¯ã·ã§ã³ã§ãããé¿ããæ¹ãè¯ãã§ã-ããã¯éåžžã«é«éã§ã¯ãããŸããã
componentKit
FacebookéçºããŒã ããã®æè¿ã®ãã¬ãŒã³ãã ãã¡ãã§è©³ããèªãããšãã§ããŸã ã ããªãã®ããšã¯ç¥ããŸããããã€ã³ã¿ãŒãã§ãŒã¹ã解決ããæ¹æ³ãšããŠãäœåºŠãHTMLãšCSSãæ²ããã«èŠãŸããã ã€ãŸãã 宣èšçUIãšåŒã°ãããã®ã«ã€ããŠã§ãã
èŠããã«-ãŠã£ãããã£ã¢ã«ãããšãããã¯ãäœææ¹æ³ãã§ã¯ãªããäœæããããšãã®å§¿ãã«çŠç¹ãåœãŠããšã³ãã£ãã£ãèšè¿°ããæ¹æ³ã§ãã ComponentKitã¯ãiOSéçºã®å€èŠ³ãAutoLayoutã§èŠãããã¢ã€ãã¢ã®éçºã§ããã³ã³ã»ããã¯ã1ã€ã®ã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ãå€æŽããããšã§ãUIã®æ®ãã®éšåãæ£ããèŠããããã«å€ãã®æäœãè¡ãå¿ èŠããããŸããã å€ãUIKitã§äžéšã®UIViewã®ãµã€ãºãå€æŽããå Žå-ããã«é¢é£ããä»ã®ãã¹ãŠã®UIViewã®äœçœ®ãåèšç®ããå¿ èŠãããã座æšãæäœããããã®éèªæãªã³ãŒãã«ã€ãªããå ŽåããããŸããããã®ãã¥ãŒã¯ãã¥ãŒãã20ãã¯ã»ã«ãã€ãŸãããé«ãã 30-ããã¯äœã-ãµã€ãºãã©ã®ããã«å€æŽããŠãããã®æ¯çã¯å€æŽãããŸããã
ComponentKitã¯ããã®ç¹ã§ããã«åé²ããŸãã-æšæºãšã³ãã£ãã£åãã®ããªãå€æ°ã®ãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã
- CollectionView / TableViewã䜿çšãã䟿å©ãªäœæ¥ãããã¯ãéåžžã®é åã®äœæ¥ãšåæ§ã«ãåºå®ã®dataSourceã䜿çšããã®ã§ã¯ãªããããŒãã«ãåããäœæ¥ãå¿ èŠãšããŸããã ïŒããã®ãããªã€ã³ããã¯ã¹ãã¹ã§ã¯ãªãããã®ãããªã»ã«ããããŸãã-ããã®ãããªã»ã«ãããŒãã«ã®ãã®ãããªå Žæã«çœ®ããïŒã ç°çš®ããŒã¿ãå«ãããŒãã«ãæ§ç¯ããå¿ èŠãããå ŽåïŒããšãã°ãäžåç£ãè³è²žããããã®ã¢ããªã±ãŒã·ã§ã³ã§äœå® ã®èª¬æããŒãžãæ§ç¯ãã-1ã€ã®ããŒãžã«ãããŸããŸãªåäœãè¡ãå€æ°ã®ç°ãªãã¿ã€ãã®ã»ã«ãããå ŽåïŒ
- èŠçŽ ã®ç¶æ ã¯ãè€æ°ã®æåãäžåºŠã«èª¬æããæ©äŒãæäŸããŸããèŠçŽ ã¯ãã³ã³ããã¹ãã«å¿ããŠãç°ãªã.xibãç°ãªãã¯ã©ã¹ãªã©ã«é åžããå¿ èŠãªããããã䜿çšã§ããŸã
- ããŸããŸãªããã€ã¹ã®è§£å床ãšç»é¢ã®åãã«çããé©ããèŠçŽ ã®ã³ã¬ã¯ã·ã§ã³ã宣èšçã«èšè¿°ããããšãã§ãã䟿å©ãªé©å¿åã¬ã€ã¢ãŠãïŒããã¯ãã¹ãŠAutoLayoutã§å®è¡ã§ããŸããã宣èšã¯ããæè»ã§ãïŒ
é·æ
- ã³ãŒãå ã®ã€ã³ã¿ãŒãã§ã€ã¹ã®èª¬æããã ããç°¡æœã§é©å¿å¯èœãªåœ¢åŒã
- æšæºã³ã³ããŒãã³ãã®ã¹ããŒããœãªã¥ãŒã·ã§ã³
çæ
- ã³ã³ããŒãã³ãã®èæ§-å€ãã®ã¢ãã¡ãŒã·ã§ã³ã§å€æŽå¯èœãªã€ã³ã¿ãŒãã§ãŒã¹ãäœæãããå Žåãããã¯ããªãã®éžæã§ã¯ãããŸããã
- ãã¬ãŒã ã¯ãŒã¯ã®ç®æ°ããã¯ãã¡ããçžå¯Ÿçãªæ¬ é¥ã§ããããã®äœ¿çšã«é¢ããåé¡ãçºçããå¯èœæ§ããããŸãã
第3ç« ãã¹ã
ãã¹ãã«ã€ããŠã¯ãå€ãã®ç°ãªããšèšããŸãã è¯ãé¢ãšæªãé¢ã 誰ãããã¹ãã¯éã®åŒŸäžžã§ãããšèšããŸãã誰ãããããšã¯éã«æéãããããŸãããç§ã®æèŠã§ã¯-ããã¯ããã°ã©ããŒã®éçºã«ãããéèŠãªæ®µéã®1ã€ã§ãããããªãããããå€æããåã«ãããã¯çµ¶å¯Ÿã«å¿ èŠã§ãééããŸãã
ãŸãããã®æè¿ã®èšäºãèªãããšããå§ãããŸã-ããã¯ãiOSéçºè ãå©çšã§ããããŒã«ã®è¡šé¢çã§ãããªããå¿«é©ãªæŠèŠãæäŸããŸãã
çå£ã«èšãã°ãTDDã¯ããããéçºè ãšããŠã®ç§ã«ãšã£ãŠæã圱é¿åã®ããæŠå¿µã§ãã ãããŠéèŠãªããšã¯ãèªåãã¹ãã«ããååž°ãåé¿ããã³ãŒããããéãèšè¿°ã§ããããã«ããå ããå€æŽã«ã€ããŠå¿é ããå¿ èŠããªããªãããšã§ãã èªåãã¹ãã®äž»ãªå©ç¹ã¯ããã¹ãŠã®ã³ãŒãããã¹ãã§ããããã§ã¯ãªãããšã§ãã ãã¹ãã®ãããã§ã DRYãSOLIDãªã©ã®ç¥èªãæå³ããªããŸãã
æåŸ
ãªããžããªã®ããŒãžãšãã®èŠªãªããžããªã§è©³çŽ°ãèªãããšãã§ããŸã ã ååãªæ°ã®äœ¿çšäŸããããŸã-䜿çšãéå§ããã®ã«ååã§ãã
ã³ãŒãå ã®å ŽåïŒ
1.å€ãã®æé»çãªäŸåé¢ä¿ããããŸãïŒããšãã°ãã·ã³ã°ã«ããŒã³ã䜿çšããŠããŸãã¯äœ¿çšããã«ãã«ããŸãïŒããããã®äŸåé¢ä¿ããã¹ãŠæºããå¿ èŠãããããããã®ã³ãŒãã®ãã¹ãã¯éåžžã«å°é£ã§ãã ãŸããã¢ããªã±ãŒã·ã§ã³éçºã®èŠ³ç¹ããããããã®åãæé»ã®äŸåé¢ä¿ã®ã³ãŒãã®å€æŽã¯ãã³ãŒãå ã®æªç¥ã®æ°ã®å Žæã«æªç¥ã®æ¹æ³ã§åœ±é¿ãäžããŸãã ééããªãæªãã
2.ã³ãŒãã«éã¹ããŒãã¬ã¹ãªã³ã¯ãããã«ããå Žåãç¶æ ã®å¯èœãªãã¹ãŠã®çµã¿åããã§ã¢ãžã¥ãŒã«ã®ãã³ãã«å šäœããã¹ãããå¿ èŠãããããããã®ã³ãŒãã¯ãã¹ããå°é£ã§ãïŒã€ãŸãããã¹ãã±ãŒã¹ã®æ°ãææ°é¢æ°çã«å¢å ããŸãïŒã ãŸããã¢ããªã±ãŒã·ã§ã³ã®éçºã®èŠ³ç¹ããã¯ãç¶æ ã®åçµã¿åããã«äœããã®çš®é¡ã®ãã°ãååšããå¯èœæ§ããããæ¥ç¶ãããã¢ãžã¥ãŒã«ãæåŸ ããç¶æ ã«ãªããªããªã¹ã¯ãéåžžã«é«ããªããŸãã ãŸããã³ãŒãã«è¿œå ãããã®ã¯ãã¹ãŠéåžžã«é«ãäŸ¡æ Œã§ãã
3.ã³ãŒããDRYã§ãªãå Žåãç¹°ãè¿ãããã³ãŒãã®ããããã«å¯ŸããŠãã¹ããäœæããå¿ èŠããããäœæ¥éãå¢å ããŸãã ãŸããã¢ããªã±ãŒã·ã§ã³éçºã®èŠ³ç¹ããèŠããšãç¹°ãè¿ãã³ãŒãã®å¥å šæ§ãç¶æããè€éãã¯ãç¹°ãè¿ãåæ°ã«æ¯äŸããŸãã
ãããŠãã¯ããã«ã
ãããã£ãŠããã¹ãã³ãŒãèªäœããããµããŒããããããèªäœãããã·ã³ãã«ã§ãå€æŽã容æã§ããããšãããããŸãã ãããŠãäžè¬çã«ãããã¯ããèªäœã§ãã¬ãŒã¯ã¹ã«ãŒãä¿åããŸãã
ãããŠãããªãã®ã³ãŒãããã¹ãããããã®æè¯ã®æ¹æ³-ç§ãã¡ã¯ãã¹ãããŠããŸã-ãã¹ãã§ãããã«ããŒããããšã§ãã ç§ãæéããããŠæ£ããç解ããã°ãã»ãšãã©ã®ãã¹ãã®å¿ èŠæ§ã¯ãªããªããŸãããªããªããããªãã¯ãã§ã«ãã¹ãã³ãŒããæžãç¿æ £ããããŸããããã®æéã«å°éããå¿ èŠãããããã§ãã
ãã®ãããSpecta / Expectaãã³ãã«ã¯ã BDDã®ã¹ã¿ã€ã«ã§ãã¹ããèšè¿°ããããã®ãã¬ãŒã ã¯ãŒã¯ã§ãã
é·æ
- BDDã¢ãããŒãèªäœã¯ããã¹ãã³ãŒããšãã¹ãã察å¿ããä»æ§ã®äž¡æ¹ã1ã€ã®ãœãŒã¹ã«æã£ãŠãããšããç¹ã§åªããŠããŸãã ããã«åºã¥ããŠãITã¹ãã·ã£ãªã¹ãã ãã§ãªããQAã¹ãã·ã£ãªã¹ããšããžãã¹åŽã®é¡§å®¢ã®äž¡æ¹ãšè°è«ã§ããããã¥ã¡ã³ããçæããããšãã§ããŸãã
- ãã¬ãŒã ã¯ãŒã¯ã¯ã·ã³ãã«ã§ãšã¬ã¬ã³ãã§ããããã«ããããã¹ããèªã¿ããããããã¹ãããµããŒããããªã¹ã¯ãæžããããšãã§ããŸãïŒãã¹ãããã¹ãããå¿ èŠããªããªããŸãïŒã
çæ
- å®éãå®éã®ã¢ããªã±ãŒã·ã§ã³ããã¹ããããšãã¯ãã¬ãŒãã«ã¬ãŒãããããŸãããã®ãã¹ãŠã®ã¬ãŒããå®è¡ããå¿ èŠããããŸãã éåæããŒã¿ããŒã¹ã®ãã¹ããUIã®ãã¹ããããã³äžè¬çã«éåæã®ãã¹ãã«ã¯ãçå£ãªæ€èšãšçèãå¿ èŠã§ãã
- äžæçãªçæã§ããããã®ããŒã«ã®Xcodeãšã®çµ±åã¯æè¿äžå®å®ã«ãªã£ãŠããŸã
OCMock
詳现ã«ã€ããŠã¯ãã¡ããã芧ãã ãã ã
æ®å¿µãªããããã¹ãæã«ãã³ãŒããå€§å¹ ã«è€éåããããšãªããå€éšããã³æé»çãªã¢ãžã¥ãŒã«ã®äŸåé¢ä¿ãå®å šã«æé€ããããšã¯åžžã«å¯èœãšã¯éããŸããã ãããŠãããã§OCMockãå©ãã«ãªããŸã-å€éšãªããžã§ã¯ãïŒã·ã¹ãã ãã¬ãŒã ã¯ãŒã¯ãå«ãïŒã®åäœããšãã¥ã¬ãŒããããã¹ãŠã®å€éšã®åœ±é¿ïŒãããã¯ãŒã¯æ¥ç¶é床ãäºæããªããšã©ãŒïŒããã¢ãžã¥ãŒã«ãéé¢ããä¿èšŒãããã¯ãªãŒã³ãªã³ã³ããã¹ãã§äœæ¥ã§ããŸãïŒãµãŒããŒã¯ãããè¿ããŸãã , , , , NSUserDefaults , , , eïŒã
ãã®ããŒã«ã¯ãããµã³ãããã¯ã¹ãã®èŠ³ç¹ããããã«èããããšãåŠç¿ããSOLIDã®ååããšã³ã¿ãŒãã©ã€ãºã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ã«å®å šã«åŸãããšã¯ã§ããŸãããããã«ããããå®å šã«ã¯ãªãŒã³ãªã³ãŒãããšãåçŽãªã³ãŒããã®ã©ã¡ããéžæããããéžæã§ããŸãã
é·æ
- å€éšäŸåé¢ä¿ã®ããã¢ãžã¥ãŒã«ããã¹ãããããã»ã¹ãå€§å¹ ã«ç°¡çŽ å
è¡ã®éæ³
habrazhitel- 1101_debianã® 1ã€ã«ãã£ãŠéçºããããã¬ãŒã ã¯ãŒã¯ã«ã€ããŠã¯ããã¡ããã芧ãã ããã
ããããããã®ãã¬ãŒã ã¯ãŒã¯ããã¹ãã®ãããã¯ã®æšªã«èšèŒããããšæããŸãããã¹ããã¬ãŒã ãã©ã®ããã«èšè¿°ããããšãã質åã«çããã®ã«åœ¹ç«ã€ããã§ãã
ãã®èšäºã§ã¯ãæé»ã®äŸåé¢ä¿ãªã©ã®æãããããšã«ã€ããŠç¹°ãè¿ãæžããŠããŸããããããŠãããããåãé€ãããã®ç¬¬äºã®æ¹æ³ïŒæåã¯å¥åŠãªããšã«éçºããã¢ãžã¥ãŒã«ã®å šãŠããåé€ããããšãã§ããäŸåé¢ä¿ã®ããç解ããããã®ã³ãŒãã§ææ ®æ·±ãå€èŠ³ã§ã- ãå¹æçãªæ¹æ³ãããïŒã§äŸåæ§ã®æ³šå ¥ã® -ã€ãŸãããã¹ãŠã®æé»çãªäŸåæ§ãæ瀺çã«ããå¿ èŠããããŸãã
èŠããã«ãæé»çãªäŸåé¢ä¿ãåãé€ãããã«ãã¢ãžã¥ãŒã«ãå®å šã«ç¬ç«ãããã¹ãå¯èœã«ããåæ§ã«éèŠãªã®ã¯åå©çšå¯èœã«ããããšã§ããèšãæããã°ã.hãã¡ã€ã«ã¯ããã®ã¢ãžã¥ãŒã«ãåäœããããã«æ£ç¢ºã«äœ¿çšãããã®ãå®å šã«ç解ããã®ã«ååã§ãªããã°ãªããŸããããŸãããªããžã§ã¯ãã®ãã¹ããå€§å¹ ã«ä¿é²ããŸãïŒã¢ãžã¥ãŒã«ãæ©èœããããã«å¿ èŠãªã¢ãžã¥ãŒã«ã®ãªã¹ããç¥ã£ãŠããããšãä¿èšŒãããŠãããOCMockãŸãã¯ãã®ä»ã®ã¢ã¯ã»ã¹å¯èœãªæ¹æ³ã䜿çšããŠãããããã¹ãŠæ¿¡ããããšãã§ããŸãïŒã第äºã«ãããã¯ç§ãã¡ã«è³ªåã«ã€ããŠèããããäžã€ã®çç±ãäžããŸãïŒããããããã®ã¯ã©ã¹ã¯å®è¡ãããŠããã³ãŒãã«ã€ããŠããŸãã«ãå€ãç¥ã£ãŠããŸããïŒå€åãããããã€ãã«åããŸããïŒãŸãã¯ããããã®äŸåé¢ä¿ãåå¥ã®ã¢ãžã¥ãŒã«ã«è«ççã«ã°ã«ãŒãåããæ¹æ³ããããŸããïŒã
é·æ
- , -. , , 4-5 .
- - â , , .
4.
mogenerator
ã·ã³ãã«ãªããããæ¥åžžã®éçºã«ãããŠéåžžã«äŸ¿å©ãªããŒã«ã§ãæœè±¡ããŒã¿ããŒã¹ã¢ãã«ãšã³ãŒãã§ã®è¡šçŸãšã®æ¥ç¶ã容æã«ããŸãã詳现ã«ã€ããŠã¯ããã¡ããã芧ãã ãããèŠããã«ãã¢ãã«ã®æŽæ°ãã«ã¹ã¿ã ããžãã¯ã«åœ±é¿ãäžããªãããã«ãã¢ãã«ã®æŽæ°ãæãç°¡åã§ç°¡åãªæ¹æ³ã§ã¢ãã«ãæäœããããã®ã³ãŒããæŽçããã®ã«åœ¹ç«ã¡ãŸãã
ç§ã«ãšã£ãŠãã®ããŒã«ã®åºæ¬çãªå©ç¹ã¯ããããç§ã«ãšã£ãŠæåã®ããŒã«ã«ãªã£ãããšã§ããããã«ãããã©ã³ã¿ã€ã 以å€ã®èšå€§ãªã³ãŒãã®äžçãç°¡åã«çºèŠã§ããŸããããã°ã©ããŒïŒ
ã¿ã¹ã¯ã¯ããã®ããã®ããŒã«ã䜿çšããŠè§£æ±ºããå¿ èŠããããŸãããã¹ãŠã®Objective-Cã¿ã¹ã¯ã«æé©ãªèšèªã§ã¯ãªãããã¹ãŠã®ã¿ã¹ã¯ã«æé©ãªèšèªã§ã¯ãããŸãã-ã©ã³ã¿ã€ã ã¯é©åãªã©ã³ã¿ã€ã ã§ããããã«ããããžã§ã¯ãå ã§ç¥èãåäžã®ã³ããŒã§æ瀺ããå¿ èŠããããŸãïŒã³ãŒãèªäœã ãã§ãªããåºçŸ©ã®DRYïŒã
ã¢ãã«ãšãã®è¡šçŸã®å¯Ÿå¿ãæäœæ¥ã§ç£èŠããå¿ èŠãããã®ã¯ãªãã§ããïŒ
å®è¡æã«ããŒã¿ããŒã¹ãåããçç±-å±éåã«ããŒã¿ããŒã¹ãçæã§ããå Žå
åé¢ããã¥ã¡ã³ãã®ã³ããŒãè€æ°ããçç±-ã³ãŒãå ã®ã³ã¡ã³ãããçæã§ããå Žå
å€éšãµãŒãã¹ãšé£æºããçµ±åãã¹ãã®å Žåãã¹ã¯ãªããã䜿çšããŠã³ã³ããã¹ããæºåããããšãéåžžã«å¯èœã§ãïŒãã¹ããŠãŒã¶ãŒãäœæãããããã¡ã€ã«ãå ¥åããŸã...ïŒã
ãããŠãå€éšããŒã«ã«ãã£ãŠè§£æ±ºãããä»ã®å€ãã®å€ãã®ã¿ã¹ã¯ïŒãããã®1ã€ã«ã€ããŠã¯ããã®èšäºã®æåŸã§ããå°ã詳ãã説æããŸãïŒã
ç§ãmogeneratorã奜ããª2çªç®ã®åŽé¢ã¯ãçæãããã³ãŒããšèšè¿°ãããã³ãŒããäžèŽãããããã®ãšã¬ã¬ã³ããªã¢ãã«ã瀺ããããšã§ãããããŠæåŸã«ãã¢ãã«ãæäœããããã®ãã€ã©ãŒã³ãŒãã®éããããã«æžãããŸããã
é·æ
- .xcdatamodelã¢ãã«ãå€æŽããæ¹ãã¯ããã«å¿«é©ã«ãªããŸã
- ããŒã«ã¯é©åã«æ§æå¯èœã§ãããçæãããã³ãŒãããããžã§ã¯ãå ã§ã®é 眮ã«åœ±é¿ãäžããããšãã§ããŸããåæã«ã䜿çšãéå§ããã«ã¯ãæå°éã®èšå®ãå¿ èŠã§ã
ãã¡ã¹ãã¬ãŒã³
ãã¡ãã§è©³çŽ°ãèªãããšãã§ããŸãã
èŠããã«ãããã¯ãããžã§ã¯ãã®å¯èœãªéãç¶ç¶çãªé ä¿¡ãä¿é²ããããã«èšèšãããããŒã«ã®ã»ããã§ãã
次ã®ããšãã§ããŸãã
- ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ãã
- ãã«ãã®ã¢ããªã±ãŒã·ã§ã³èšå®ãå€æŽãã
- ã¹ã¯ãªãŒã³ã·ã§ãããæ®ã
- ãã¹ããå®è¡ãã
- ã«ç³è«æžãæåºãã
- ããã«é¢ãã䟿å©ãªéç¥ãéä¿¡ãã
ãªã©ãã¯ããã«
åã®ãã®ã¯ãå€éšããŒã«ã®äžçã«å ¥ãã®ã«åœ¹ç«ã¡ãŸããããŸãããã®ããŒã«ã¯ãïŒAppleScriptããããã·ã¥ãPythonãRubyã®ã¹ã¯ãªããèšèªã䜿çšããããšãæ€èšããŠãã ãã ïŒ ãããžã§ã¯ãã®ãã«ãã®ä»äºã«ãç§ã«ãšã£ãŠéåžžã«é·ãããã»ã¹ã ã£ãã®ã§ããã®ãã¹ãŠã®ã¹ãããã¯éåžžã«æçšã§éèŠã ãšæããŸããããã«ããã®ããŒã«ã¯DSLãªã©ã®èå³æ·±ããããã¯ãæèµ·ããŸãããã®ãããã¯ã¯éåžžã«è€éãªã®ã§ãç¬èªã®DSLãäœæããåã«ïŒãã®èšäºã®æåŸã®ã»ã¯ã·ã§ã³ã§ç°¡åã«èª¬æããŸãïŒããããã®æå³ãç解ããããã«äœ¿çšããæåäŸãèŠã€ããããšã匷ããå§ãããŸããFastLaneã¯ãDSLãéåžžã«éåžžã«å¥å šã§ããçç±ã®æãé¡èãªäŸã®1ã€ã§ãã
é·æ
- ã·ã³ãã«ã§äŸ¿å©ã§æ©èœçã
- ããç¥ãããŠããContinousé ä¿¡ãµãŒããŒïŒããšãã°ãJenkinsãªã©ïŒãšçµ±åããŸã
- ã¢ããªã±ãŒã·ã§ã³ããããã€ããã¹ããæºåããããªãè€éãªã¹ã¯ãªãããäœæã§ããŸãããããŠãããã«ã€ããŠããªãã«æžããŠãã ããïŒäŸãã°Slackã§ïŒ
çæ
- æ€åºãããŸãããæ¬åœã«äŸ¿å©ãªããŒã«ããã
YACC / LEX
ãããŠæåŸã«ããã®çŽ ââæŽãããã«ããã«ãDSLã®äžçã§ã®éç«åšããããŠç¬èªã®èšèªãäœæããããã®æã匷åãªããŒã«ã®1ã€ã§ããããã«ã€ããŠã¯å€ãã®å Žæã§èªãããšãã§ããŸãããç¹ã«ãããã«é¢ããèšäºãããã€ããããŸãã
ãã®ããŒã«ã¯éåžžã«è€éã§ãããé©çšç¯å²ãé©ãã»ã©åºãããããããã«ç²Ÿéããããšããå§ãããŸãã
- â , DSL -, JSON/XML/⊠.
- , , , ( - , -, - -.)
- DSL - ( ) . ( YACC/LEX â ObjC Swift Ruby ( DSL â , ))
äžè¬ã«ããããé©ããŠããã¿ã¹ã¯ã®ç¯å²ã¯èšå€§ã§ãã
é·æ
- èšèªã®ã»ãã³ãã£ã¯ã¹ãèšè¿°ããããã®éåžžã«äŸ¿å©ãªåœ¢åŒã
- éåžžã«é«ãã©ã³ã¿ã€ã å®è¡é床ïŒCèšèªããŒãµãŒã³ãŒãã¯èšèªè¡šèšããçæãããéåžžã«ç°¡æœãªASTãçæããŸãïŒ
- éåžžã«åºãç¯å²-ããã¯æã¿ã§ãããã®èšèªã§ã¯ãæ¬æ Œçãªããã°ã©ãã³ã°èšèªã®æ¬æ Œçãªã€ã³ã¿ããªã¿ãæžãããšãã§ããŸã
çæ
- ãšã³ããªãŒã®éåžžã«é«ããããå€-äœãéèŠãªãã®ãæžãã«ã¯ãè³ãæ¿ããå£ãå¿ èŠããããåããŠé·ãæéãããããŸãã
- ãã®ããšãã©ã³ã¿ã€ã ã§äœ¿çšããå Žåãã¡ã¢ãªç®¡çã¯ãã¹ãŠã®è² æ ãè² ããŸãã
çµè«ã®ä»£ããã«
ãã¡ãããäžæ¹ã§ã¯ãŸã éåžžã«éèŠã§äŸ¿å©ãªããšã¯ãããããããŸãããèšåããŠããªãïŒãŸãã¯ç¥ããŸããããç§ã«æšèŠããŠãããã°ãšãŠãæè¬ããŸãïŒããäžæ¹ã§ã詳现ã«åæãããŠããªããå€çš®å€æ§ãªïŒæãããïŒïŒç°çš®ã®ãããªã¢ã«ããããããããã®ãã¹ãŠã®ãããžã§ã¯ãã«ã¯çŽ æŽãããããã¥ã¡ã³ãããããŸããç§ã¯ããªãã®è³ªåã«åãã§çããŸããããªãã®æèŠã®äžã«ããã«è©³çŽ°ãªèª¬æãå¿ èŠãªå Žåã¯ãããã«é¢ããç§ã®çµéšãåãã§èª¬æããŸãã
ãã®å Žæãèªãã§ãããŠããããšãããŸãã